使用 Vagrant 和 Ansible 快速构建开发环境
使用Vagrant和Ansible快速构建开发环境。
在公司,当需要时,我们使用这种方法构建开发环境。
这次我们将尝试自动化到显示 “Hello World!” 的Web服务器。
目标
-
- Ansible初心者
- Ansibleに興味がある人
上一篇文章
-
- Vagrant Boxをイチから作る!(備忘録)
- Vagrant入門
事前准备
-
- Ansible用サーバと、開発用サーバをVagrantで作っておきます
-
- 本記事では下記の設定を前提に書いています
Ansible用サーバ(192.168.33.10)
開発用サーバ(192.168.33.11)
将Ansible安装到服务器上。
添加EPEL存储库。
- Minimal InstallだとEPELリポジトリがないので追加します
$ sudo yum -y install epel-release
- ansibleのインストール
$ sudo yum -y install ansible
ansible-playbook 的描述
文件结构图
- hosts
- playbook.yml
- roles
- httpd
- tasks
- main.yml
- templates
- index.html.j2
主持人的说明
$ vim hosts
[develop]
192.168.33.11
playbook.yml的内容
$ vim playbook.yml
- hosts: all
remote_user: vagrant
sudo: yes
roles:
- httpd
主要.yml的内容
$ mkdir roles
$ mkdir roles/httpd
$ mkdir roles/httpd/tasks
$ mkdir roles/httpd/templates
$ vim roles/httpd/tasks/main.yml
- name: httpd install
yum: name=httpd state=latest
- name: service httpd start
service: name=httpd state=started enabled=yes
- name: set index.html
template: src=index.html.j2 dest=/var/www/html/index.html backup=yes
$ vim roles/httpd/templates/index.html.j2
<h1>Hello World!</h1>
执行ansible-playbook
执行目标的通讯确认
$ ansible develop -i hosts -m ping -k
The authenticity of host '192.168.33.11 (192.168.33.11)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
SSH password: vagrant
192.168.33.11 | success >> {
"changed": false,
"ping": "pong"
}
确认执行对象
$ ansible-playbook -l develop playbook.yml -i hosts --list-host
playbook: playbook.yml
play #1 (all): host count=1
192.168.33.11
执行剧本。
$ ansible-playbook -l develop playbook.yml -i hosts -k -K
SSH password: vagrant
SUDO password[defaults to SSH password]: varant
PLAY [all] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.33.11]
TASK: [httpd | httpd install] *************************************************
changed: [192.168.33.11]
TASK: [httpd | service httpd start] *******************************************
changed: [192.168.33.11]
TASK: [httpd | set index.html] ************************************************
changed: [192.168.33.11]
PLAY RECAP ********************************************************************
192.168.33.11 : ok=4 changed=3 unreachable=0 failed=0
只需一个翻译选项:
在开发服务器上确认
http://192.168.83.11/ にアクセスし、Hello World!と表示されれば成功!
应用
我将Web应用服务器和数据库服务器分开,并编写了一个能够自动构建应用和数据库的ansible-playbook。我将它公开在我的GitHub上,欢迎您查看。
https://github.com/kkarakawa/scraping-ansible
关于已完成的应用程序,不接受任何评论。