我是一个非常新的人,现在不知道如何做一个幂等的任务。 例如file 。 它根本没有creates或removes 。 在command模块中它已经creates ,但是每当我运行预configuration器并且文件(符号链接)确实存在时,该命令仍将该命令标记为“ok”,而不是“跳过”。
这里是command模块的例子
- name: Firefox | link command: ln -s /opt/firefox/firefox /usr/local/bin/firefox creates=/usr/local/bin/firefox
总是得到执行。
如果节点的状态已经由第一次运行完成了,那么如何确保命令不会被执行> = 2次?
谢谢!
这应该工作。
其实我检查,它主要工作(见后面),这里是我用来testing它的完整剧本(不使用Firefox,但概念是相同的):
--- - hosts: localhost tasks: - name: Test | link & idempotency command: ln -s /tmp/ans/from /tmp/ans/to creates=/tmp/ans/to
细节:
你虽然得到一个警告:
[WARNING]: Consider using file module with state=link rather than running ln
如果你想确保链接是正确的,并且只在需要的时候改变它(因此是幂等的)“正确”的方式,至于安全的警告是使用文件模块,这里是一个例子:
--- - hosts: localhost tasks: - name: Test | link & idempotency file: src=/tmp/ans/from dest=/tmp/ans/to state=link