使用with_items通过命令行运行ansible

时间:2016-12-26 12:52:13

标签: ansible ansible-playbook

我有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错误

如何在命令行中从列表中传递特定项目?

1 个答案:

答案 0 :(得分:1)

请注意旁注here

  

注意:使用key = value语法传入的值被解释为字符串。如果您需要传入任何不应该是字符串的内容(布尔值,整数,浮点数,列表等),请使用JSON格式。

所以,你应该使用:

--extra-vars '{"env_name":"lab","server_hosts":{"host":"1.1.1.1"}}'

否则,您最终会以server_hosts作为字符串,而不是对象。