侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

行动起来,活在当下

  • 累计撰写 748 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录

ansible的ini_file模块

zze
zze
2020-09-27 / 0 评论 / 0 点赞 / 1045 阅读 / 2290 字

不定期更新相关视频,抖音点击左上角加号后扫一扫右方侧边栏二维码关注我~正在更新《Shell其实很简单》系列

此文章为「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

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

0

评论区