Ansible 剧本:在 运行 时加载内部清单文件

Ansible playbook: load internal inventory file while running

我有一个 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?)

I want to perform this inside the playbook.yml file itself and not from outside

您不能在剧本中设置库存文件。剧本是剧本列表,剧本 必须 hosts 声明。在 Ansible 尝试(并且未能)解释 hosts.

之前,无法从剧本内部引用清单

ansible.cfg 文件中指定库存,该文件存储在与您的剧本相同的目录中:

[defaults]
inventory = ./hosts

在您的 ansible.cfg 中,在 [defaults] 部分中,有一个名为 inventory 的指令。 将其设置为您的库存文件或目录。

我的内容是:

...
[defaults]

# some basic default values...

inventory      = inventory/
...