どんな事でもお気軽にお問い合わせください
0120-803-656
24時間受付いたします

Ansibleで始めるInfrastructure as Code(実践編)


みなさんこんにちは
システムソリューション部
SREチーム所属の岡崎です。

前回はAnsibleのツール紹介とインストールについて書かせてもらいましたので今回はいよいよAnsibleの実行方法を紹介したいと思います。

Ansible実行時の構成

Ansible実行に必要なものは以下のようになります。

  • hosts ファイル(インベントリファイル)
  • playbook
  • モジュール

それぞれについて解説いたします。

hosts ファイル(インベントリファイル)とは??

hosts ファイル(インベントリファイル)とは作業対象のホストを記入するファイルとなります。
記入例は以下の通りとなります。

[all]
XXX.XXX.XXX.XXX
XXX.XXX.XXX.XXX

[web]
XXX.XXX.XXX.XXX

[db]
XXX.XXX.XXX.XXX

各それぞれの[]部分にて実行ホストのグループを指定することができます。
上記を任意の名前で保存しAnsible実行時にオプション -i を付与し保存したファイルを指定すれば記入したホストに向けて各コマンドが実行されます。

playbookとは??

作業対象のホストで実行したいコマンドや作業の流れを記入するファイルとなります。
以下はapacheをインストールするplaybookとなります。

---
# Main Play operation playbook
- name: apply common configuration to all nodes
  hosts: all
  remote_user: [ユーザ名]
  sudo: yes

  tasks:
    - name: apache-install
      yum:
        name=httpd
        state=present

- nameの部分は- の部分がこの処理の始まりを表しており、nameの部分はこの処理の名前となります。

hostsの部分は上で説明したグループ部分を指定できます。
今回はすべてのホストということで[all]と指定しております。

remote_userの部分は作業対象のホスト上のユーザを指定しています。
リモート先に存在するユーザを指定しないとコマンドが実行されずエラーとなります。

sudoの部分はremote_userにてroot権限でコマンドを実行するかを指定します。
今回はインストールが必要になるのでroot権限が必要になるためyesとしてます。

task以下の部分は実際に実行されるコマンドとなります。
今回はyumコマンドにてapacheをインストールするコマンドとなります。

モジュールとは??

先ほどのplaybook部分にてコマンド部分があったと思いますが、その部分が各モジュールとなります。
前回でも特徴の一つとしてモジュールを紹介しましたが、モジュールは現在も様々な言語にて開発され
サーバ自体の設定だけではなく、クラウドプラットフォームの設定まで行うものまであります。
詳細は以下に実際のモジュールの一覧のリンクを張るのでそちらをご確認ください。
リンク:https://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html

実際に実行してみよう!!

ではいよいよAnsibleを実行してみようと思います。
まず作業対象のホストをhostsファイルに記入します。

# vi hosts

========================
[all]
XXX.XXX.XXX.XXX
========================

続いてメインのplaybookを作成いたします。

# vi operation.yml

========================
---
# Main Play operation playbook
- name: apply common configuration to all nodes
  hosts: all
  remote_user: ec2-user
  sudo: yes

  tasks:
    - name: apache-install
      yum:
        name=httpd
        state=present
========================

最後にansible-playbookコマンドにて作業対象ホストに対して実行したいコマンドを実行いたします。
※--private-key=にて対象のログインするためのSSH秘密鍵を指定しています

# ansible-playbook --private-key=key/id_rsa -i hosts operation.yml

PLAY [apply common configuration to all nodes] ****************************
TASK [Gathering Facts] ****************************************************
ok: [XXX.XXX.XXX.XXX]

TASK [apache-install] *****************************************************
changed: [XXX.XXX.XXX.XXX]

PLAY RECAP ****************************************************************
XXX.XXX.XXX.XXX             : ok=2    changed=1    unreachable=0    failed=0

インストールできているかどうか確認いたします。

$ rpm -qa | grep httpd
httpd-tools-2.2.34-1.16.amzn1.x86_64
httpd-2.2.34-1.16.amzn1.x86_64

無事インストールできていました!!!

まとめ

今回はAnsibleの実行方法について記入しました。
次回はさらにroleを設定する方法などを記入できればと思います。
引き続きAnsibleや運用・構築自動化に少しでも興味をもっていただければ幸いです。
以上、これで締めます。


お問い合わせ 採用情報 エンジニアブログ
ISO27001認証
Contact PageTop
株式会社ビヨンド

© beyond Co., Ltd. All rights reserved.