感激如果有人能指出这有什么问题......
以下代码用于在寄存器模块中设置测试,以打印当前值/etc/timezone
。然后有一个任务将它与组/主机{{timezone}}变量进行比较,只有在任务不同时才运行任务(即不会不必要地调用处理程序)。
但它始终无论如何运行。
- name: check current timezone
shell: cat /etc/timezone
register: get_timezone
- name: set /etc/timezone
shell: echo "{{ timezone }}" > /etc/timezone
when: get_timezone.stdout.find('{{ timezone }}') == false
notify: update tzdata
...
in group_vars / all.yml:
timezone: Europe/London
答案 0 :(得分:13)
Python string.find方法返回-1,如果它找不到子串(https://docs.python.org/2/library/string.html,请参阅string.find)。所以,你可以修改你的yml:
- name: set /etc/timezone
shell: echo "{{ timezone }}" > /etc/timezone
when: get_timezone.stdout.find('{{ timezone }}') == -1
notify: update tzdata
或仅使用"而不是":
- name: set /etc/timezone
shell: echo "{{ timezone }}" > /etc/timezone
when: '"{{ timezone }}" not in get_timezone.stdout'
notify: update tzdata