Ansible入門 その① 'Hello World!!'


Ansibleとは?

概要

構成管理ツールと呼ばれ、
リモートマシンやサーバをプログラムに従って、自動で設定することができます。
いちいち同じ作業を繰り返してサーバの設定をしなくても、
Ansibleにコードさえ渡してしまえば何台でも彼が設定してくれる便利な友達。
テスト環境の再現も可能!

メリット

  1. 冪等性
    同じプログラムからならどこで何回やっても同じ結果が保証されています。
  2. わかりやすい
    メインプログラムは、YAML上に構築され、本当にわかりやすく読みやすい。
  3. エージェントレス
    構成管理ツールといえば、他にもいろいろなサービスがあるが、
    多くがリモートホストにもそのソフトウェアを導入しなければ作動しない。
    しかし、AnsibleはそんなことしなくてもSSH接続だけで、勝手に動く!
  4. 任意のシェルコマンドがリモートサーバー上で実行可能
    シェルコマンドを簡単にプログラムに実装可能です。有難い。
    ちなみに、モジュールもたくさん用意されていて、色々便利。
  5. すぐに使えるようになる
    使えるようになるために必要な事前知識が少ないです。
    なんなら、playbookに命令書くんだな。
    そして、リモートホストはこう指定するんだな。で始められる気もする。

Ansibleインストールに関して

Macユーザの方々は本当に楽です。Ansible インストールで検索ください。
Windowsユーザの方々は少し大変です。
僕も苦戦しました。もはや苦戦しかしていない。
仮想環境あるかたは、特に困らないのかもしれませんが、僕はdockerのコンテナ上に立ち上げるところから始めました。ちなみに最近はec2上に立ち上げたものを使っています。
docker Ansibleaws Ansibleで検索すると色々出てくると思います。
【ちなみに私が参考にした記事様】
Docker編
【Ansible】DockerでAnsibleハンズオン
AWS編
【Ansible入門】EC2環境でAnsibleを実行してみよう

「Hello World」を出力してみる

今回は、localHost(自分自身)を使ってHelloWorldを出力するものを作ってみます。
Ansibleの基本はこれで分かるかなと思います。

必要なファイル

ファイル構成
helloworld
├── playbook.yml
└── inventory

playbook.yml
Ansibleでの設定管理のスクリプト。
基本的にAnsibleを使っている間の時間はこいつを書くことに費やします。
簡単に言えば、サーバーにやってほしい命令とかを書きます。
inventory
どのリモートホストを対象とするかを記述したファイル。INI形式。

inventoryの中身

inventory
[target]
localhost

playbookの中身

playbook.yml
---
- hosts: all
  tasks:
    - name: Hello World!
      debug:
        msg: "Hello World!"

YAML形式のファイルは字下げ(インデント)が大事ですので注意してください。

実行してみる

localhost
$ ansible-playbook -i inventory playbook.yml
PLAY [all] **********************************************************

TASK [Gathering Facts] **********************************************
ok: [localhost]

TASK [helloworld : Hello World!] ************************************
ok: [localhost] => {
    "msg": "Hello World!"
}

PLAY RECAP **********************************************************
localhost              : ok=2    changed=0    unreachable=0    failed=0   

こんな感じで、実行すると実行結果がバーッと出てくると思います。
これでとりあえずAnsibleが動きますね。簡単かつ便利です。

関連資料
Ansible入門 その② '基本文法'
Ansible入門 その③ 'インベントリ'

参考文献
初めてのAnsible(Lorin Hochstein著,玉川竜司訳,株式会社オライリー・ジャパン版)
Ansibleでできることを中の人が教えます