使用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执行时出错
参考网站

Vagrant 1.7+でSSH接続エラーが出た場合の対処法

    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将处理剩下的事情。

如果您能够参考这个,我会非常高兴。

广告
将在 10 秒后关闭
bannerAds