Ansible playbook:运行时加载内部清单文件

dsa*_*don 5 ansible ansible-inventory

我有一个 INI 格式的清单文件:

例如:

[db]
8.8.8.8 ansible_user=root ansible_ssh_private_key_file=/keys/root-id_rsa.pem
....
Run Code Online (Sandbox Code Playgroud)

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

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

我熟悉“add_host”模块,但我仍然更喜欢以 INI 格式创建清单文件,并以某种方式让剧本自动加载它。那可能吗?

编辑:

感谢用户@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?)
Run Code Online (Sandbox Code Playgroud)

tec*_*raf 2

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

您无法在 playbook 中设置清单文件。剧本是剧本列表,剧本必须hosts声明。在 Ansible 尝试(但未能)解释之前,无法从 playbook 内部引用清单hosts

ansible.cfg指定与您的 playbook 存储在同一目录中的文件中的清单:

[defaults]
inventory = ./hosts
Run Code Online (Sandbox Code Playgroud)