vagrantとAnsibleでローカル環境構築しようとする時に見て頂ければと思います
というのも自分が忘れそうになるので技術メモとして残したいという理由でもあります
■開発環境
MacOS
■使用バージョン
vagrant バージョン1.7.2
ansible バージョン1.9.1
■ansibleをインストール
インストール方法はいろいろありますが
今回はhomebrewを利用してansibleをインストールします
homebrewを事前にインストールしておく必要があります
$ brew install ansible
インストールができているか確認
$ brew ansible --version
ansible 1.9.1
とりあえずインストールは完了
■作業場所のディレクトリを作成
$ mkdir mycentos
- boxの追加
今回はcentos6.5にしています
http://www.vagrantbox.es/
$ cd mycentos
$ vagrant box add centos65 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
成功すればboxが追加したのが分かります
$ vagrant box list
centos65 (virtualbox, 0)
- vagrantfileの作成
$ vagrant init centos65
- vagrantfileを編集
$ vim vagrantfile
#ホストOSからゲストOSに接続させる為のIPを設定
config.vm.network "private_network", ip: "192.168.33.99"
今回はvagrant upした時にansibleを走らせますので
vagrantfileにansibleの設定も書いてあげます
config.vm.provision "ansible" do |ansible|
ansible.playbook = "playbook.yml"
ansible.inventory_path = "hosts" #デフォルトは/etc/ansible/hostsを見に行く
ansible.limit = 'all'
end
ansible.playbookにplaybookのパスを設定
ansible.inventory_pathにinventryfileのパスを設定
vagrantの仕様でvagrant upした時、初回のみprovisionが走るようです
もし再度走らせたい場合は
$ vagrant provision
■Ansibleの設定
- inventryfile
今回は作業ディレクトリにhostsファイルを作成して、これを参照するようにします
[web]
192.168.33.99 ansible_ssh_private_key_file=.vagrant/machines/default/virtualbox/private_key ansible_ssh_user=vagrant
# ゲストOSのIPを指定させる
# sshのprivate_key設定
ssh private_keyを指定してやらないとansible実行時にエラーが出ます
参考サイト
http://mawatari.jp/archives/solution-of-vagrant-ssh-connection-error
- playbook
ここにインストールしたいミドルウェアや各種設定などを書いてやる
---
- hosts: web
sudo: yes
tasks:
- yum: name=vim state=latest
- name: install apache
yum: name=httpd state=present
- name: start apache and enabled
service: name=httpd state=started enabled=yes
- name: set epel repository
shell: rpm -Uvh --force http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
- name: set remi repository
command: sudo rpm -Uvh --force http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
- name: install php packages
yum: name={{item}} enablerepo=remi,epel state=present
with_items:
- php
- php-pear
- php-devel
- php-mbstring
- php-pdo
- php-mysql
- php-gd
- php-xdebug
notify:
- restart apache
- name: install mysql
yum: name={{ item }} enablerepo=remi,epel state=installed
with_items:
- mysql-server
- MySQL-python
notify:
- start mysql
handlers:
- name: restart apache
service: name=httpd state=restarted enabled=yes #enabled=yes 自動起動
- name: start mysql
service: name=mysqld state=started enabled=yes
#- name: mysql set password
# command: mysqladmin -u root password "{{ mysql_root_pw }}"
ちなみにplaybookではmysqlのユーザ作成やバーチャルホストの設定などもできます
playbookの設定が終わりましたらvagrant upします
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'chef/centos-6.5'...
.....以下略
↓↓↓↓↓↓↓ここからplaybookの実行↓↓↓↓↓↓↓
PLAY [web] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.33.99]
TASK: [yum name=vim state=latest] *********************************************
changed: [192.168.33.99]
TASK: [install apache] ********************************************************
changed: [192.168.33.99]
TASK: [start apache and enabled] **********************************************
changed: [192.168.33.99]
TASK: [set epel repository] ***************************************************
changed: [192.168.33.99]
TASK: [set remi repository] ***************************************************
changed: [192.168.33.99]
TASK: [install php packages] **************************************************
changed: [192.168.33.99] => (item=php,php-pear,php-devel,php-mbstring,php-pdo,php-mysql,php-gd,php-xdebug)
TASK: [install mysql] *********************************************************
changed: [192.168.33.99] => (item=mysql-server,MySQL-python)
NOTIFIED: [restart apache] ****************************************************
changed: [192.168.33.99]
NOTIFIED: [start mysql] *******************************************************
changed: [192.168.33.99]
PLAY RECAP ********************************************************************
192.168.33.99 : ok=10 changed=9 unreachable=0 failed=0
$ php --version
PHP 5.5.26 (cli) (built: Jun 10 2015 15:29:20)
...以下略
問題なくPHPがインストールされています
$ mysqld --version
mysqld Ver 5.6.24 for Linux on x86_64 (MySQL Community Server (GPL))
Mysqlも無事インストール
こんな感じでplaybookに設定してやればあとはAnsibleさんがやってくれます
参考にして頂けましたら幸いです