【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

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

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

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

Ansible実行時の構成

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

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

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

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

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

1
2
3
4
5
6
7
8
9
[all]
XXX.XXX.XXX.XXX
XXX.XXX.XXX.XXX
 
[web]
XXX.XXX.XXX.XXX
 
[db]
XXX.XXX.XXX.XXX

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

playbookとは??

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

1
2
3
4
5
6
7
8
9
10
11
12
---
# 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ファイルに記入します。

1
2
3
4
5
6
# vi hosts
 
========================
[all]
XXX.XXX.XXX.XXX
========================

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 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秘密鍵を指定しています

1
2
3
4
5
6
7
8
9
10
11
# 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

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

1
2
3
$ 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や運用・構築自動化に少しでも興味をもっていただければ幸いです。
以上、これで締めます。

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
1
読み込み中...
1 票, 平均: 1.00 / 11
484
X facebook はてなブックマーク pocket
【2026.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

【2026.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

この記事をかいた人

About the author

岡崎潤一郎

スマートフォン向けゲームの移設及び運用経験豊富。

日々、マルチクラウドの運用、サーバ構築・移設をこなす。案件数が増えてきたことから業務の効率を思案中。各クラウドの良さを踏まえてサーバ移設の方法などを思考することが多い。

クラウド間や物理からクラウドなどの移設を実施しているうちに、日本MSP協会が開催しているコンペで二連覇を達成。