Ansible の導入(Mac + Vagrant + Ubuntu)

構成管理ツールのAnsibleを使ってみます。

目的

AnsibleをMacにインストールし、Vagrant上の仮想マシンにアクセスしてみます。

環境

  • Mac El Capitan
  • Vagrant 1.9.1 + Ubuntu 16.04
  • 作業フォルダ:/任意の場所/ansible/

ステップ1. インストール

Homebrewを使って、MacにAnsibleをインストールします。

$ brew update
$ brew install ansible

ステップ2. 接続先情報の作成

任意の場所にansibleフォルダを作り、そこで作業をします。フォルダは任意の名前でOKです。

$ mkdir ansible
$ cd ansible

hostsファイルを作り、サーバーへの接続先情報を記載します。ファイルは任意の名前でOKです。

書式

[<接続先情報の名前>]
<接続先ドメイン or IP> ansible_ssh_port=<ポート番号> ansible_ssh_user=<ユーザー名> ansible_ssh_private_key=<秘密鍵へのパス>

Vagrant の仮想マシンに接続する例です。

[vagrant_default]
192.168.33.10 ansible_ssh_port=22 ansible_ssh_user=vagrant ansible_ssh_private_key=/documents/vagrant/.vagrant/machines/default/virtualbox/private_key

ステップ3. 接続の確認

実際に接続できるかどうかを ansible allコマンドで試します。

ansible all -i hosts -m ping

うまくいくとSUCCESSと返ってきます。

192.168.33.10 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

ステップ4. Playbookの作成

Ansibleで実行する内容を書いたものをPlaybookと呼びます。

playbook.ymlを作り、実行する命令を書きます。ファイルは任意の名前でOKです。

書式(一例)

- hosts: <接続先情報の名前>
  tasks:
  - debug: msg="<デバッグメッセージ>"

Vagrant の仮想マシンに接続して、”Hello Ansible”と表示する例です。

- hosts: vagrant_default
  tasks:
  - debug: msg="hello Ansible"

ステップ5. Playbookの実行

ansible-playbookコマンドでPlaybookを実行します。引数-iで接続先情報を渡し、続いてPlaybookを渡します。

$ ansible-playbook -i hosts playbook.yml

エラーなく実行できれば成功です。

PLAY [vagrant_default] *********************************************************

TASK [setup] *******************************************************************
ok: [192.168.33.10]

TASK [debug] *******************************************************************
ok: [192.168.33.10] => {
    "msg": "Hello Ansible"
}

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

終わりに

Playbookで行えることは、公式サイトに詳しく載っています。