可以在指定的文件中插入一段文本,这段文本是被标记过的,以便在以后的操作中可以通过标记找到这段文本,然后修改或者删除这段文本。

参数

  • path:必须参数,指定要操作的文件,新版本好像是dest
  • block:用于指定一段文本,与content参数相同
  • marker:用于指定标记符,即一个开始标记一个结束标记;默认开始标记为# BEGIN ANSIBLE MANAGED BLOCK,结束标记为# END ANSIBLE MANAGED BLOCK,使用marker自定义标记。{mark}为内置的BEGIN和END
  • state:有两个可选值,present和absent,如果对应的文件中已经存在对应标记的文本,默认会更新对应段落,在执行插入操作或更新操作时,state的值为present,默认值即为present;如果对应的文件中已经存在对应标记的文本并且将state的值设置为absent,则表示从文件中删除对应标记的段落。
  • insertafter:默认值为EOF,即在文件的末尾插入文本,使用此参数可在指定的行后插入。如果多行文本都能够匹配对应的正则,则以最后一个满足条件的行为准
  • insertbefore:默认值为BOF,即在文件的开头插入文本。如果多行都能够匹配对应的正则,则以最后一个满足条件的行为准
  • backup:是否在修改文件之前对文件进行备份
  • create:当目标文件不存在时,是否创建

例子

  1. - name: edit PATH
  2. blockinfile:
  3. dest: /etc/profile
  4. marker: "# {mark}"
  5. marker_begin: jdk1.8start
  6. marker_end: jdk1.8end
  7. block: |
  8. export JAVA_HOME=/usr/local/jdk1.8.0_151
  9. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  10. export PATH=$JAVA_HOME/bin:$PATH