Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan pernyataan bersyarat di runbook
Secara default, langkah-langkah yang Anda tentukan di bagian mainSteps
runbook yang dijalankan secara berurutan. Setelah satu tindakan selesai, tindakan berikutnya ditentukan dalam mainSteps
bagian dimulai. Selain itu, jika tindakan gagal dijalankan, seluruh otomatisasi gagal (secara default). Anda dapat menggunakan aws:branch
tindakan otomasi dan opsi runbook yang dijelaskan di bagian ini untuk membuat otomatisasi yang berkinerja Percabangan bersyarat. Buat otomatisasi yang melompat ke langkah yang berbeda setelah mengevaluasi pilihan yang berbeda atau yang secara dinamis menanggapi perubahan ketika langkah selesai. Berikut adalah daftar opsi yang dapat Anda gunakan untuk membuat otomatisasi dinamis:
-
aws:branch
: Tindakan ini mengizinkan Anda membuat otomatisasi dinamis yang mengevaluasi pilihan yang berbeda dalam satu langkah dan kemudian melompat ke langkah di runbook yang berbeda berdasarkan hasil evaluasi tersebut. -
nextStep
: Opsi ini menentukan langkah otomatisasi mana yang harus diproses setelah berhasil menyelesaikan langkah. -
isEnd
: Opsi ini menghentikan otomatisasi pada akhir langkah tertentu. Nilai default opsi ini adalah palsu. -
isCritical
: Opsi ini menunjukkan langkah sebagai kepentingan untuk berhasil menyelesaikan otomatisasi. Jika langkah dengan penunjukan ini gagal, maka Otomatisasi melaporkan status akhir otomatisasi sebagaiFailed
. Nilai default opsi ini adalahtrue
. -
onFailure
: Opsi ini menunjukkan apakah otomatisasi harus berhenti, melanjutkan, atau meneruskan ke langkah kegagalan yang berbeda. Nilai default untuk opsi ini adalah batalkan.
Bagian berikut menjelaskan aws:branch
tindakan otomatisi. Untuk informasi lebih lanjut tentang pilihan nextStep
, isEnd
, isCritical
, dan onFailure
, lihat Contoh aws:branch runbook.
Bekerja dengan aws:branch
tindakan
Tindakan aws:branch
tersebut menawarkan opsi percabangan bersyarat yang paling dinamis untuk otomatisasi. Seperti disebutkan sebelumnya, tindakan ini mengizinkan otomatisasi Anda untuk mengevaluasi beberapa kondisi dalam satu langkah dan kemudian melompat ke langkah baru berdasarkan hasil evaluasi tersebut. Tindakan aws:branch
berfungsi seperti IF-ELIF-ELSE
pernyataan dalam pemrograman.
Berikut adalah contoh YAML dari aws:branch
langkah.
- name: ChooseOSforCommands action: aws:branch inputs: Choices: - NextStep: runPowerShellCommand Variable: "{{GetInstance.platform}}" StringEquals: Windows - NextStep: runShellCommand Variable: "{{GetInstance.platform}}" StringEquals: Linux Default: PostProcessing
Bila Anda menentukan aws:branch
tindakan untuk sebuah langkah, Anda menentukan Choices
bahwa otomatisasi harus mengevaluasi. Otomatisasi dapat mengevaluasi Choices
berdasarkan nilai parameter yang Anda tentukan dalam Parameters
bagian runbook tersebut. Otomatisasi juga dapat mengevaluasi Choices
berdasarkan output dari langkah sebelumnya.
Otomatisasi mengevaluasi setiap pilihan dengan menggunakan ekspresi Boolean. Jika evaluasi menentukan bahwa pilihan pertama adalah true
, maka otomatisasi melompat ke langkah yang ditetapkan di pilihan tersebut. Jika evaluasi menentukan bahwa pilihan pertama adalah false
, maka otomatisasi mengevaluasi pilihan berikutnya. Jika langkah Anda mencakup tiga atau lebih Choices
, maka otomatisasi menilai setiap pilihan dalam urutan yang tepat sehingga otomatisasi menilai pilihan yang true
. Selanjutnya, otomatisasi melompat ke langkah yang ditetapkan untuk pilihan true
tersebut.
Jika tidak ada pilihan Choices
yang true
, otomatisasi memeriksa untuk melihat apakah langkah berisi Default
nilai. Nilai Default
menentukan langkah yang harus dilakukan otomatisasi jika tidak ada pilihan yang true
. Jika tidak ada Default
nilai yang ditentukan untuk langkah, otomatisasi akan memproses langkah berikutnya dalam runbook.
Berikut adalah aws:branch
langkah dalam YAMAL bernama pilih OSfrom Parameter. Langkahnya mencakup dua Choices
: (NextStep: runWindowsCommand
) dan (NextStep: runLinuxCommand
). Otomatisasi mengevaluasi ini Choices
untuk menentukan perintah mana yang dijalankan untuk sistem operasi yang sesuai. Variable
untuk setiap pilihan menggunakan {{OSName}}
, yang merupakan parameter yang ditentukan oleh penulis runbook Parameters
di bagian runbook.
mainSteps: - name: chooseOSfromParameter action: aws:branch inputs: Choices: - NextStep: runWindowsCommand Variable: "{{OSName}}" StringEquals: Windows - NextStep: runLinuxCommand Variable: "{{OSName}}" StringEquals: Linux
Berikut adalah aws:branch
langkah dalam YAMAL bernama pilih OSfrom Output. Langkahnya mencakup dua Choices
: (NextStep: runPowerShellCommand
) dan (NextStep: runShellCommand
). Otomatisasi mengevaluasi ini Choices
untuk menentukan perintah mana yang dijalankan untuk sistem operasi yang sesuai. Variable
untuk setiap pilihan menggunakan {{GetInstance.platform}}
, yang merupakan output dari langkah sebelumnya di runbook. Contoh ini juga mencakup opsi yang disebut Default
. Jika otomatisasi mengevaluasi keduanya Choices
, dan tidak ada pilihan true
, maka otomatisasi melompat ke langkah yang bernama PostProcessing
.
mainSteps: - name: chooseOSfromOutput action: aws:branch inputs: Choices: - NextStep: runPowerShellCommand Variable: "{{GetInstance.platform}}" StringEquals: Windows - NextStep: runShellCommand Variable: "{{GetInstance.platform}}" StringEquals: Linux Default: PostProcessing
Membuat aws:branch
langkah dalam runbook
Saat Anda membuat aws:branch
langkah dalam runbook, Anda menentukan Choices
otomatisasi harus mengevaluasi untuk menentukan langkah mana lagi yang harus dilalui otomatisasi. Seperti disebutkan sebelumnya, Choices
dievaluasi dengan menggunakan ekspresi Boolean. Setiap templat menyertakan menentukan opsi berikut:
-
NextStep: Langkah selanjutnya dalam runbook untuk memproses jika pilihan yang ditunjuk adalah
true
. -
Variabel: Tentukan nama parameter yang didefinisikan di
Parameters
bagian runbook, variabel yang didefinisikan diVariables
bagian, atau tentukan objek keluaran dari langkah sebelumnya.Tentukan nilai variabel dengan menggunakan formulir berikut.
Variable: "{{
variable name
}}"Tentukan nilai parameter dengan menggunakan formulir berikut.
Variable: "{{
parameter name
}}"Tentukan variabel objek output dengan menggunakan formulir berikut.
Variable: "{{
previousStepName.outputName
}}"catatan
Membuat variabel output dijelaskan secara lebih detail pada bagian berikutnya, Tentang membuat variabel output.
-
Operasi: Kriteria yang digunakan untuk mengevaluasi pilihan, seperti
StringEquals: Linux
. Tindakanaws:branch
tersebut mendukung operasi berikut:Operasi String
-
StringEquals
-
EqualsIgnoreCase
-
StartsWith
-
EndsWith
-
Berisi
Operasi numerik
-
NumericEquals
-
NumericGreater
-
NumericLesser
-
NumericGreaterOrEquals
-
NumericLesser
-
NumericLesserOrEquals
Operasi Boolean
-
BooleanEquals
penting
Ketika Anda membuat runbook, sistem memvalidasi setiap operasi di runbook. Jika operasi tidak didukung, sistem akan mengembalikan kesalahan saat Anda mencoba membuat runbook.
-
-
Default: Tentukan langkah mundur yang harus dilewati otomatisasi jika tidak ada
Choices
adalahtrue
.catatan
Jika Anda tidak ingin menentukan
Default
nilai, maka Anda dapat menentukanisEnd
pilihan. Jika tidak adaChoices
adalahtrue
dan tidak adaDefault
nilai yang ditentukan, maka otomatisasi berhenti di akhir langkah.
Gunakan template berikut untuk membantu Anda membangun aws:branch
langkah dalam runbook Anda. Ganti masing-masing example resource placeholder
dengan informasi Anda sendiri.
Tentang membuat variabel output
Untuk membuat aws:branch
pilihan yang mereferensikan output dari langkah sebelumnya, Anda perlu mengidentifikasi nama langkah sebelumnya dan namabidang output. Anda kemudian menggabungkan nama-nama langkah dan bidang dengan menggunakan format berikut.
Variable:
"{{
previousStepName.outputName
}}"
Sebagai contoh, langkah pertama dalam contoh berikut bernama GetInstance
. Dan kemudian, di bawah outputs
, terdapat sebuah bidang yang disebut platform
. Pada langkah kedua (ChooseOSforCommands
), penulis ingin mereferensikan output dari bidang platform sebagai variabel. Untuk membuat variabel, cukup gabungkan nama langkah (GetInstance) dan nama bidang output (platform) untuk membuatVariable:
"{{
.GetInstance.platform
}}"
mainSteps: -
Name: GetInstance
action: aws:executeAwsApi inputs: Service: ssm Api: DescribeInstanceInformation Filters: - Key: InstanceIds Values: ["{{ InstanceId }}"] outputs: - Name: myInstance Selector: "$.InstanceInformationList[0].InstanceId" Type: String -Name: platform
Selector: "$.InstanceInformationList[0].PlatformType" Type: String - name: ChooseOSforCommands action: aws:branch inputs: Choices: - NextStep: runPowerShellCommand Variable: "{{GetInstance.platform
}}" StringEquals: Windows - NextStep: runShellCommand Variable: "{{GetInstance.platform
}}" StringEquals: Linux Default: Sleep
Berikut adalah contoh yang menunjukkan bagaimana "Variable": "{{
describeInstance.Platform }}"
dibuat dari langkah sebelumnya dan output.
- name: describeInstance action: aws:executeAwsApi onFailure: Abort inputs: Service: ec2 Api: DescribeInstances InstanceIds: - "{{ InstanceId }}" outputs: - Name: Platform Selector: "$.Reservations[0].Instances[0].Platform" Type: String nextStep: branchOnInstancePlatform - name: branchOnInstancePlatform action: aws:branch inputs: Choices: - NextStep: runEC2RescueForWindows Variable: "{{ describeInstance.Platform }}" StringEquals: windows Default: runEC2RescueForLinux
Contoh aws:branch
runbook
Berikut adalah beberapa contoh runbook yang menggunakan aws:branch
.
Contoh 1: Menggunakan aws:branch
dengan variabel output untuk menjalankan perintah berdasarkan jenis sistem operasi
Pada langkah pertama contoh ini (GetInstance
), penulis runbook menggunakan aws:executeAwsApi
tindakan untuk memanggil ssm
DescribeInstanceInformation
Operasi API. Penulis menggunakan tindakan ini untuk menentukan jenis sistem operasi yang digunakan oleh sebuah contoh. Tindakan aws:executeAwsApi
tersebut mengeluarkan instans ID dan jenis platform.
Pada langkah kedua (ChooseOSforCommands
), penulis menggunakan aws:branch
tindakan dengan dua Choices
(NextStep: runPowerShellCommand
) dan (NextStep:
runShellCommand
). Otomatisasi mengevaluasi sistem operasi instans dengan menggunakan output dari langkah sebelumnya (Variable:
"{{GetInstance.platform}}"
). Otomatisasi melompat ke langkah untuk sistem operasi yang ditunjuk.
--- schemaVersion: '0.3' assumeRole: "{{AutomationAssumeRole}}" parameters: AutomationAssumeRole: default: "" type: String mainSteps: - name: GetInstance action: aws:executeAwsApi inputs: Service: ssm Api: DescribeInstanceInformation outputs: - Name: myInstance Selector: "$.InstanceInformationList[0].InstanceId" Type: String - Name: platform Selector: "$.InstanceInformationList[0].PlatformType" Type: String - name: ChooseOSforCommands action: aws:branch inputs: Choices: - NextStep: runPowerShellCommand Variable: "{{GetInstance.platform}}" StringEquals: Windows - NextStep: runShellCommand Variable: "{{GetInstance.platform}}" StringEquals: Linux Default: Sleep - name: runShellCommand action: aws:runCommand inputs: DocumentName: AWS-RunShellScript InstanceIds: - "{{GetInstance.myInstance}}" Parameters: commands: - ls isEnd: true - name: runPowerShellCommand action: aws:runCommand inputs: DocumentName: AWS-RunPowerShellScript InstanceIds: - "{{GetInstance.myInstance}}" Parameters: commands: - ls isEnd: true - name: Sleep action: aws:sleep inputs: Duration: PT3S
Contoh 2: Menggunakan aws:branch
dengan variabel parameter untuk menjalankan perintah berdasarkan jenis sistem operasi
Penulis runbook mendefinisikan beberapa pilihan parameter pada awal runbook di parameters
bagian. Satu parameter bernama OperatingSystemName
. Pada langkah pertama (ChooseOS
), penulis menggunakan aws:branch
tindakan dengan dua Choices
(NextStep:
runWindowsCommand
) dan (NextStep: runLinuxCommand
). Variabel untuk ini Choices
mereferensikan opsi parameter yang ditentukan dalam bagian parameter (Variable:
"{{OperatingSystemName}}"
). Ketika pengguna menjalankan runbook ini, mereka menentukan nilai pada saat waktu aktif untuk OperatingSystemName
. Otomatisasi menggunakan parameter waktu aktif selama Choices
evaluasi. Otomatisasi melanjutkan ke langkah untuk sistem operasi yang ditunjuk berdasarkan parameter waktu aktif yang ditentukan untuk OperatingSystemName
.
--- schemaVersion: '0.3' assumeRole: "{{AutomationAssumeRole}}" parameters: AutomationAssumeRole: default: "" type: String OperatingSystemName: type: String LinuxInstanceId: type: String WindowsInstanceId: type: String mainSteps: - name: ChooseOS action: aws:branch inputs: Choices: - NextStep: runWindowsCommand Variable: "{{OperatingSystemName}}" StringEquals: windows - NextStep: runLinuxCommand Variable: "{{OperatingSystemName}}" StringEquals: linux Default: Sleep - name: runLinuxCommand action: aws:runCommand inputs: DocumentName: "AWS-RunShellScript" InstanceIds: - "{{LinuxInstanceId}}" Parameters: commands: - ls isEnd: true - name: runWindowsCommand action: aws:runCommand inputs: DocumentName: "AWS-RunPowerShellScript" InstanceIds: - "{{WindowsInstanceId}}" Parameters: commands: - date isEnd: true - name: Sleep action: aws:sleep inputs: Duration: PT3S
Membuat otomatisasi percabangan yang kompleks dengan operator
Anda dapat membuat otomatisasi percabangan kompleks dengan menggunakan And
, Or
, dan Not
operator di aws:branch
langkah.
Operator 'Dan'
Gunakan And
operator ketika Anda ingin beberapa variabel menjadi true
untuk sebuah pilihan. Pada contoh berikut, pilihan pertama mengevaluasi apakah instans adalah running
dan menggunakanWindows
sistem operasi. Jika evaluasi kedua variabel ini benar, maka otomasi melompat ke runPowerShellCommand
langkah. Jika satu atau beberapa variabel tersebut false
, maka otomatisasi mengevaluasi variabel untuk pilihan kedua.
mainSteps: - name: switch2 action: aws:branch inputs: Choices: - And: - Variable: "{{GetInstance.pingStatus}}" StringEquals: running - Variable: "{{GetInstance.platform}}" StringEquals: Windows NextStep: runPowerShellCommand - And: - Variable: "{{GetInstance.pingStatus}}" StringEquals: running - Variable: "{{GetInstance.platform}}" StringEquals: Linux NextStep: runShellCommand Default: sleep3
Operator 'Atau'
Gunakan Or
operator ketika Anda ingin salah satu dari beberapa variabel menjadi benar untuk suatu pilihan. Pada contoh berikut, pilihan pertama mengevaluasi apakah string parameter adalah Windows
dan apakah output dari AWS Lambda langkah adalah benar. Jika evaluasi menentukan bahwa salah satu dari dua variabel ini benar, maka otomasi melompat ke RunPowerShellCommand
langkah. Jika kedua variabel tersebut salah, maka otomatisasi mengevaluasi variabel untuk pilihan kedua.
- Or: - Variable: "{{parameter1}}" StringEquals: Windows - Variable: "{{BooleanParam1}}" BooleanEquals: true NextStep: RunPowershellCommand - Or: - Variable: "{{parameter2}}" StringEquals: Linux - Variable: "{{BooleanParam2}}" BooleanEquals: true NextStep: RunShellScript
Operator 'Tidak'
Gunakan Not
operator ketika Anda ingin melompat ke langkah yang didefinisikan ketika variabel tidak benar. Pada contoh berikut, pilihan pertama mengevaluasi apakah string parameter adalah Not Linux
. Jika evaluasi menentukan bahwa itu adalah Linux, maka otomasi melompat ke sleep2
langkah. Jika evaluasi pilihan pertama menentukan bahwa itu adalah Linux, maka otomatisasi mengevaluasi pilihan berikutnya.
mainSteps: - name: switch action: aws:branch inputs: Choices: - NextStep: sleep2 Not: Variable: "{{testParam}}" StringEquals: Linux - NextStep: sleep1 Variable: "{{testParam}}" StringEquals: Windows Default: sleep3
Contoh cara menggunakan opsi bersyarat
Bagian ini mencakup contoh yang berbeda tentang cara menggunakan opsi dinamis dalam runbook. Setiap contoh di bagian ini memperluas runbook berikut. Runbook ini memiliki dua tindakan. Tindakan pertama bernama InstallMsiPackage
. Ini menggunakan aws:runCommand
tindakan untuk menginstal aplikasi pada Windows Server contoh. Tindakan kedua bernama TestInstall
. Menggunakan aws:invokeLambdaFunction
tindakan untuk melakukan tes aplikasi yang diinstal jika aplikasi berhasil diinstal. Langkah satu menentukan onFailure: Abort
. Ini berarti bahwa jika aplikasi tidak berhasil diinstal, otomatisasi berhenti sebelum langkah kedua.
Contoh 1: Runbook dengan dua tindakan linier
--- schemaVersion: '0.3' description: Install MSI package and run validation. assumeRole: "{{automationAssumeRole}}" parameters: automationAssumeRole: type: String description: "(Required) Assume role." packageName: type: String description: "(Required) MSI package to be installed." instanceIds: type: String description: "(Required) Comma separated list of instances." mainSteps: - name: InstallMsiPackage action: aws:runCommand maxAttempts: 2 onFailure: Abort inputs: InstanceIds: - "{{instanceIds}}" DocumentName: AWS-RunPowerShellScript Parameters: commands: - msiexec /i {{packageName}} - name: TestInstall action: aws:invokeLambdaFunction maxAttempts: 1 timeoutSeconds: 500 inputs: FunctionName: TestLambdaFunction ...
Membuat otomatisasi dinamis yang melompat ke langkah yang berbeda dengan menggunakan opsi onFailure
Contoh berikut menggunakan onFailure: step:
, step
name
nextStep
, dan isEnd
pilihan untuk membuat otomatisasi dinamis. Dengan contoh ini, jika InstallMsiPackage
tindakan gagal, maka otomatisasi melompat ke tindakan yang disebut PostFailure(onFailure:
step:PostFailure
) untuk menjalankan AWS Lambda fungsi untuk melakukan beberapa tindakan jika penginstalan gagal. Jika instalasi berhasil, maka otomatisasi melompat ke TestInstall action ()nextStep: TestInstall
. Kedua langkah TestInstall
dan PostFailure
menggunakan isEnd
pilihan (isEnd: true
) sehingga otomatisasi selesai ketika salah satu dari langkah tersebut selesai.
catatan
Menggunakan isEnd
pilihan di langkah terakhir mainSteps
bagian adalah opsional. Jika langkah terakhir tidak melompat ke langkah lain, maka otomatisasi berhenti setelah menjalankan tindakan di langkah terakhir.
Contoh 2: Otomatisasi dinamis yang melompat ke berbagai langkah
mainSteps - name: InstallMsiPackage action: aws:runCommand onFailure: step:PostFailure maxAttempts: 2 inputs: InstanceIds: - "{{instanceIds}}" DocumentName: AWS-RunPowerShellScript Parameters: commands: - msiexec /i {{packageName}} nextStep: TestInstall - name: TestInstall action: aws:invokeLambdaFunction maxAttempts: 1 timeoutSeconds: 500 inputs: FunctionName: TestLambdaFunction isEnd: true - name: PostFailure action: aws:invokeLambdaFunction maxAttempts: 1 timeoutSeconds: 500 inputs: FunctionName: PostFailureRecoveryLambdaFunction isEnd: true ...
catatan
Sebelum memproses runbook, sistem memverifikasi bahwa runbook tidak membuat perulangan tak terbatas. Jika perulangan tak terbatas terdeteksi, Otomatisasi mengembalikan kesalahan dan jejak lingkaran yang menunjukkan langkah mana yang membuat perulangan.
Membuat otomatisasi dinamis yang mendefinisikan langkah-langkah penting
Anda dapat menentukan bahwa langkah sangat penting untuk keberhasilan otomatisasi secara keseluruhan. Jika langkah kritis gagal, maka otomatisasi melaporkan status otomatisasi sebagai Failed
, bahkan jika satu langkah atau lebih berjalan dengan sukses. Dalam contoh berikut, pengguna mengidentifikasi VerifyDependencieslangkah jika InstallMsiPackagelangkah gagal (onFailure:
step:VerifyDependencies
). Pengguna menentukan bahwa InstallMsiPackage
langkah ini tidak penting (isCritical:
false
). Dalam contoh ini, jika aplikasi gagal untuk menginstal, Otomatisasi memproses VerifyDependencies
langkah untuk menentukan apakah satu dependensi atau lebih hilang, yang oleh karena itu menyebabkan penginstalan aplikasi gagal.
Contoh 3: Mendefinisikan langkah-langkah penting untuk otomatisasi
--- name: InstallMsiPackage action: aws:runCommand onFailure: step:VerifyDependencies isCritical: false maxAttempts: 2 inputs: InstanceIds: - "{{instanceIds}}" DocumentName: AWS-RunPowerShellScript Parameters: commands: - msiexec /i {{packageName}} nextStep: TestPackage ...