Ansible-使用“with_dict”时检查变量值

Ansible-使用“with_dict”时检查变量值,ansible,lets-encrypt,Ansible,Lets Encrypt,我目前正在使用一个自建的剧本来管理Web服务器。我已经指定了应该在另一个名为sites.yml的文件中创建的网站 到目前为止,一切都很顺利。除此之外,我想为我的网站添加Let's Encrypt支持,问题来了。。怎么做 我正在根据sites.yml文件的内容执行各种任务。但是我想启用让我们使用每个站点的变量进行加密 My sites.yml如下所示: sites: site1: name: site1 server_name: site1.example.com do

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

到目前为止,一切都很顺利。除此之外,我想为我的网站添加Let's Encrypt支持,问题来了。。怎么做

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

My 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?"
有人能给我提供更多关于使用dict循环的信息吗?

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

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