Ansible playbook:运行时加载内部库存文件

时间:2017-11-07 13:46:10

标签: ansible ansible-inventory

我有INI格式的库存文件:

例如:

[db]
8.8.8.8 ansible_user=root ansible_ssh_private_key_file=/keys/root-id_rsa.pem
....

我正在寻找一种在运行时自动加载我的库存文件的方法,而不是在我触发我的ansible-playbook命令时指定哪个库存文件路径

ansible-playbook playbook.yml --inventory-file=hosts (I'm trying to avoid from this) -vv

我熟悉“add_host”模块,但我仍然喜欢用INI格式创建一个库存文件,并以某种方式让playbook自动加载它。那可能吗?

修改

感谢用户@techraf和@Jeff Hemmen,我添加了更多详细信息

另外,我不想使用ansible.cfg文件,因为我想在playbook.yml文件中执行此操作,而不是从外部执行

类似的东西:

- name: add_host {{environment_type}} db servers
  hosts: localhost
  vars_files:
     - vars/main.yml
  roles:
       - { role: my_role}
  inventory_file: (possible?)
     - inventory/hosts.ini (possible?)

2 个答案:

答案 0 :(得分:1)

在你的ansible.cfg中,在var groups = new ObservableDictionary<string, IGroupViewModel>(vm => vm.Name.ToString(CultureInfo.InstalledUICulture)); var isGroupExists = groups.ContainsKey(GroupName.ToString(CultureInfo.InstalledUICulture)); if (!isGroupExists) { groups.Add(new GroupViewModel()); } 部分,有一个名为[defaults]的指令。 将其设置为您的库存文件或目录。

我觉得:

inventory

答案 1 :(得分:0)

  

我想在playbook.yml文件中执行此操作,而不是从外部执行

您无法在剧本中设置库存文件。 Playbook是一个播放和播放列表必须hosts声明。在Ansible尝试(并且未能)解释hosts之前,无法从剧本内部引用库存。

在与您的剧本存在于同一目录中的ansible.cfg文件中指定广告资源:

[defaults]
inventory = ./hosts