首页 > 解决方案 > 通过向剧本提供变量来从 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] 也不起作用,我在这里没有想法:/

标签: ansible

解决方案


removeweb不是目录。项目应直接解决

- file:
    path: "/test/{{ removeweb['projekt'] }}"
    state: absent

推荐阅读