我创建了一个变量,用于在我的主要任务集中禁用nginx中的站点。由于这是一次性任务,意味着一旦domain1.com被禁用,我可以评论整行。当我这样做时,我收到错误
" {"失败":是的," msg":"字段' args'具有无效值,似乎包含未定义的变量。错误是:'无'没有属性'域'"。
如果将任务修改为仅在变量中列出域名时运行,我该怎么办?
nginx_sites_disabled:
#- domain: "domain1.com"
- name: Disable sites
file:
path: /etc/nginx/sites-enabled/{{ item.domain }}
state: absent
with_items: "{{nginx_sites_disabled}}"
notify:
- Reload nginx
答案 0 :(得分:2)
在您的任务中应用default
过滤器:
- name: Disable sites
file:
path: /etc/nginx/sites-enabled/{{ item.domain }}
state: absent
with_items: "{{ nginx_sites_disabled | default([]) }}"
notify:
- Reload nginx
答案 1 :(得分:1)
完成工作后,您无需注释掉这些行。
与大多数Ansible模块一样,file
模块为idempotent:如果所需的state
为absent
且文件不存在,则不会执行任何操作
保持nginx_sites_disabled
列表不变。
顺便说一句,如果您仍需要nginx_sites_disabled
作为空列表,则需要写下:
---
nginx_sites_disabled: []
否则,nginx_sites_disabled
将等于None
。这就是你有这个错误的原因。