Ansible - 使用 "with_dict" 时检查变量值

Ansible - Checking for variable value when using "with_dict"

我目前正在使用自建剧本来管理网络服务器。我已经指定了应该在另一个文件中创建的网站,名为 sites.yml.

到目前为止,一切正常。除了,我想为我的网站添加 Let's Encrypt 支持,问题来了..如何?

我正在根据文件 sites.yml 的内容执行各种任务。但我想启用让我们使用每个站点的变量进行加密。

我的sites.yml如下:

sites:
  site1:
    name: site1
    server_name: site1.example.com
    document_root: /var/vhosts/site1.example.com
    environment: staging
    db_name: site1
    db_password: password
  site2:
    name: site2
    server_name: site2.example.com
    document_root: /var/vhosts/site2.staging.sddev.nl
    environment: staging
    db_name: site2
    db_password: password

我只想添加一个像 letsencrypt: true 这样的变量来启用 Let's Encrypt,但是如何在 with_dict 循环中检查这个变量? Letsencrypt 任务应仅在设置变量时执行。

我觉得应该是这样的:

- name: LETSENCRYPT | Securing websites
  command: --COMMAND FOR OBTAINING CERTIFICATE--
  with_dict: "{{ sites }}"
  when: "site.letsencrypt = true?"

谁能给我更多关于在 with_dict 循环中使用 when 的信息?

您可能需要查看 with_dict 文档。您可以使用 item.value:

- name: LETSENCRYPT | Securing websites
  command: --COMMAND FOR OBTAINING CERTIFICATE--
  with_dict: "{{ sites }}"
  when: item.value.letsencrypt | default(false) | bool