有没有办法像这样成为角色的一部分: 我需要运行nrpe.cfg中的五次命令(配置文件中有5个命令 - 所以5 x 5命令)?
- name: grep the commands from nagios
shell: grep -R check_http_ /etc/nagios/nrpe.cfg | cut -d= -f2-
register: nagios_check
- name: check_before
shell: (printf $(echo '{{ item }}' | awk -F'country=' '{print $2}' | cut -d'&' -f1); printf ' ';{{ item }} | cut -d ' ' -f-2) >> {{ ansible_env.DATA_LOG }}/eden-{{ dateext.stdout }}
register: checkedenbefore
with_items: "{{ nagios_check.stdout_lines }}"
**with_sequence: count=5**
ignore_errors: True
答案 0 :(得分:1)
目前这不可能,但应该再次发布Ansible 2.0。使用Ansible 2,您可以将with_items
与include
一起使用,这样您就可以将check_before
任务中的with_sequence
循环放在单独的yml文件中,然后再包括它与with_items
一起。
这些方面的东西:
<强> main.yml 强>:
- name: grep the commands from nagios
shell: grep -R check_http_ /etc/nagios/nrpe.cfg | cut -d= -f2-
register: nagios_check
- include: check_before.yml
with_items: "{{ nagios_check.stdout_lines }}"
<强> check_before.yml 强>:
- name: check_before
shell: (printf $(echo '{{ item }}' | awk -F'country=' '{print $2}' | cut -d'&' -f1); printf ' ';{{ item }} | cut -d ' ' -f-2) >> {{ ansible_env.DATA_LOG }}/eden-{{ dateext.stdout }}
register: checkedenbefore
with_sequence: count=5
ignore_errors: True
我不知道何时会发布Ansible 2,但您可以使用devel branch from github并查看它是否符合您的需求。
答案 1 :(得分:1)
您可以使用with_nested。
- name: grep the commands from nagios
shell: grep -R check_http_ /etc/nagios/nrpe.cfg | cut -d= -f2-
register: nagios_check
- name: check_before
shell: (printf $(echo '{{ item.0 }}' | awk -F'country=' '{print $2}' | cut -d'&' -f1); printf ' ';{{ item.0 }} | cut -d ' ' -f-2) >> {{ ansible_env.DATA_LOG }}/eden-{{ dateext.stdout }}
register: checkedenbefore
with_nested:
- "{{ nagios_check.stdout_lines }}"
- "{{ range(0, 5) }}"
ignore_errors: True