CentOS v6.5をvagrant/ansible で構築する
目的
ITインフラ構築の自動化ツールであるansibleを使ってcentosを構築できるようにする。 (継続的に利用して、serverspecでのミドルウェア設定まで一気通貫でできるように。)
今回のゴール
詳細
vagrant
vagrant box add centos65 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box ➜ ~ mkdir vagrant ➜ ~ cd vagrant ➜ vagrant ls ➜ vagrant mkdir centos65 ➜ vagrant cd centos65 ➜ centos65 ls ➜ centos65 vagrant init centos65 ➜ vagrant up ➜ centos65 vagrant ssh-config Host default HostName 127.0.0.1 User vagrant Port 2200 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /Users/Naoki/.vagrant.d/insecure_private_key IdentitiesOnly yes LogLevel FATAL ➜ echo "127.0.0.1:2200" > hosts
ansible
- ansible でvagrantとの設定状況の確認.
➜ centos65 ansible 127.0.0.1:2200 -m ping -i hosts -u vagrant --private-key=~/.vagrant.d/insecure_private_key The authenticity of host '[127.0.0.1]:2200 ([127.0.0.1]:2200)' can't be established. RSA key fingerprint is cd:72:ab:b1:91:95:69:61:47:73:a1:58:0b:33:2f:ac. Are you sure you want to continue connecting (yes/no)? yes 127.0.0.1 | success >> { "changed": false, "ping": "pong" }
- ansibleのコマンドに渡す引数が多いので楽にするために環境変数設定
➜ centos65 ANSIBLE_SSH_ARGS=' -F ssh.config' ansible default -m ping -i hosts default | success >> { "changed": false, "ping": "pong" }
- ansibleの設定ファイルをカレントディレクトリに作成
➜ centos65 cat << EOS > ansible.cfg heredoc> [defaults] heredoc> hostfile = hosts heredoc> heredoc> [ssh_connection] heredoc> ssh_args = -F ssh.config heredoc> heredoc> EOS
ansible.cfgがきいてるかの確認
➜ centos65 ansible default -m ping default | success >> { "changed": false, "ping": "pong" }
➜ centos65 cat << EOS > httpd.yml heredoc> - hosts: default heredoc> sudo: yes heredoc> tasks: heredoc> - name: install httpd heredoc> yum: name=httpd state=installed heredoc> heredoc> - name: start and enable httpd heredoc> service: name=httpd state=running enabled=yes heredoc> EOS
- ansible-playbookでhttpd.ymlを実行
➜ centos65 ansible-playbook httpd.yml PLAY [default] **************************************************************** GATHERING FACTS *************************************************************** ok: [default] TASK: [install httpd] ********************************************************* changed: [default] TASK: [start and enable httpd] ************************************************ changed: [default] PLAY RECAP ******************************************************************** default : ok=3 changed=2 unreachable=0 failed=0
➜ centos65 vi Vagrantfile # -*- mode: ruby -*- # vi: set ft=ruby : VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "centos65" config.vm.provision "ansible" do |ansible| ansible.playbook = "httpd.yml" end : end
- vagrant provision コマンドで動作を確認する
➜ centos65 vagrant provision ==> default: Running provisioner: ansible... PLAY [default] **************************************************************** GATHERING FACTS *************************************************************** ok: [default] TASK: [install httpd] ********************************************************* ok: [default] TASK: [start and enable httpd] ************************************************ ok: [default] PLAY RECAP ******************************************************************** default : ok=3 changed=0 unreachable=0 failed=0
参考URL
Vagrant と Ansible を組み合わせて使う | CUBE SUGAR STORAGE
Ansible - Provisioning - Vagrant Documentation
vagrant - Ansible コトハジメ - Qiita