首页 > 解决方案 > Ansible:断开连接时如何将 --extra-vars 维护到两个子剧本中?

问题描述

我正在开发的剧本应该在使用参数(--extra-vars)在命令行中指定的单个主机(hostA)上进行身份验证后运行,例如:[ansible-playbook main.yaml -e "variable_host=hostA"]

该主要剧本包括 part1 和 part2,预计 hostA 将由于 part1 和 part2 之间的重新启动而断开 ansible 会话。

尝试了两种解决方案均未成功:

第一个解决方案:(每个部分都有include_tasks:第一个part1在hostA上成功处理,但第二个part2失败。这是由于连接问题,因为part2需要用户/密码。vars_prompt似乎只适用于仅限第 1 部分)

主要.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应该只在hostA上运行。主机变量不会被覆盖- -额外变量)

主要.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

解决方案


终于明白了!!!

它适用于第二种解决方案,但不是使用额外变量来限制主机,而是使用 --limit "hostA" 运行剧本

2019年快乐。


推荐阅读