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