ansible - 通过向剧本提供变量来从 dict 访问变量
问题描述
我有以下字典:
webpaket:
"001":
projekt: "Test"
domain: "testdomain.de"
subdomain: "test"
fqdn: "test.testdomain.de"
serveradmin: "webmaster@testdomain.de"
ip: "*"
ssl: "true"
password: "somepass"
vhost: ""
symfony: "true"
localdb: "true"
clusterdb: "false"
localdb_pgsql: "false"
这是剧本:
---
# file: webpaket-remove.yml
- hosts: all
vars:
removeweb: "{{ webpaket[webid] }}"
roles:
- { role: webpaket-remove, stage: 'dev' }
这是任务:
---
- name: Delete Web-Directory for {{ webid }}
file: path=/test/{{ item.value }} state=absent
with_dict: "{{removeweb}}"
我想通过向 ansible playbook 提供一个参数来从中访问一个变量,如下所示:
ansible-playbook -l testserver.de --check --diff webpaket-remove.yml --extra-vars "webid=001"
当我运行它时,我得到这个输出:
ok: [testserver.de] => (item={'key': 'projekt', 'value': 'Test'})
ok: [testserver.de] => (item={'key': 'domain', 'value': 'testdomain.de'})
我如何访问键值?
如果我使用 item.value.projekt 我得到:
"The task includes an option with an undefined variable. The error was: 'projekt' is undefined
item[projekt] 也不起作用,我在这里没有想法:/
解决方案
removeweb不是目录。项目应直接解决
- file:
path: "/test/{{ removeweb['projekt'] }}"
state: absent
推荐阅读
- php - 通过php非数组从json文件中获取值
- python - 基于每日时间序列数据框创建工作日/周末时间序列数据框
- hive - 由于配置单元版本不同,Parquet 模式不兼容
- php - MPDF - “自动”字体大小文本区域
- angularjs - Safari 中的 Hammerjs:滚动问题
- django - 如何部分使用序列化程序
- ajax - Select2 动态选择 AJAX
- javascript - 如何获取数组中数组的长度?
- http - http2 中的 half close 有什么作用?http2中流状态的本地和远程之间的区别是什么?
- javascript - Laravel多行输入/选择下拉菜单时自动填写一行文本框字段