VirtualBox上のCentOSにAnsibleをインストールし、まずは簡単な操作をしてみようと思い、ディレクトリを作成しました。
Ansibleのインストールと設定はこちらから
Ansibleで作業をする時には、PlaybookとInventoryというファイルが必要なようなのですが、やっと関係性が見えてきました。
Playbook:Ansibleクライアントに対して設定する内容(ディレクトリ作成、ソフトウェアのインストールなど)を記述するファイル
Inventory:Ansibleクライアントに接続するための情報を記述するファイル
業務で使用することも何度かあったのですが、あらためて調査してみてやっと少しづつ理解できるようになってきました。
Inventoryファイルは作成したので、クライアントサーバにディレクトリを作成するためには、Playbookが必要なので記述していきます。
root/inventory配下に、ディレクトリ作成用のyamlファイルを作成します。
vi mkdir.yml
mkdir.ymlの記述をします。
- hosts: targets
become: yes
tasks:
- name: mkdir_plybook
file:
path: "/tmp/test"
state: directory
owner: "root"
group: "root"
mode: "744"
設定項目 | 設定内容 |
- hosts | Inventoryファイル内のどのグループに実行するのか |
become | クライアントサーバ上でrootに昇格するのか |
tasks | Playbookで処理する内容を記述していく インデントを入れて記述していく |
name | どのような処理を実行するのか記述 Playbook実行時に画面に表示される内容 |
file | ディレクトリ作成、削除のためのモジュール |
path | 作成するパスを指定 |
state | どのような処理を行うのかを記述 ・ディレクトリ作成:directory ・ファイル作成:touch ・シンボリックリンク:link ・ハードリンク:hard ・削除:absent |
owner | ディレクトリの所有者 |
group | ディレクトリのグループ |
mode | ディレクトリの権限 ダブルクォーテーションをつけ忘れても、エラーが表示されずに、想定していない権限な付与されるようなため、注意が必要 |
※初心者のため、間違っている可能性があります。詳細な内容については調査中のため、随時修正していきます。
作成したPlaybookを実行してみます。
PLAY [targets] *****************************************************************
TASK [Gathering Facts] *********************************************************
fatal: [192.168.11.a]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).", "unreachable": true}
ok: [192.168.11.c]
ok: [192.168.11.b]
TASK [mkdir_plybook] ***********************************************************
changed: [192.168.11.b]
changed: [192.168.11.c]
PLAY RECAP *********************************************************************
192.168.11.b : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.11.a : ok=0 changed=0 unreachable=1 failed=0 skipped=0 rescued=0 ignored=0
192.168.11.c : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.11.aは、Ansibleを実行したサーバ自身なのですが、sshkeyを自分自身に渡していなかったため、エラーとなりました。
ただ、他のクライアントサーバ2台は無事、成功しました。
192.168.11.bにログインして、「/tmp」を確認したところ、想定通り「test」ディレクトリが作成されていたため、見事成功となりました。