【发布时间】:2019-05-26 10:54:43
【问题描述】:
我正在开发的剧本应该在使用参数(--extra-vars)在命令行中指定的单个主机(hostA)上进行身份验证后运行 例如:[ansible-playbook main.yaml -e "variable_host=hostA"]
本主要剧本包括 part1 和 part2,预计 hostA 将由于 part1 和 part2 之间的重新启动而断开 ansible 会话。
尝试了两种解决方案均未成功:
第一个解决方案:(每个部分都有include_tasks:第一个part1在hostA上成功处理,但第二个part2失败。这是由于连接问题,因为part2需要user/pwd . vars_prompt 似乎只适用于 part1)
main.yaml
主机:“{{ variable_host | default('All-host')}}”
vars_prompt:
- name: ADMUSER
prompt: Username
private: no
- name: ADMPASS
prompt: password
private: yes
任务:
- name: ==> Part1
include_tasks: TEST1.yaml
- name: ==> Part2
include_tasks: TEST2.yaml
第二种解决方案:(每个部分都带有import_playbook:第一个part1处理成功。第二次连接part2成功,但是part2运行在所有主机上。part2应该只运行在主机A。 主机变量不会被 --extra-vars 覆盖)
main.yaml
- import_playbook:playbook1.yaml
- import_playbook:playbook2.yaml
playbook1.yaml
主机:“{{ variable_host | default('All-host')}}”
vars_prompt:
- name: ADMUSER
prompt: Username
private: no
- name: ADMPASS
prompt: password
private: yes
任务:
- nameA1:xxxx
- nameB1:xxxx
playbook2.yaml
主机:“{{ variable_host | default('All-host')}}”
vars_prompt:
- name: ADMUSER
prompt: Username
private: no
- name: ADMPASS
prompt: password
private: yes
任务:
- nameA2:xxxx
- nameB2:xxxx
那么,即使发生断开连接,是否有一种解决方案可以为第 1 部分和第 2 部分维护 hostA 的 --extra-vars? 注意我不赞成修改配置文件“主机”以将剧本限制为单个主机的解决方案。 谢谢 理查德
【问题讨论】:
标签: ansible