Vagrantで作ったホストにAnsibleでプロビジョニングする
なんかすごく簡単だった。
Ansibleつかってみた - インフラと亀と で書いた、SSHがどうのこうのは一切きにしなくてよかった。
前提
ansibleを入れる
Installation — Ansible Documentation
[PMAC226S vagansible]$ sudo easy_install pip [PMAC226S vagansible]$ sudo pip install ansible --quiet
playbook書く
特に意味ないレシピですが、epel入れて、slコマンド入れて、ls叩いてる・・・
[PMAC226S vagansible]$ vi playbook.yml --- - hosts: all sudo: yes tasks: - name: epel-release install yum: name=epel-release state=installed - name: sl command installed yum: name=sl state=installed - name: ls command run! shell: /bin/ls > /tmp/list.txt ignore_errors: True
Vagrantfileにansible叩くように記載
[PMAC226S vagansible]$ vi Vagrantfile (略) config.vm.provision "ansible" do |ansible| ansible.playbook = "playbook.yml" end (略)
vagrant up
[PMAC226S vagansible]$ vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Importing base box 'CentOS6.6_Packer'... ==> default: Matching MAC address for NAT networking... ==> default: Setting the name of the VM: vagansible_default_1432823564506_68852 ==> default: Fixed port collision for 22 => 2222. Now on port 2200. ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat ==> default: Forwarding ports... default: 22 => 2200 (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2200 default: SSH username: vagrant default: SSH auth method: private key default: Warning: Connection timeout. Retrying... default: Warning: Connection timeout. Retrying... default: Warning: Connection timeout. Retrying... default: Warning: Connection timeout. Retrying... default: default: Vagrant insecure key detected. Vagrant will automatically replace default: this with a newly generated keypair for better security. default: default: Inserting generated public key within guest... default: Removing insecure key from the guest if its present... default: Key inserted! Disconnecting and reconnecting using new SSH key... ==> default: Machine booted and ready! ==> default: Checking for guest additions in VM... ==> default: Mounting shared folders... default: /vagrant => /Users/PMAC226S/Vagrant/vagansible ==> default: Running provisioner: ansible... PYTHONUNBUFFERED=1 ANSIBLE_FORCE_COLOR=true ANSIBLE_HOST_KEY_CHECKING=false ANSIBLE_SSH_ARGS='-o UserKnownHostsFile=/dev/null -o ControlMaster=auto -o ControlPersist=60s' ansible-playbook --private-key=/Users/PMAC226S/Vagrant/vagansible/.vagrant/machines/default/virtualbox/private_key --user=vagrant --connection=ssh --limit='default' --inventory-file=/Users/PMAC226S/Vagrant/vagansible/.vagrant/provisioners/ansible/inventory playbook.yml PLAY [all] ******************************************************************** GATHERING FACTS *************************************************************** ok: [default] TASK: [epel-release install] ************************************************** changed: [default] TASK: [sl command installed] ************************************************** changed: [default] TASK: [ls command run!] ******************************************************* changed: [default] PLAY RECAP ******************************************************************** default : ok=4 changed=3 unreachable=0 failed=0
一つのboxからslコマンドが入っているゲストと、slコマンドが入っていないゲストを自由に作って潰してできるようになるので、試行錯誤してなんか作るときにはいいと思った
itamaeも似たような感じだった Itamae | vagrant-itamae plugin で Vagrantにトイレを設置 #devops #itamae - Qiita