6.1 Workflow
以下にWorkflow定義と定義例を示します。Workflow定義では、ワークフロー全体の定義を行う部分と個々のアクティビティの定義を行う部分の大きく2つに分類されます。
ワークフローの詳細については「ワークフロー」と「ワークフローの設計」を参照してください。
ラベル | デフォルト値 | 必須 | 説明 | |||
---|---|---|---|---|---|---|
apiVersion: | 1.0 | Yes | APIバージョン | |||
kind: | Yes | ワークフローの際はworkflowを指定する | ||||
type: | No | ワークフローの際はresourceのみ指定可能 | ||||
name: | Yes | Workflow定義の内部名。本YAMLファイルのディレクトリ名を指定。 nameは英数字、“_”、“-”のみ使用可能。 |
||||
label: | Yes | YAMLファイルの表示名 | ||||
includes: | No | このYAMLファイルで利用する関連YAMLファイルを記載 | ||||
- kind: | Yes | 読み込むYAMLファイルの種類 | ||||
name: | Yes | 読み込むYAMLファイルの内部名 | ||||
description: | No | 詳細説明 | ||||
parameters: | No | ワークフローのパラメータ。 JSONスキーマで記述する。 |
||||
steps: | No | ワークフローのステップを定義。 タスクの進行状況を表示するために使用する。 |
||||
- name: | No | ステップ名 | ||||
label: | No | ステップの表示名 | ||||
description: | No | ステップの詳細説明 | ||||
(workflow model): | Yes | ワークフローを定義。 StackStormで定義できるWorkflow Model内容を記述 詳細は「(表)Workflow model」を参照 |
||||
(task model): | Yes | アクティビティを定義。 StackStormで定義できるTask Model内容を記述 詳細は「(表)Task model」を参照 |
||||
role: | No | 各アクティビティに対して、そのアクティビティを実行できるロールを定義する。 以下に記述例を示す。 例) tasks: mytask: action: core.ask role: “Service Desk Agent” |
||||
group: | No | 各アクティビティに対して、そのアクティビティを実行できるグループを定義する。指定されたグループが自動的にこのアクティビティにアサインされる。 | ||||
requirements: | No | このアクティビティに対する要求事項 | ||||
skillset: | No | このアクティビティを実行するのに必要なスキルセット。詳細については、「スキル管理」および「Skill、Skillset」を参照。 | ||||
ui: | No | このアクティビティを実行するときに表示するUI。 ワークフローの最初の画面を表示するステップでは、アクションタイプにcore.noopを指定する必要があります。それ以外のステップでは、アクションのタイプにcore.askを指定してください。 |
||||
step: | No | このアクティビティが所属するステップ名 | ||||
label: | No | 表示名 |
上記のworkflow modelにはStackStorm で定義されているworkflow modelと同じものを記述します。
StackStorm で定義されているworkflow modelについては以下に示します。
詳細についてはStackStorm公式ページを参照してください。
https://docs.stackstorm.com/3.7/orquesta/languages/orquesta.html#workflow-model
ラベル | 必須 | 説明 |
---|---|---|
version | Yes | ワークフロー定義形式のバージョン |
input | No | ワークフローに対する入力項目 |
vars | No | ワークフロー内で利用できる変数のリスト定義 |
tasks | Yes | ワークフローを構成する各アクティビティ定義 |
output | No | ワークフローから出力される変数のリスト定義 |
以下にTask model内で記述できる内容を示します。
Ops IではStackStormのTask modelと同じものを使用します。
詳細についてはStackStorm公式ページを参照してください。
https://docs.stackstorm.com/3.7/orquesta/languages/orquesta.html#task-model
ラベル | 必須 | 説明 | ||
---|---|---|---|---|
(taskname) | Yes | アクティビティごとに名前を付け、そのアクティビティごとに以下を定義 | ||
delay | No | アクティビティの実行を遅らせる秒数 | ||
join | No | 前段で並行して走っているアクティビティがある場合に、アクティビティの開始の仕様を定義。 例)前段のアクティビティの3/3が終了したら開始、前段のアクティビティの2/3が終了したら開始する。 |
||
action | No | アクティビティで何を実行するかを定義。 使用できるリストは「(表)actionのリスト(StackStorm部品)」「(表)actionのリスト(Ops I提供部品)」を参照 |
||
input | No | タスクで利用する入力のリスト | ||
retry | No | アクティビティの再試行の定義。 使用できる属性については「(表)retryで使用できる属性」を参照 |
||
next | No | 次に実行するアクティビティ。 使用できる属性については「(表)nextで使用できる属性」を参照 |
||
subflow | No | 指定した場合、サブフローとして実行する。 | ||
type | Yes | サブフローの種別。以下の値のどちらかを指定。 “static”: 起動元フローの保存時点でコンテキスト(スケジュール)を作成 “dynamic”: サブフローの実行時にコンテキスト(スケジュール)を作成 |
Ops Iユーザーは以下のactionを使用可能です。
Ops Iユーザーがactionを定義する際に使用可能なStackStorm部品を以下に示します。
詳細についてはStackStorm公式ページを参照してください。
https://docs.stackstorm.com/3.7/actions.html
Action | 説明 |
---|---|
core.ask | ユーザーからの入力を待機する。 |
core.http | HTTPリクエストを送る。 |
core.noop | 何もしない。 |
core.sendmail | メールを送付する。 |
core.local | ローカルホスト上で任意のLinuxコマンドを実行する。 |
vault.read | シークレットに登録しているシークレット情報を取得する。 |
Ops Iユーザーがactionを定義する際に使用可能なOps I提供部品を以下に示します。
詳細については「Ops I提供部品」を参照してください。
Action | 説明 |
---|---|
oi.fetch_access_token | Ops Iアクセストークンを取得する。 |
oi.insert_into_custom_table | カスタムテーブルに指定したレコードを挿入する。 |
oi_user. サブフローとして呼び出すワークフロー名 | サブフローとして呼び出すワークフロー名を指定する。 |
awx.run_job_template | 自動化のジョブテンプレートを実行する。 |
awx.get_job_result | 自動化のジョブの結果を取得する。 |
ラベル | 必須 | 説明 |
---|---|---|
when | No | retryを実行するための条件 |
count | Yes | 再試行する回数 |
delay | No | 再試行間の秒数 |
ラベル | 必須 | 説明 |
---|---|---|
when | No | 遷移するための条件 |
publish | No | コンテキストに公開する値 |
do | No | 条件が満たされているときに呼び出す次のタスク |
<定義例>
apiVersion: 1.0
kind: workflow
type: resource
name: create_vm_wf
label: VM貸出申請
description: デモ用VM貸出申請のワークフローです
includes:
- kind: ui
name: create_vm_ui_01
- kind: ui
name: create_vm_ui_02
- kind: ui
name: create_vm_ui_04
- kind: ui
name: create_vm_ui_05
version: 1.0
steps:
- name: create_vm_wf_01_step
label: 申請
description: 申請
- name: create_vm_wf_02_step
label: 申請内容の確認
description: 申請内容の確認
- name: create_vm_wf_03_step
label: VM生成
description: VM生成
- name: create_vm_wf_04_step
label: VM生成の確認
description: VM生成の確認
- name: create_vm_wf_05_step
label: 承認
description: 承認
tasks:
start:
action: core.noop
next:
- when: <% succeeded() %>
do: create_vm_wf_01
- when: <% failed() %>
do: fail
create_vm_wf_01:
label: 申請
action: core.noop
ui: create_vm_ui_01
step: create_vm_wf_01_step
next:
- when: <% succeeded() %>
do: create_vm_wf_02
- when: <% failed() %>
do: fail
create_vm_wf_02:
label: 申請内容の確認
action: core.ask
ui: create_vm_ui_02
step: create_vm_wf_02_step
role: ope-team
input:
schema:
type: object
properties:
oi_response:
type: string
required: true
next:
- when: <% result().response.oi_response = accept %>
do: create_vm_wf_03
- when: <% result().response.oi_response = reject %>
do: create_vm_wf_01
- when: <% failed() %>
do: fail
create_vm_wf_03:
label: VM生成
action: core.noop
step: create_vm_wf_03_step
next:
- when: <% succeeded() %>
do: create_vm_wf_04
- when: <% failed() %>
do: fail
(中省略)
create_vm_wf_05:
label: 承認
action: core.ask
ui: create_vm_ui_05
role: ope-team
step: create_vm_wf_05_step
input:
schema:
type: object
properties:
oi_response:
type: string
required: true
next:
- when: <% result().response.oi_response = accept %>
do: finish
- when: <% result().response.oi_response = reject %>
do: create_vm_wf_04
- when: <% failed() %>
do: fail
finish:
action: core.noop
似たセクションが続く箇所は(中省略)として省略しています。
節構成