我有IP项目列表:
server_hosts:
- { host: '1.1.1.1' }
- { host: '10.10.10.10' }
我想只传递命令行中的一个项目:
ansible-playbook base.yml -i ${host}, --extra-vars "env_name=lab server_hosts={host:'${1.1.1.1}'} "
但这会产生错误:
{“failed”:true,“msg”:“字段'args'的值无效,似乎包含一个未定义的变量。错误是:'unicode'对象没有属性'host'\ n \ n错误
如何在命令行中从列表中传递特定项目?
答案 0 :(得分:1)
请注意旁注here:
注意:使用key = value语法传入的值被解释为字符串。如果您需要传入任何不应该是字符串的内容(布尔值,整数,浮点数,列表等),请使用JSON格式。
所以,你应该使用:
--extra-vars '{"env_name":"lab","server_hosts":{"host":"1.1.1.1"}}'
否则,您最终会以server_hosts
作为字符串,而不是对象。