VagrantとAnsibleを使ってAipoのインストール済環境を作る

Aipo8.1.1インストール環境をVagrantで作りましたが、今度はAnsibleを使ってみます。

Ansibleはいわゆる構成管理ツールとよばれるものになります。Ansibleにすることで冪等性が高まるのでそこがメリットのようです。

Aipo8.1.1の環境をつくる際には

https://github.com/YoshiteruIwasaki/DevOps/blob/master/install_aipo8110.sh

#!/bin/bash

yum install -y gcc nmap lsof unzip readline-devel zlib-devel wget
cd /usr/local/
wget -P /usr/local/ --trust-server-names "https://osdn.jp/frs/redir.php?m=iij&f=%2Faipo%2F64847%2Faipo-8.1.1-linux-x64.tar.gz"
tar -xvzf aipo-8.1.1-linux-x64.tar.gz
cd aipo-8.1.1-linux-x64
sh installer.sh
/usr/local/aipo/bin/startup.sh

になりますが、これをAnsibleで書き換えると以下のようになります。

https://github.com/YoshiteruIwasaki/DevOps/blob/master/playbook_aipo8110.yml

- hosts: aipo8110
  sudo: yes
  user: vagrant
  vars:
    usr_local: "/usr/local" 
    aipo_installer_dir: "aipo-8.1.1-linux-x64" 
    aipo_install_url: "https://osdn.jp/frs/redir.php?m=iij&f=%2Faipo%2F64847%2Faipo-8.1.1-linux-x64.tar.gz" 
  tasks:
    - name: install gcc
      yum: name=gcc state=latest

    - name: install nmap
      yum: name=nmap state=latest

    - name: install lsof
      yum: name=lsof state=latest

    - name: install unzip
      yum: name=unzip state=latest

    - name: install readline-devel
      yum: name=readline-devel state=latest

    - name: install zlib-devel
      yum: name=zlib-devel state=latest

    - name: unarchive aipo
      unarchive: src={{ aipo_install_url }} dest={{ usr_local }} copy=no

    - name: install aipo
      command: sh installer.sh chdir={{ usr_local }}/{{ aipo_installer_dir }}
      register: ls_result

    - debug: var=ls_result.stdout_lines
      when: ls_result | success

    - name: startup aipo
      command: "{{ usr_local }}/aipo/bin/startup.sh"
      async: 15
      poll: 0
      register: ls_result

    - debug: var=ls_result.stdout_lines
      when: ls_result | success

呼び出し元のVagrantファイルはこんなかんじになります。

https://github.com/YoshiteruIwasaki/DevOps/blob/master/centos7-aipo8.1.1-ansible/Vagrantfile

VAGRANTFILE_API_VERSION = "2"

IMAGE_NAME = "centos7-aipo8.1.1-ansible"
AIPO_PLAYBOOK = "../playbook_aipo8110.yml"
IP_ADDRESS = "192.168.1.105"
IMAGE_BOX = "centos/7"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = IMAGE_BOX
  config.vm.provider :virtualbox do |vb|
    vb.name = IMAGE_NAME
  end
  config.vm.network "public_network", ip: IP_ADDRESS, bridge: "en0: Wi-Fi (AirPort)"
  config.vm.synced_folder "../vagrant_share", "/vagrant_data"
  config.vm.provision "ansible" do |ansible|
    ansible.playbook = AIPO_PLAYBOOK
    ansible.inventory_path = "../hosts"
    ansible.limit = "all"
    ansible.verbose = "v"
  end
end

管理対象となるホストを指定するファイルはこちらになります。

https://github.com/YoshiteruIwasaki/DevOps/blob/master/hosts

[aipo8110]
192.168.1.105