如何在 Ansible 中的 2 个输入变量之间进行选择
How to choose between 2 input variables in Ansible
我有一个示例作业模板,它使用调查为 3 个变量提供用户输入。变量selection采用下拉列表格式,方便用户轻松制作selection。我在 tower_webhook_payload 中使用 dohost 来限制用于 运行 剧本的主机。
#job template A calling playbook A
- name: intl_dosomething
hosts: "{{ tower_webhook_payload.dohost }}"
remote_user: user00
max_fail_percentage: 1
serial: 1
tasks:
- name: intl_dosomething
script: ../script/dosomething.sh {{ region }} {{ country }} {{ state }}
- name: intl_doanotherthing
script: ../script/doanotherthing.sh {{ state }}
#EXTRA VARIABLES
region: Asia
country: India
state: Mumbai
tower_webhook_payload:
dohost: public_access_vms_*
但是,我现在有一个新的要求,即通过 webhook 执行相同的操作,以便更轻松地进行批处理,因此我使用 webhook 创建了另一个作业模板。
#job template B calling playbook B
- name: intl_dosomething
hosts: "{{ tower_webhook_payload.dohost }}"
remote_user: user00
max_fail_percentage: 1
serial: 1
tasks:
- name: intl_dosomething
script: ../script/dosomething.sh {{ tower_webhook_payload.region }} {{ tower_webhook_payload.country }} {{ tower_webhook_payload.state }}
- name: intl_doanotherthing
script: ../script/doanotherthing.sh {{ tower_webhook_payload.state }}
#EXTRA VARIABLES
tower_webhook_payload:
region: Asia
country: India
state: Mumbai
dohost: public_access_vms_*
如果作业来自 webhook,我是否可以合并 2 个作业 templates/playbooks 使用模板 B,如果来自用户输入则使用模板 A?
或者有没有办法根据是否定义了tower_webhook_payload.region来select?
当未定义 webhook 键时,使用 default()
过滤器回退到默认变量名。
- name: intl_dosomething
script: ../script/dosomething.sh {{ tower_webhook_payload.region | default(region) }} {{ tower_webhook_payload.country | default(country) }} {{ tower_webhook_payload.state | default(state) }}
- name: intl_doanotherthing
script: ../script/doanotherthing.sh {{ tower_webhook_payload.state | default(state) }}
我有一个示例作业模板,它使用调查为 3 个变量提供用户输入。变量selection采用下拉列表格式,方便用户轻松制作selection。我在 tower_webhook_payload 中使用 dohost 来限制用于 运行 剧本的主机。
#job template A calling playbook A
- name: intl_dosomething
hosts: "{{ tower_webhook_payload.dohost }}"
remote_user: user00
max_fail_percentage: 1
serial: 1
tasks:
- name: intl_dosomething
script: ../script/dosomething.sh {{ region }} {{ country }} {{ state }}
- name: intl_doanotherthing
script: ../script/doanotherthing.sh {{ state }}
#EXTRA VARIABLES
region: Asia
country: India
state: Mumbai
tower_webhook_payload:
dohost: public_access_vms_*
但是,我现在有一个新的要求,即通过 webhook 执行相同的操作,以便更轻松地进行批处理,因此我使用 webhook 创建了另一个作业模板。
#job template B calling playbook B
- name: intl_dosomething
hosts: "{{ tower_webhook_payload.dohost }}"
remote_user: user00
max_fail_percentage: 1
serial: 1
tasks:
- name: intl_dosomething
script: ../script/dosomething.sh {{ tower_webhook_payload.region }} {{ tower_webhook_payload.country }} {{ tower_webhook_payload.state }}
- name: intl_doanotherthing
script: ../script/doanotherthing.sh {{ tower_webhook_payload.state }}
#EXTRA VARIABLES
tower_webhook_payload:
region: Asia
country: India
state: Mumbai
dohost: public_access_vms_*
如果作业来自 webhook,我是否可以合并 2 个作业 templates/playbooks 使用模板 B,如果来自用户输入则使用模板 A?
或者有没有办法根据是否定义了tower_webhook_payload.region来select?
当未定义 webhook 键时,使用 default()
过滤器回退到默认变量名。
- name: intl_dosomething
script: ../script/dosomething.sh {{ tower_webhook_payload.region | default(region) }} {{ tower_webhook_payload.country | default(country) }} {{ tower_webhook_payload.state | default(state) }}
- name: intl_doanotherthing
script: ../script/doanotherthing.sh {{ tower_webhook_payload.state | default(state) }}