LoginSignup
25
17

More than 5 years have passed since last update.

Ansible+VagrantでLAMP環境を構築

Last updated at Posted at 2015-12-26

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さんがやってくれます

参考にして頂けましたら幸いです

25
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
17