我有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?)
答案 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