因为我在 ansible 2.3 中,所以我无法使用该add_host模块(请参阅 Jack 的回答和add_host文档),这将是一个更好的解决方案。因此,我将使用不同的技巧来扩充现有的 ansible 库存文件,重新加载并使用它。
主机.inv
[remotehosts]
主要的.yml
- hosts: localhost
pre_tasks:
- name: include environment config variables
include_vars:
file: "{{ item }}"
with_items:
- "../environments/default.yml"
- "../environments/{{ env_name }}.yml"
- name: inventory facts
run_once: true
set_fact:
my_host: "{{ env_host_name }}"
- name: update inventory for env
local_action: lineinfile
path=hosts.inv
regexp={{ my_host }}
insertafter="[remotehosts]" line={{ my_host }}
- meta: refresh_inventory
- hosts: remotehosts
...
预任务使用所有变量替换等处理环境 yml 并hosts.inv在重新加载之前使用它来填充refresh_inventory
下面定义的任何任务- hosts: remotehosts都将在远程主机或主机上执行。