Ansible 基于条件包含任务文件

moh*_*abk 3 ansible ansible-playbook ansible-2.x

刚刚进入ansible并想知道您是否可以main.yml根据传入的变量将文件包含在任务中--extra-vars

例子;

main.yml -- 来自角色/任务

# Upload latest json to s3
- include: upload-code.yml
Run Code Online (Sandbox Code Playgroud)

playbook.yml ——来自剧本

- name: Launch cloudformation stack
  hosts: 127.0.0.1
  connection: local
  roles:
    - launch.cloudformation
Run Code Online (Sandbox Code Playgroud)

如您所见,playbook.yml包括 arolemain.yml包括upload-code.yml

我如何upload-code.yml根据如下条件包含

ansible-playbook playbook.yml --extra-vars "include=upload"

udo*_*dan 5

您可以通过when对包含任务应用条件来实现此目的。

- include: upload-code.yml
  when:
    - include is defined
    - include == "upload"
Run Code Online (Sandbox Code Playgroud)

或者,如果您有多个包含文件,您也可以将其include用作名称的一部分。

- include: "{{ include }}-code.yml"
  when: include is defined
Run Code Online (Sandbox Code Playgroud)