【发布时间】:2018-02-06 15:22:52
【问题描述】:
使用 Ansible“set_fact”模块,我需要使用“from_json”等过滤器从 json 文件中获取存储库 url。我尝试了几种方法,但仍然不明白应该如何工作。
- name: initial validation
tags: bundle
hosts: localhost
connection: local
tasks:
- name: register bundle version_file
include_vars:
file: '/ansible/playbook/workbench-bundle/bundle.json'
register: bundle
- name: debug registered bundle file
debug:
msg: '{{ bundle }}'
我得到了我想要的 json:
TASK [debug registered bundle file] ************************************************
ok: [127.0.0.1] => {
"msg": {
"ansible_facts": {
"engine-config": "git@bitbucket.org/engine-config.git",
"engine-monitor": "git@bitbucket.org/engine-monitor.git",
"engine-server": "git@bitbucket.org/engine-server.git",
"engine-worker": "git@bitbucket.org/engine-worker.git"
},
"changed": false
}
}
然后我尝试通过键名选择每个值,以将此值用作 URL 以在单独的实例中“npm install”每个包。
- name: set_fact some paramater
set_fact:
engine_url: "{{ bundle.('engine-server') | from_json }}"
然后我得到错误:
致命:[127.0.0.1]:失败! => {“失败”:真,“味精”:“模板错误 while 模板化字符串:预期的名称或数字。细绳: {{ bundle.('engine-server') }}"}
我有很多其他方式像这样loopkup,但它仍然因其他错误而失败。有人可以帮助理解,我如何找到每个参数并将他存储为“set_fact”?谢谢
【问题讨论】:
-
你想达到什么目的?
-
@techraf 我尝试“set_fact”每个 url 值作为来自 json 的参数。像“engine_url”。然后 npm 在单独的实例上安装每一个。