我有一个“主”可写剧本,其中我使用“ import_playbook”调用了多个剧本。此时,从清单文件中检索“子”剧本中所需的所有变量,并且该变量正在起作用。
#master_playbook.yml
- import_playbook: playbook1.yaml
- import_playbook: playbook2.yaml
我想做的是代替在清单文件中列出“子”剧本中所需的密码,而是希望“主”剧本提示用户输入所需的密码,然后传递这些密码到“孩子”剧本。 “子”剧本仍会从清单文件中检索所需的其余变量(非密码)。
我可以使用vars_prompt来工作并能够输入密码,但是我遇到的问题是能够将这些变量从“主”剧本传递到“子”剧本。 “ import_playbook”操作。
试图完成与以下操作等效的操作,但这不起作用。
#master_playbook.yml
-vars_prompt:
- name: "password1"
prompt: "Enter password1"
- name: "password2"
prompt: "Enter password2"
- import_playbook: playbook1.yaml
vars:
password1: "{{ password1 }}"
password2: "{{ password2 }}"
- import_playbook: playbook2.yaml
vars:
password1: "{{ password1 }}"
password2: "{{ password2 }}"
答案 0 :(得分:0)
我创建了以下剧本
---
- hosts: localhost
roles:
- parent
tasks:
- name: Importing child01 playbook
import_playbook: child01.yml
...
然后我运行以下命令:
ansible-playbook -e "pass1=blah" ./import.yml
父角色和child01剧本都只有一条调试语句,显示pass1的值。我得到的输出如下:
PLAY [localhost] ***************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [parent : Parent task 1] **************************************************
ok: [localhost] => {
"pass1": "blah"
}
PLAY [localhost] ***************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [child01 : Child 1 first task] ********************************************
ok: [localhost] => {
"pass1": "blah"
}
PLAY RECAP *********************************************************************
localhost : ok=4 changed=0 unreachable=0 failed=0
因此,不能包括使用vars_prompt或vars,但可以在命令行中传递。也许这可以为您工作?