Ansible在提交之前预测条目是否会更改
我想知道,例如,我是否使用lineinfle,我实际上可以确定它是否会被更改,如果是,请执行一些操作,然后提交实际的lineinfle 有可能吗Ansible在提交之前预测条目是否会更改,ansible,Ansible,我想知道,例如,我是否使用lineinfle,我实际上可以确定它是否会被更改,如果是,请执行一些操作,然后提交实际的lineinfle 有可能吗 谢谢是的。这是可能的。首次试运行lineinfile并通知处理程序。然后提交该行 tasks: - lineinfile: path: '<PATH>' regexp: '<REGEX>' line: '<REPLACE' check_mode: t
谢谢是的。这是可能的。首次试运行lineinfile并通知处理程序。然后提交该行
tasks:
- lineinfile:
path: '<PATH>'
regexp: '<REGEX>'
line: '<REPLACE'
check_mode: true
notify: run handler1
- name: Force notified handlers to run
meta: flush_handlers
- lineinfile:
path: "<PATH>"
regexp: '<REGEX>'
line: '<REPLACE>'
handlers:
- name: run handler1
debug:
msg: Action because the line will change.
B) 这就是Ansible通常提供的功能:
* Commit the actual lineinfile
* Find out if it was changed
* If yes ---> do some action
可以使用属性backup
,该属性将:
创建包含时间戳信息的备份文件,以便
如果您不正确地删除了原始文件,请将其取回
例如:
tasks:
- lineinfile:
path: ...
regexp: ...
line: ...
backup: yes
用例是什么?也就是说,在线路改变之前运行该操作的原因是什么?@VladimirBotka在改变发生之前进行备份很好!但现在我想知道是否有一种方法可以避免任务重复(使用基本相同的参数调用2x lineinfle),我不知道这是如何实现的。Ansible的哲学和目标是定义系统的状态并使过程幂等。没有人会那么在意“以前”系统的状态。当一个过程是幂等的时,运行两次并不是什么大问题。@dctremblay您可以使用“backup”属性来避免重复。我在回答中举了一个例子。
tasks:
- lineinfile:
path: ...
regexp: ...
line: ...
backup: yes