📘
現代 IT 人一定要知道的 Ansible 自動化組態技巧
  • README
  • 前言
  • Ansible 是什麼?
  • 怎麼部署 Ansible 環境?
  • 怎麼用 Vagrant 練習 Ansible?
  • 怎麼用 Docker 練習 Ansible?
  • 怎麼操作 Ansible?
  • 怎麼用 Jupyter 操控 Ansible?(localhost)
  • 怎麼用 Jupyter 操控 Ansible?(Managed node)
  • 怎麼用 Docker Compose 練習 Ansible?
  • Ansible 的開發工具有哪些?
  • 怎麼看 Ansible Modules 文件?
  • 常用的 Ansible Module 有哪些?
  • 怎麼使用 setup 取得 Managed node 的 facts?
  • 怎麼使用 Ansible 的 Template 系統?
  • 怎麼在 Playbooks 裡使用 Handlers?
  • Ansible 如何發送 notification 到 Slack?
  • Ansible 如何發送 notification 到 HipChat?
  • 如何在 Playbooks 使用 loops?
  • 如何維護大型的 Playbooks?
  • Roles 是什麼?
  • 怎麼使用 Roles?
  • 怎麼用 Roles 部署 LNMP 網頁應用程式?(上)
  • 怎麼用 Roles 部署 LNMP 網頁應用程式?(下)
  • 怎麼用 Roles 部署 TestLink?
  • 怎麼在 Ansible Galaxy 分享 Roles?(上)
  • 怎麼在 Ansible Galaxy 分享 Roles?(下)
  • 怎麼用 Travis CI 測試 Roles?
  • 怎麼混用 Ansible 建置 Docker image?
  • 怎麼在 Docker Hub 混用 Ansible 自動建置 Docker image?
  • 怎麼用 Vault 管理敏感資料?
  • 總結
Powered by GitBook
On this page
  • 24. 怎麼用 Roles 部署 TestLink?
  • chusiang.testlink 是什麼?
  • 怎麼用 Roles 撰寫最精簡的 Playbooks?
  • 後語
  • 相關連結

Was this helpful?

Edit on GitHub

怎麼用 Roles 部署 TestLink?

Previous怎麼用 Roles 部署 LNMP 網頁應用程式?(下)Next怎麼在 Ansible Galaxy 分享 Roles?(上)

Last updated 5 years ago

Was this helpful?

24. 怎麼用 Roles 部署 TestLink?

上一章「」我們用了 3 個 Roles 和自己寫的 Playbook 部署 Testlink 網頁應用程式,接下來凍仁會透過 Roles 展示最精簡的 Playbooks。

chusiang.testlink 是什麼?

怎麼用 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

  1. 建立 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/
  1. 藉由 requirements.yml 下載多個 Roles。

$ ansible-galaxy install -f -p roles -r requirements.yml

撰寫 Playbooks

$ 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

  1. 啟用虛擬機並執行 Playbook。

$ vagrant up

以上,這次我們只需維護 ansible.cfg, hosts, requirements.yml 和 setup.yml,剩下就交給 Roles 吧!

後語

在完成這篇文章的同時,凍仁也順手修了一下 chusiang.testlink role 的小小 bug。相信當越多人分享 Roles 到 Galaxy 後,我們可以減少重複性質的工作,並把時間和精力留在更重要的事情上。

相關連結

是部署 TestLink 1.9.15 到 Ubuntu 14.04 和 Debian 8 的 Role,並建置在 Nginx 1.10, PHP 7 和 MySQL 5.6 的環境上。

凍仁先前幫公司架設 TestLink 時,在 和 上找不到現成 Roles 和 Cookbooks,索性就自己寫一個。

為便於解說,凍仁將於以下範例加上行號,其原始檔可在 取得。

執行完畢後,開啟瀏覽器 (Browsers) 並進入 TestLink 網站 (),其帳號密碼皆為 admin。

chusiang.testlink
Ansible Galaxy
Chef Supermarket
lab/ch24/testlink/setup.yml
http://192.168.33.10
chusiang.testlink | Ansible Galaxy
chusiang/testlink.ansible.role | GitHub
23. 怎麼用 Roles 部署 LNMP 網頁應用程式?(下)
automate_with_ansible_practice-27.jpg
2016-12-24-chusiang-testlink-role.png
2016-12-24-ansible-testlink-1.gif
2016-12-23-ansible-testlink-2.gif