2022.01.22  

【Ansible】EC2サーバーにディレクトリを作成する(AWS)

Ansible,  AWS    

Ansibleのansible-playbookコマンドでAWSのEC2(CentOS7)にディレクトリを作成する方法を紹介します。

playbookの書き方

まず、次のようなplaybook(ymlファイル)を用意します。

playbook_mkdir.yml
- hosts: group1

  become: yes
  tasks:
  - name: mkdir_job
    file:
      path: "/home/centos/test/dir1"
      state: directory
      owner: "root"
      group: "root"
      mode: "744"

hosts:
処理を実行するサーバーを指定します。サーバーの詳細情報についてはインベントリファイル(hosts)をansible-playbookコマンドに読み込ませることで設定します。
インベントリファイルの中身を知りたい方は次の記事をご参照ください。
インベントリファイル(hosts)の作成

become:
これをyesに設定することで、root権限で処理を実行することができます。

tasks:
タスクには実行するモジュールやそのモジュールが使用する引数を指定します。
Ansible 用語集

file:
ディレクトリを作成、削除するためのモジュール。
ディレクトリの他にもファイル、シンボリックリンクの作成、削除、設定を行える。

state:
制御の対象を指定する。ディレクトリの制御を行う場合はdirectoryを指定する。
その他には、空ファイルを作成するtouch、シンボリックリンクを制御するlink、ハードリンクを制御するhard、それらを削除するabsentなどがある。

owner:
ディレクトリの所有者を指定する。今回はrootを指定しています。

group:
ディレクトリのグループを指定する。今回はrootを指定しています。

mode:
ディレクトリの権限を指定する。今回は744を指定しています。
ダブルクォートをつけ忘れると、エラーにならず意図しない権限が付与されるので注意が必要です。

Ansibleでディレクトリを作成してみる

実際に先ほど設定したplaybookを使用してAWSのEC2(CentOS7)にディレクトリを作成してみます。
現在のサーバーの状態は次のようになっています。

[centos@ip-55-66-123-178 test]$  pwd
/home/centos/test
[centos@ip-55-66-123-178 test]$  ls -l 
合計 0
[centos@ip-55-66-123-178 test]$  

ローカルの端末(mac)で先ほど作成したplaybookをansible-playbookコマンドで実行します。

$ ansible-playbook -i hosts playbook_mkdir.yml 

PLAY [group1] ******************************************************************

TASK [Gathering Facts] *********************************************************
ok: [55-66-123-178]

TASK [mkdir_job] ***************************************************************
changed: [55-66-123-178]

PLAY RECAP *********************************************************************
55-66-123-178              : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0    

再びAWSのEC2を確認します。するとdir1ディレクトリがオーナーとグループがroot、パーミッションが744で作成されています。

[centos@ip-55-66-123-178 test]$  pwd
/home/centos/test
[centos@ip-55-66-123-178 test]$  ls -l
合計 0
drwxr--r--. 2 root root 6  1月 22 17:08 dir
[centos@ip-55-66-123-178 test]$  

また、引数にrecurse: yesを設定すると再帰的にディレクトリを作成できます。

playbook_mkdir.yml
- hosts: group1

  become: yes
  tasks:
  - name: mkdir_job
    file:
      path: "/home/centos/test/dir2/dir3"
      state: directory
      owner: "root"
      group: "root"
      mode: "744"
      recurse: yes
ansible-playbook -i hosts playbook_mkdir.yml 実行前
[centos@ip-55-66-123-178 test]$  pwd
/home/centos/test
[centos@ip-55-66-123-178 test]$  ls -l 
合計 0
[centos@ip-55-66-123-178 test]$  
ansible-playbook -i hosts playbook_mkdir.yml 実行後
[centos@ip-55-66-123-178 test]$  pwd
/home/centos/test
[root@ip-172-26-8-203 test]# ls -lR
.:
合計 0
drwxr--r--. 3 root root 18  1月 22 17:15 dir2

./dir2:
合計 0
drwxr--r--. 2 root root 6  1月 22 17:15 dir3

./dir2/dir3:
合計 0
[centos@ip-55-66-123-178 test]$  

Udemy動画

参考

https://docs.ansible.com/ansible/2.9_ja/reference_appendices/glossary.html
https://qiita.com/moiwa/items/e2c843e255c81a65746c
https://noknowing.hatenablog.com/entry/2021/01/01/053854

コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信