多步骤表单
在一个表单中按顺序运行多个 playbook 或模板
multistep自 7 起已弃用,并将在 8 中移除:请改用工作流。multistep 能做的事,工作流 都能做,而且还支持条件、每个节点各自的值、审批节点以及并行运行的分支。
Deprecated since 7, removed in 8: use workflow. A workflow does all a multistep does - its nodes run on any runner (runner:), with a condition (if_extra_var, as ifExtraVar) and their own values (extra_vars_key, as key), with approval nodes - and runs branches side by side. Until 8 a multistep runs as it did, and the log says it is deprecated.
Executes multiple jobs sequentially.
Each step can be a different type (ansible, awx, semaphore, rundeck, jenkins …).
Multistep form
- name: Create VM
roles: # reference to roles defined earlier
- vmware
description: Create and start a vm
image: https://picsum.photos/64 # an image url (can be base64)
categories: # reference to categories defined earlier
- Demo
- Vmware
tileClass: bg-danger # a bootstrap background color style (https://getbootstrap.com/)
type: multistep # type is awx, ansible or multistep
steps:
- type: awx
name: Create vm
template: Create VM
key: vmInfo
- type: awx
name: Start vm
template: Start VM
key: vmInfo
- type: ansible
name: Email results
playbook: email.yaml
always: true # always run this task, even if others failed
fieldGroupClasses: # give fieldgroups a custom background
groupname1: bg-info-subtle
groupname2: bg-success-subtle
fields: # list of field objects
- name: vm_name
type: text表单级属性
多步骤表单在一个表单级属性中定义其所有步骤:
| 属性 | 说明 |
|---|---|
| steps array / 必填 | Multistep steps Deprecated since 7, removed in 8, with the multistep type: a workflow’s nodes do what steps do. |
除 steps 之外,多步骤表单还接受以下表单级属性,它们记录在 Ansible 表单页面中: roles(必填), categories, showHelp, icon, iconColor, iconSize, overlayIcon, overlayIconTransform, overlayIconColor, overlayIconCircle, overlayIconText, overlayIconTextPosition, overlayIconTextColor, image, tileClass, fieldGroupClasses, wizard, userExtravars, abortable, allowRelaunch, allowStoredJobSharing, launchValidation, enableForChat, order, approval, notifications, onSubmit, onSuccess, onFailure, onAbort, onFinish.
步骤属性
Each step is a new form destination. And steps are executed sequentially.
Use specific properties like continue, always and ifExtraVar to control the flow of a multistep form.
When a step has type: ansible, all ansible-specific form properties apply to that step (e.g. playbook, playbookSubPath, ansibleCredentials, vaultCredentials, inventory, check, diff, tags, varsFiles, approval, notifications, …).
When a step has type: awx, the awx-specific form properties apply to that step (e.g. template, job, awx, awxCredentials, inventory, check, diff, tags, approval, notifications, …), except executionEnvironment, instanceGroups and scm_branch: a step does not accept them.
| 属性 | 说明 |
|---|---|
| basic | |
| name string / 必填 | The name of the form
The name of the step. Used for logging and visualization. |
| type string | Step type
Every step runs an Ansible playbook ( 选项:
示例: 1) Run AWX Template Helloworld 2) Run Ansible playbook |
| workflow | |
| key string | Extravar key
AnsibleForms can model the extravars into objects using the formfield 示例: 1) Resize volume |
| ifExtraVar extravar reference | Run step if ...
In a mulitstep form, by default, AnsibleForms will try to run every step sequentially one after the other. 示例: 1) Run step based on checkbox |
| continue boolean | Continue on fail
In a mulitstep form, by default, if 1 step fails, the multistep is stopped. However, if you want to continue to the next step, even if the current step failed, use this attribute and set it to true and the multistep will goto the next step. If this happens the status becomes ‘partially success’. 默认值: false 示例: 1) |
| always boolean | Always run
In a mulitstep form, by default, if 1 step fails, the multistep is stopped. However, if you always want to run a certain step, even if a step failed somewhere, use this attribute and set it to true and the specific step will always run. 默认值: false 示例: 1) |
示例
多步骤表单按顺序运行多个作业,每个步骤运行自己的 playbook 或 AWX 模板。所有步骤共享表单的字段:默认情况下,每个步骤都会收到完整的 extravars,而步骤的 key 会把它限制为其中的那一部分。
创建并配置服务器
每个步骤收到 extravars 中属于自己的部分:一个 AWX 步骤创建服务器,一个 Ansible 步骤配置其网络,最后一个步骤总是发送报告:
name: Server Provisioning
type: multistep
roles:
- default
categories:
- Setup
steps:
- name: Create server
type: awx
template: Create VM
key: server # receives only the `server` part of the extravars
- name: Configure network
type: ansible
playbook: configure_network.yml
key: network # receives only the `network` part of the extravars
- name: Send report
type: ansible
playbook: email.yml
always: true # runs even when an earlier step failed
fields:
- name: server_name
type: text
model: server.name
- name: environment
type: enum
values:
- dev
- prod
model: server.environment
- name: ip_address
type: text
model: network.ip
- name: gateway
type: text
model: network.gateway