31歳ほぼ未経験からIT業界へ転職。備忘録と勉強になればと思いサイトを立ち上げました。

IT技術のあれこれ

Ansible

AnsibleでCentOSにディレクトリ作成

投稿日:

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」ディレクトリが作成されていたため、見事成功となりました。

 

-Ansible

Copyright© IT技術のあれこれ , 2024 AllRights Reserved.