首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ansible-playbook --extra-vars=

在ansible-playbook --extra-vars=
EN

Stack Overflow用户
提问于 2021-06-24 19:58:33
回答 1查看 119关注 0票数 0

我尝试将JSON结构传递给ansible-playbook,但没有成功:这是我尝试传递的命令

代码语言:javascript
复制
ansible-playbook --extra-vars='[{\"${foo1}\": \"somevalue1\", \"${foo2}\": \"somevalue2\"}, {\"${zoo1}\": \"somevalue111\", \"${zoo2}\": \"somevalue222\"}]' test.yml 

获取错误:

代码语言:javascript
复制
ERROR! Syntax Error while loading YAML.
  expected ',' or '}', but got '{'

或者这样:

代码语言:javascript
复制
ansible-playbook --extra-vars='[{"${foo1}":"somevalue1","${foo2}":"somevalue2"},{"${zoo1}":"somevalue111","${zoo2}":"somevalue222"}]' test.yml

没有得到输出

理想的方式是像这样将JSON传递到变量中,这样我就可以在ansible中迭代json数组:

代码语言:javascript
复制
ansible-playbook --extra-vars="AAA='[{\"${foo1}\": \"somevalue1\", \"${foo2}\": \"somevalue2\"}, {\"${zoo1}\": \"somevalue111\", \"${zoo2}\": \"somevalue222\"}]'" test.yml

使用以下攻略:

代码语言:javascript
复制
---
-
  gather_facts: false
  hosts: localhost
  name: test
  tasks:
    - name: debug
      debug:
        msg: "{{ AAA }}"

输出为:

代码语言:javascript
复制
ok: [localhost] =>
  msg:
  - ? ''
    : somevalue2
  - ? ''
    : somevalue222

简而言之,在不使用文件的情况下将JSON结构传递到ansible的最佳方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2021-06-24 23:54:40

我不明白为什么要转义'字符串中的",但是您可能希望不使用KEY=VALUE语法,因为在这种形式下,ansible拆分空格--通过以{开头,它通知ansible --key vars实际上是JSON,并停止使用键值解析器

代码语言:javascript
复制
ansible -e '{"AAA": [{"hello":{"world": true}}, {"array":{"yup":"forsure"}}]}' -m debug -a var=AAA localhost

产生

代码语言:javascript
复制
localhost | SUCCESS => {
    "AAA": [
        {
            "hello": {
                "world": true
            }
        },
        {
            "array": {
                "yup": "forsure"
            }
        }
    ]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68115330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档