鱒身(Masu_mi)のブログ

知った事をメモする場所。

開発環境構築を再整理した

blogの整理を通してAnsibleのベストプラクティスや環境毎に変更しないと行けない項目を学べたので、 以前準備した開発環境のリポジトリも整理しなおした。

またvagrant provision ${target_vm}をすると対象VM以外も一緒にプロビジョニングされてしまう問題があったので対応した。

調べた結果、Vagrant経由でAnsiblewを使う際に使われるインベントリファイルで全てのVMが一緒に書かれていたためだった。

$ cat .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
# Generated by Vagrant

centos ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user='vagrant' ansible_ssh_private_key_file='/Users/masumi/works/develop/.vagrant/machines/centos/virtualbox/private_key'
ubuntu ansible_ssh_host=127.0.0.1 ansible_ssh_port=2202 ansible_ssh_user='ubuntu' ansible_ssh_private_key_file='/Users/masumi/works/develop/.vagrant/machines/ubuntu/virtualbox/private_key'

vagrant_ansible_inventoryファイルはVagrantで自動生成されるので触りたくない。 そこでansible.raw_argumentsフィールドを使ってansible-playbookコマンドに-lフラグを渡して実行するように変更した。

修正結果は下のようになった。

config.vm.define :ubuntu do |node|
  node.vm.box = "ubuntu16"
  node.vm.box_url = "https://atlas.hashicorp.com/ubuntu/boxes/xenial64/versions/20170617.0.0/providers/virtualbox.box"

  node.vm.hostname = "ubuntu00.dev.lonet"
  node.vm.network "private_network", ip: "192.168.34.11"
  node.vm.network "public_network"
  node.vm.provider "virtualbox" do |vb|
    vb.memory = "1024"
  end

  node.vm.provision "ansible" do |ansible|
    ansible.playbook = "provisioning/playground.yml"
    ansible.limit = 'all'
    ansible.raw_arguments = [
      "-l", "ubuntu",
      "-e", "ansible_python_interpreter=/usr/bin/python3"
    ]
  end
end

config.vm.define :centos do |node|
  node.vm.box = "centos/7"
  node.vm.box_url = "https://atlas.hashicorp.com/centos/boxes/7/versions/1704.01/providers/virtualbox.box"

  node.vm.hostname = "cent01.dev.lonet"
  node.vm.network "private_network", ip: "192.168.34.12"
  node.vm.network "public_network"

  node.vm.provision "ansible" do |ansible|
    ansible.playbook = "provisioning/playground.yml"
    ansible.limit = 'all'
    ansible.raw_arguments = [
      "-l", "centos",
    ]
  end
end

他には下を行っている。

  • Ubuntuでgo1.8.3のビルド時にメモリ不足になったためメモリを追加
  • Ubuntuではpython3しか存在しないためansible_python_interpreterで指定