我可以使用ips从另一个yaml文件覆盖ansible库存

时间:2018-01-29 08:38:23

标签: ansible yaml

task.yml

---
- hosts: servers
  tasks
  ...
  ...

inventory.yml

[servers]
"{{server-1}}" ansible_ssh_user="{{server1_user}}" ansible_ssh_private_key="{{ssh_key}}"

variables.yml

server-1: localhost
server1_user: user
ssh_key: /home/user/ssh.pem

命令:

ansible-playbook -i inventory.yml \
tasks.yml \
 --extra-vars @variables.yml

除了server-1之外的每个变量都被覆盖。有什么办法可以吗? 我知道有一个名为动态库存的概念。是否可以从YAML 文件中传递ips?

1 个答案:

答案 0 :(得分:1)

不,你不能。

(甚至修复语法错误 - 变量名中的连字符 - 不会改变它)

库存主机名(inventory_hostname)是要在游戏中使用的别名,它不应该是动态的。

用于连接的实际主机名可以在ansible_host variable中定义,所以你可以做的是:

[servers]
server-1 ansible_host="{{server1}}" ansible_ssh_user="{{server1_user}}" ansible_ssh_private_key="{{ssh_key}}"
相关问题