Ansible勉強用の環境を構築する

Ansibleを使う機会がありそうだったので、ちょっと勉強してみる。
まずは、自分のPCでAnsibleを試すための環境を構築してみた。

www.ansible.com

環境

VagrantCentOSを2つを起動して、CentOS(以下「Server1」と呼ぶ)からCentOS(以下「Server2」と呼ぶ)に対して、Ansibleを実行できるようにする。

VirtualBoxをインストール

公式のインストーラを使った。

Oracle VM VirtualBox

Vagrantをインストール

これも公式のインストーラを使った。

Vagrant by HashiCorp

VagrantCentOSを起動する

まずは、適当な作業ディレクトリを作成しておいて、 コンソールから以下のコマンドを実行して、Vagrantfileを作成する。

vagrant init

Vagrantfileが作成されるので、そのファイルの内容を編集して、CentOSが2つ起動できるようにする。

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "bento/centos-7.2"

  config.vm.define "server1" do |server|
    server.vm.network "private_network", ip: "192.168.33.10"
  end

  config.vm.define "server2" do |server|
    server.vm.network "private_network", ip: "192.168.33.11"
  end

end

編集したら、以下のコマンドを実行して起動してみる。

vagrant up

ちゃんと起動しているかvagrant statusを実行して確認してみる。

$ vagrant status
Current machine states:

server1                   running (virtualbox)
server2                   running (virtualbox)

Server1にAnsible実行環境を構築

Pythonのインストール

Ansibleを実行するための色々をインストールする。
今回はPython3.6をインストールしてみる。

Python 3 Support — Ansible Documentation

IUS Community Projectのリポジトリを追加。

sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm

Pythonとその他パッケージをインストール。

sudo yum install -y python36u python36u-devel python36u-libs

python3.6って入力するのが面倒なので、シンボリックリンクを作成。

sudo ln -s /usr/bin/python3.6 /usr/bin/python3

試しにPythonのバージョンを確認してみる。

[vagrant@localhost ~]$ python3 --version
Python 3.6.5

Ansibleのインストール

今回はAnsibleをpipからインストールするため、まずはpipをインストール。

sudo yum install -y python36u-pip

こっちもシンボリックリンクを作成しておく。

sudo ln -s /usr/bin/pip3.6 /usr/bin/pip3

Ansibleをインストールする。

sudo pip3 install ansible

これでインストールは完了。

Ansibleを動かしてみる

hostsの作成

まずはhostsファイルを作成して、Ansible実行先のサーバ(今回はserver2に対して実行する)に関する内容を入力する。

vagrant-machine ansible_host=192.168.33.11 ansible_port=22 ansible_user=vagrant ansible_ssh_private_key_file=/home/vagrant/private_key

hostsに記述したansible_ssh_private_key_fileで指定した場所に、server2のprivate_keyファイルを格納する。
private_keyはVagrantfileを作成したフォルダの下に格納されている。
.vagrant/machines/server2/virtualbox/private_key このファイルをscpコマンドやツールで、server1に送る。

ansibleコマンドを実行

hostsが格納されているディレクトリでansible all -i hosts -m pingを実行して、うまくいけば以下のように表示される。

vagrant-machine | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

これで、Ansibleをとりあえず動かす環境が作ることができた。