如何在Ansible CLI中将列表作为额外变量传递?

如何在Ansible CLI中将列表作为额外变量传递?,ansible,Ansible,是否有一种方法可以通过将Ansible变量作为CLI中的--extra var/-e传递来覆盖该变量。问题是我要覆盖的变量是一个列表,我无法找出正确的语法 下面是我的group\u vars文件中的变量: my_variable: - { var1: "value1", var2: "value2" } ... 我的命令是这样的: ansible-playbook -i inventory playbook.yml -e 'my_variable={ var1: value1,

是否有一种方法可以通过将Ansible变量作为CLI中的
--extra var
/
-e
传递来覆盖该变量。问题是我要覆盖的变量是一个列表,我无法找出正确的语法

下面是我的
group\u vars
文件中的变量:

my_variable:
    - { var1: "value1", var2: "value2" }
    ...
我的命令是这样的:

ansible-playbook -i inventory playbook.yml -e 'my_variable={ var1: value1, var2: value2 }' --limit 1.2.3.4 --diff --check
我得到以下错误:

致命:[1.2.3.4]=>带有\u项的项目需要一个列表或一组

这可能吗?我做错了什么?

这是一个,所以您需要将字典括在方括号中,作为列表的元素(JSON术语中的数组)传递。此外,您需要正确引用:

-e 'my_variable="[ { \"var1\": \"value1\", \"value2\": \"value2\" } ]"'

这实际上是一个非常不寻常的错误-使用您发布的命令,您将
my_variable
定义为一个单字符字符串(
{
),并且字符串可与
和_items
一起使用。元素将是单个字符(在本例中,无论如何只有一个字符),因此进一步的处理可能会失败,但这不会导致您发布的错误。对不起,这个问题很混乱。您应该已经知道如何发布错误。