OSS編~AnsibleでRoleを試してみる01~

こんにちは! 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$ sudo vim ansible.cfg2roles_path    = /etc/ansible/roles

2.対象の設定

次にAnsibleを実行するhostの設定を行います。

※今回はLocalhostを操作します。

1$ sudo vim hosts2[testservers]3127.0.0.1

3.Rolesを作成

Rolesを作成していきます。

Rolesでは次のようなディレクトリ構成でtasks,handlers,vars,metaにmain.ymlを置くことで自動的に読み込みをしてくれます。

1roles/2   xxxxx/3     files/4     templates/5     tasks/6     handlers/7     vars/8     meta/

各フォルダは次の意味になります。

files/

Rolesでcopyモジュールを利用する際のファイル保管場所。

templates/

Rolesでtemplateモジュールを利用する際のファイル保管場所。

tasks/

Rolesのタスク定義に関するメインファイル。

handlers/

Rolesのハンドラ定義に関するメインファイル。

vars/

Rolesの変数定義に関するメインファイル。

meta/

Rolesの依存関係に関するメインファイル。

設定ファイルに記述したRolesパスのディレクトリを作成します。

1$ sudo mkdir roles

続いてApacheインストールする単純なタスクのRolesを作成してみます。

1$ sudo mkdir roles/apache/{files,templates,tasks,handlers,vars,meta}2$ ls roles/apache/3files  handlers  meta  tasks  templates  vars

メインのタスクを定義します。

1$ sudo vim roles/apache/tasks/main.yml2- name: apache install3  yum: pkg={{ item }} state=present4  with_items:5    - httpd67- name: on httpd8  service: name=httpd enabled=yes

4.PlayBookの作成

PlayBookを作成して実行してみます。

管理PlayBookを作成します。

1$ sudo vim site.yml2---3- include: testservers.yml

testserversのPlayBookを作成します。

1$ sudo vim testservers.yml2---3- hosts: testservers4  sudo: yes5  remote_user: ec2-user6  roles:7     - apache

5.実行

それでは実行してみましょう!

1$ sudo ansible-playbook site.yml2 [WARNING]: The version of gmp you have installed has a known issue regarding3timing vulnerabilities when used with pycrypto. If possible, you should update4it (ie. yum update gmp).56PLAY [testservers] ************************************************************78GATHERING FACTS ***************************************************************9The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.10ECDSA key fingerprint is 5d:cf:5d:00:f6:27:2f:64:d0:df:9f:a4:19:59:de:50.11Are you sure you want to continue connecting (yes/no)? yes12ok: [127.0.0.1]1314TASK: [apache | apache install] ***********************************************15changed: [127.0.0.1] => (item=httpd)1617TASK: [apache | on httpd] *****************************************************18changed: [127.0.0.1]1920PLAY RECAP ********************************************************************21127.0.0.1                  : ok=3    changed=2    unreachable=0    failed=0

Roleが正しく動いてApacheがインストールされているか確認してみます。

1$ rpm -q httpd2httpd-2.2.27-1.3.amzn1.x86_64

いかがでしたでしょうか?

次回は『OSS編~AnsibleでRoleを試してみる02~』と題して、AnsibleのRoleでFileとテンプレートを試してみたいと思います。

お楽しみに!!!

この記事を書いた人

aws-recipe-user