本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名原文链接~~~

ansible的ini_file模块

微信搜索 zze_coding 或扫描 👉 二维码关注我的微信公众号获取更多资源推送:


此文章为「ansible笔记(2)之常用模块」的子文章。

今天写 Ansible 的时候遇到一个需求,需要往一个 INI 文件中添加内容并保证幂等性,本来第一反应是使用 lineinfile 模块,但我要插入的内容是多行的,使用 \nlineinfile 模块给我转义了,导致插入操作达不到目标效果。

后面就看了下官网的模块索引突然就看到了这个 ini_file 模块,如其名,它就是专门用来操作 INI 文件的,下面列出它的常用属性与说明:

  • path:要操作的 INI 文件路径,如果该文件不存在则会自动创建;
  • section:要操作的节(以中括号包裹起来的行);
  • backup:修改之前创建一个包含时间戳信息的备份文件,以便在不正确地破坏文件的情况下将其找回;
  • create:如果目标文件不存在,则自动创建,默认为 yes
  • owner:设置文件属主;
  • group:设置文件属组;
  • mode:设置文件权限;
  • no_extra_spaces:让添加的属性行的等号(=) 两边没有空格;
  • option:属性键;
  • state:可选值有 presentabsent,默认为 present,表示使目标文件存在;
  • value:属性值;

例 1:在客户机的 /tmp/ 目录下创建一个 mysql.ini 文件,并初始化一个名为 mysqld 的节,该节下有一个属性 address 的值为 127.0.0.1

$ ansible all -m ini_file -a 'path=/tmp/mysql.ini section=mysqld option=address value=127.0.0.1'

$ cat /tmp/mysql.ini 

[mysqld]
address = 127.0.0.1

例 2:修改例 1 中的 address 的值为 192.168.0.130,并在修改之前进行备份。

$ ansible all -m ini_file -a 'path=/tmp/mysql.ini section=mysqld option=address value=192.168.0.130 backup=yes'

$ ls /tmp/mysql.ini*
/tmp/mysql.ini  /tmp/mysql.ini.2928.2020-09-27@22:28:56~

例 3:在例 2 使用的文件内容的基础上添加一个 client 的节,并添加一个名为 server 的属性,其值为 db.zze.xyz,该属性的 = 两边不留空格。

$ ansible all -m ini_file -a 'path=/tmp/mysql.ini section=client option=server value=db.zze.xyz backup=yes no_extra_spaces=yes'

$ cat /tmp/mysql.ini

[mysqld]
address = 192.168.0.130
[client]
server=db.zze.xyz

这里附上该模块的官方文档:


如果这篇文章对您有帮助,可点击下方链接分享给你的朋友们😋,如果遇到问题欢迎评论、留言~~~😇

评论

公众号:zze_coding

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×