こんにちは! JQです。
前回は『OSS編~Nagios NRPEを試してみる02~』と題して、Nagios NRPEを試してみました。
今回は『OSS編~AnsibleでRoleを試してみる01~』と題して、AnsibleでRoleを試してみたいと思います。
Rolesとは
RolesとはVersion 1.2から追加されたPlaybookを分割して再利用や共有をしやすくする機能になります。
1.Ansibleのインストール
先ずはAnsibleを準備します。
今回はAmazon Linux にEPELリポジトリからインストールします。
1 |
$ sudo yum -y install ansible --enablerepo=epel |
Ansibleのディレクトリに移動します。
1 |
$ cd /etc/ansible/ |
設定ファイルにてRolesパスを有効化します。
1 2 |
$ sudo vim ansible.cfg roles_path = /etc/ansible/roles |
2.対象の設定
次にAnsibleを実行するhostの設定を行います。
※今回はLocalhostを操作します。
1 2 3 |
$ sudo vim hosts [testservers] 127.0.0.1 |
3.Rolesを作成
Rolesを作成していきます。
Rolesでは次のようなディレクトリ構成でtasks,handlers,vars,metaにmain.ymlを置くことで自動的に読み込みをしてくれます。
1 2 3 4 5 6 7 8 |
roles/ xxxxx/ files/ templates/ tasks/ handlers/ vars/ meta/ |
各フォルダは次の意味になります。
files/
Rolesでcopyモジュールを利用する際のファイル保管場所。
templates/
Rolesでtemplateモジュールを利用する際のファイル保管場所。
tasks/
Rolesのタスク定義に関するメインファイル。
handlers/
Rolesのハンドラ定義に関するメインファイル。
vars/
Rolesの変数定義に関するメインファイル。
meta/
Rolesの依存関係に関するメインファイル。
設定ファイルに記述したRolesパスのディレクトリを作成します。
1 |
$ sudo mkdir roles |
続いてApacheインストールする単純なタスクのRolesを作成してみます。
1 2 3 |
$ sudo mkdir roles/apache/{files,templates,tasks,handlers,vars,meta} $ ls roles/apache/ files handlers meta tasks templates vars |
メインのタスクを定義します。
1 2 3 4 5 6 7 8 |
$ sudo vim roles/apache/tasks/main.yml - name: apache install yum: pkg={{ item }} state=present with_items: - httpd - name: on httpd service: name=httpd enabled=yes |
4.PlayBookの作成
PlayBookを作成して実行してみます。
管理PlayBookを作成します。
1 2 3 |
$ sudo vim site.yml --- - include: testservers.yml |
testserversのPlayBookを作成します。
1 2 3 4 5 6 7 |
$ sudo vim testservers.yml --- - hosts: testservers sudo: yes remote_user: ec2-user roles: - apache |
5.実行
それでは実行してみましょう!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
$ sudo ansible-playbook site.yml [WARNING]: The version of gmp you have installed has a known issue regarding timing vulnerabilities when used with pycrypto. If possible, you should update it (ie. yum update gmp). PLAY [testservers] ************************************************************ GATHERING FACTS *************************************************************** The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established. ECDSA key fingerprint is 5d:cf:5d:00:f6:27:2f:64:d0:df:9f:a4:19:59:de:50. Are you sure you want to continue connecting (yes/no)? yes ok: [127.0.0.1] TASK: [apache | apache install] *********************************************** changed: [127.0.0.1] => (item=httpd) TASK: [apache | on httpd] ***************************************************** changed: [127.0.0.1] PLAY RECAP ******************************************************************** 127.0.0.1 : ok=3 changed=2 unreachable=0 failed=0 |
Roleが正しく動いてApacheがインストールされているか確認してみます。
1 2 |
$ rpm -q httpd httpd-2.2.27-1.3.amzn1.x86_64 |
いかがでしたでしょうか?
次回は『OSS編~AnsibleでRoleを試してみる02~』と題して、AnsibleのRoleでFileとテンプレートを試してみたいと思います。
お楽しみに!!!