Ansibleのansible-playbook
コマンドでAWSのEC2(CentOS7)にディレクトリを作成する方法を紹介します。
playbookの書き方
まず、次のようなplaybook(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
を設定すると再帰的にディレクトリを作成できます。
- 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
[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]$
[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