Ansible 之 lineinfile 模塊使用

一、常用需求

1、替換某行內容
2、在某行前插入內容
3、在某行後面插入內容
4、刪除某行

二、測試文件內容

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
user = mysql
basedir = /app/mysql
datadir = /app/mysql/data
port=3306
server-id = 1
socket=/tmp/mysql.sock

[mysqldump]
quick
max_allowed_packet = 16M

三、playbook 文件

---
- hosts: test
  remote_user: cedar
  become: yes
  tasks:
    - name: "在socket=/tmp/mysql.sock前插入內容"
      lineinfile:
        path: /etc/my_bak.cnf
        insertbefore: 'socket=/tmp/mysql.sock'
        line: 我是socket前面的內容
    - name: "在server-id後插入內容"
      lineinfile:
        path: /etc/my_bak.cnf
        insertafter: 'server-id = 1'
        line: 我是server-id後面的內容
    - name: "user=mysql 替換"
      lineinfile:
        path: /etc/my_bak.cnf
        regexp: '^user = mysql'
        line: user = mingkang
    - name: "刪除quick這行"
      lineinfile:
        path: /etc/my_bak.cnf
        regexp: 'quick'
        state: absent

四、運行結果

[root@Ansible playbook]# ansible-playbook lineinfile.yaml 

PLAY [test] *****************************************************************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************************************
ok: [10.3.153.8]

TASK [在socket=/tmp/mysql.sock前插入內容] *****************************************************************************************************************************
changed: [10.3.153.8]

TASK [在server-id後插入內容] ******************************************************************************************************************************************
changed: [10.3.153.8]

TASK [user=mysql 替換] ********************************************************************************************************************************************
changed: [10.3.153.8]

TASK [刪除quick這行] ************************************************************************************************************************************************
changed: [10.3.153.8]

PLAY RECAP ******************************************************************************************************************************************************
10.3.153.8                 : ok=5    changed=4    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

五、驗證結果

[root@ansible-test etc]# cat my_bak.cnf 
[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
user = mingkang
basedir = /app/mysql
datadir = /app/mysql/data
port=3306
server-id = 1
我是server-id後面的內容
我是socket前面的內容
socket=/tmp/mysql.sock

[mysqldump]
max_allowed_packet = 16M
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章