LoginSignup
0
0

More than 3 years have passed since last update.

Ansibleでファイル修正してみる

Last updated at Posted at 2019-11-04

概要

Ansibleでファイルを修正してみる

structure.jpeg

ファイル構成

├ origin_file
│ └ hoge.txt       <- 転送して修正するテキストファイル
├ hosts            <- Inventryファイル
├ site.yml         <- Playbookファイル
└ Vagrantfile

対象ファイル

修正対象のファイルを下記のように準備しておきます。

origin_file/hoge.txt
Hello World.
This is a sample file.

Remove Line Sample text.
hoge hoge
fuga fuga

条件に該当する行を修正する

正規表現にマッチする行を指定の文字列に修正します。

site.yml
---
- name: Playbook Sample
  hosts: all
  become: true
  tasks:
    - name: install libselinux-python
      yum:
        name: libselinux-python
        state: present

    - name: ファイル(./origin_file/hoge.txt)を転送する
      copy:
        src: origin_file/hoge.txt
        dest: /tmp/hoge.txt
        owner: vagrant
        group: vagrant
        mode: "u=rw,g=r,o=r"

    - name: 条件に該当する行を修正する
      lineinfile:
        dest: /tmp/hoge.txt
        regexp: '^Hello\s+'
        line: Hello Hoge

playbookを実行する。

$ ansible-playbook -i hosts site.yml 

条件に該当する行を削除する

正規表現にマッチする行を1行まるごと削除します。

site.yml
---
- name: Playbook Sample
  hosts: all
  become: true
  tasks:
    - name: install libselinux-python
      yum:
        name: libselinux-python
        state: present

    - name: ファイル(./origin_file/hoge.txt)を転送する
      copy:
        src: origin_file/hoge.txt
        dest: /tmp/hoge.txt
        owner: vagrant
        group: vagrant
        mode: "u=rw,g=r,o=r"

    - name: 条件該当する行を削除する
      lineinfile:
        dest: /tmp/hoge.txt
        regexp: '^Remove\s+'
        state: absent

playbookを実行する。

$ ansible-playbook -i hosts site.yml 

ファイル修正してコマンド実行する

sshd_configを修正してsshdを再起動し、RootでSSHログインを禁止する。

site.yml
---
- name: Playbook Sample
  hosts: all
  become: true
  tasks:
    - name: install libselinux-python
      yum:
        name: libselinux-python
        state: present

    - name: rootのパスワードでSSHログイン禁止
      lineinfile:
        dest: /etc/ssh/sshd_config
        regexp: '^PermitRootLogin\s+'
        line: PermitRootLogin no
        validate: sshd -t -f %s
      notify:
        - sshdRestart

  handlers:
    - name: sshdRestart
      service:
        name: sshd
        state: restarted

※ validate: 編集ファイルを検証するコマンド (リターン0 = 成功)
※ validateの場合は、%s指定が必須
※ notify: タスク実行結果がchangedの時に実行される処理を指定する

playbookを実行する。

$ ansible-playbook -i hosts site.yml 

参考文献

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0