Ansible 用 Roles 部署 TestLink
上一章「Ansible 用 Roles 部署 LNMP 网页应用程式(下)」我们用了 3 个 Roles 和自己写的 Playbook 部署 Testlink 网页应用程式,接下来冻仁会透过 Roles 展示最精简的 Playbooks。
chusiang.testlink 是什么?
chusiang.testlink
是部署 TestLink 1.9.15 到 Ubuntu 14.04 和 Debian 8 的 Role,并建置在 Nginx 1.10, PHP 7 和 MySQL 5.6 的环境上。
冻仁先前帮公司架设 TestLink 时,在 Ansible Galaxy 和 Chef Supermarket 上找不到现成 Roles 和 Cookbooks,索性就自己写一个。
怎么用 Roles 撰写最精简的 Playbooks?
看下去之前,可以先回顾上章,比比看两者的差异。
使用 Vagrant 建立开发环境
建立 Vagrantfile 档案。
$ vi Vagrantfile
# -*- mode: ruby -*-
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
end
config.vm.provision "ansible" do |ansible|
ansible.playbook = "setup.yml"
ansible.sudo = true
#ansible.verbose = "vvv"
end
end
# vi: set ft=ruby :
从 Galaxy 下载 Roles
建立
requirements.yml
,与上章相比多了chusiang.testlink
role。$ vi requirements.yml # Nginx 1.10 - src: williamyeh.nginx path: roles/ # PHP 7 - src: chusiang.php7 path: roles/ # MySQL 5.6 - src: geerlingguy.mysql path: roles/ # TestLink 1.9.15 - src: chusiang.testlink path: roles/
借由
requirements.yml
下载多个 Roles。$ ansible-galaxy install -f -p roles -r requirements.yml
撰写 Playbooks
为便于解说,冻仁将于以下范例加上行号,其原始档可在 lab/ch24/testlink/setup.yml
取得。
$ vi setup.yml
01 #!/usr/bin/env ansible-playbook
02
03 ---
04 - name: deploy testlink with chusiang.testlink role
05 hosts: all
06 become: true
07
08 roles:
09 - williamyeh.nginx
10 - chusiang.php7
11 - geerlingguy.mysql
12 - chusiang.testlink
13
14 tasks:
15 - name: include check task
16 include: roles/chusiang.testlink/tasks/check.yml
17
18 post_tasks:
19 # Run some tests.
20 - include: roles/chusiang.testlink/tests/curl_testlink_web.yml
21
22 # vim:ft=ansible:
- 在第 8-12 行里,载入了 Nginx, MySQL, PHP 和 TestLink 的 Roles。
- 第 23 行之后的两个 tasks 是可省略的,这里只是为了验证部署状态而使用。
精简版的 TestLink Playbooks 档案结构
把 Playbooks 都封装成 Roles 之后,可明显看出整体的档案结构比上章简洁许多。
$ tree -L 2
.
├── Makefile
├── Vagrantfile
├── ansible.cfg
├── hosts
├── requirements.yml
├── roles
│ ├── chusiang.php7
│ ├── chusiang.testlink
│ ├── geerlingguy.mysql
│ └── williamyeh.nginx
└── setup.yml
5 directories, 6 files
执行 Playbooks
启用虚拟机并执行 Playbook。
$ vagrant up
执行完毕后,开启浏览器 (Browsers) 并进入 TestLink 网站 (http://192.168.33.10),其帐号密码皆为
admin
。
以上,这次我们只需维护 ansible.cfg
, hosts
, requirements.yml
和 setup.yml
,剩下就交给 Roles 吧!
后话
在完成这篇文章的同时,冻仁也顺手修了一下 chusiang.testlink
role 的小小 bug。相信当越多人分享 Roles 到 Galaxy 后,我们可以减少重复性质的工作,并把时间和精力留在更重要的事情上。
更多建议: