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?
答案 0 :(得分:1)
不,你不能。
(甚至修复语法错误 - 变量名中的连字符 - 不会改变它)
库存主机名(inventory_hostname
)是要在游戏中使用的别名,它不应该是动态的。
用于连接的实际主机名可以在ansible_host
variable中定义,所以你可以做的是:
[servers]
server-1 ansible_host="{{server1}}" ansible_ssh_user="{{server1_user}}" ansible_ssh_private_key="{{ssh_key}}"