使用Ansible和Vagrant搭建LAMP环境
希望你能在使用Vagrant和Ansible搭建本地环境时,给予一些建议。这是因为我担心自己会忘记,同时也希望将其作为技术备忘录留下来。
■开发环境
苹果电脑操作系统MacOS
■版本使用
vagrant版本为1.7.2,
ansible版本为1.9.1。
请安装Ansible。
有多种安装方法,但本次将使用Homebrew进行安装。
请务必在安装之前先安装Homebrew。
$ brew install ansible
请确认安装是否已完成。
$ brew ansible --version
ansible 1.9.1
暂时安装完成
创建工作目录
$ mkdir mycentos
- boxの追加
这次我们选择了CentOS 6.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
如果成功的话,你就会看到有一个盒子被添加了进去。
$ 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设置为inventory文件的路径
在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私钥,会在ansible执行时出错
参考网站
- 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将处理剩下的事情。
如果您能够参考这个,我会非常高兴。