• ansible下使用blockinfile添加配置信息到xml


    #发文福利#

    一、前言

    1、目标:批量修改服务器上的xml配置文件
    2、原配置文件的最后一部分内容如下
    1. [root@s40 tmp]# tail kahn.conf
    2. <value>nginx</value>
    3. <description>my nginx config!</description>
    4. </property>
    5. <property>
    6. <name>address</name>
    7. <value>shanghai.china</value>
    8. </property>
    9. </configuration>
    3、要求:在倒数第二行的位置插入新的配置信息
    1. <property1>
    2. <name1>kahn.config</name>
    3. <value1>hahahaha.hello world!</value>
    4. </property1>

    二、ansible-playbook的写法

    1. ---
    2. - hosts: all
    3. gather_facts: no
    4. ignore_unreachable: yes
    5. tasks:
    6. - name: debug 1
    7. debug:
    8. msg: "hello , newgroup"
    9. - name: 往xml里插入一段配置信息
    10. blockinfile:
    11. path: /opt/tmp/hdfs-site.xml
    12. insertbefore: ""
    13. block: |
    14. <property1>
    15. <name1>kahn.config</name>
    16. <value1>hahahaha.hello world!</value>
    17. </property1>
    18. marker: "#{mark} my marker kahn..."
    19. state: present
    20. notify:
    21. - handler1
    22. handlers:
    23. - name: handler1
    24. command: /bin/bash -c "/usr/bin/sed -ie 's/<\/configuration>/\n<\/configuration>/g' /opt/tmp/kahn.conf"

    说明:

    1、insertbefore: "" 指定在 一行的前面插入新配置信息

    2、marker: "#{mark} my marker kahn..."  指定自定义标记,注意#是linux下的注释,{mark}是固定写法,必须写。到时候再你的配置信息上下放会有标记开始和结束的信息,如#BEGIN my marker kahn...和#END my marker kahn...。为啥要加{mark},有这个标记,才能以后使用state: absent去删除块。

    3、state: present 增加块。反之是state: absent,如果要删除块state: absent的前提是在增加的时候必须有marker: "#{mark}"是必不可少的。

    4、notify:  - handler1 是本次的拓展,自定义动作标签,当我们修改了配置文件后,就会触发将最后一行的替换掉为上面增加一个空行。(注意这是个迂回的方法,没能在ansible中找到给指定行增加空白行的方法。如果我们反反复复的这样弄的话,会在最后一行前产生多条空行)

    执行结果如下:

    1. [root@s40 tmp]# tail kahn.conf
    2. <value>nginx</value>
    3. <description>my nginx config!</description>
    4. </property>
    5. <property>
    6. <name>address</name>
    7. <value>shanghai.china</value>
    8. </property>
    9. <property1>
    10. <name1>kahn.config</name>
    11. <value1>hahahaha.hello world!</value>
    12. </property1>
    13. </configuration>

  • 相关阅读:
    springboot二手商品交易系统java ssm
    如何构建完整的财务体系?
    浅谈Java中Stream流关闭
    leetcode每日一练-第977题-有序数组的平方
    约束的概念外加多表查询都在这
    STL浅析
    JavaScript异步编程——08-Promise的链式调用【万字长文,感谢支持】
    java并发问题记录
    葡萄串目标检测YoloV8——从Pytorch模型训练到C++部署
    代理IP与Socks5代理在技术世界的多元应用
  • 原文地址:https://blog.csdn.net/xoofly/article/details/132977946