iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 8
0
DevOps

30 天入門 Ansible 及 Jenkins-CI系列 第 8

[Day 08] 透過 Vagrant 運行 playbook

===== 2018 年版本已更新 =====
2018 鐵人賽傳送門:https://ithelp.ithome.com.tw/users/20103346/ironman/1473
GitBook 傳送門:https://www.gitbook.com/book/tsoliangwu0130/learn-ansible-and-jenkins-in-30-days/details
=========================

透過 Vagrant 運行 playbook

Vagrant 如何運行 playbook?

除了直接使用 Ansible 的 ansible-playbook 指令來對遙控節點進行部署外,若我們是用 Vagrant 搭建虛擬主機的話,我們還可以利用 Vagrant 內建的配置 (provision) 功能直接運行 playbook。由於 Vagrant 已經知道管理主機的各項資訊,因此我們可以完全省略在上一個章節中設定 inventoryPRIVATE_KEY_FILE 的部分。

首先,在 Vagrantfile 中添加以下內容來告訴 Vagrant 要以哪個 playbook 來做部署配置

Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/precise64"
  config.vm.define "ironman"

  # run Ansible playbook from Vagrant host
  config.vm.provision "ansible" do |ansible|
    ansible.playbook = "playbook.yml"
  end
end

接下來我們只要在終端機運行以下指令,就可以看到與使用 ansible-playbook 指令完全一樣的結果:

$ vagrant provision

==> ironman: Running provisioner: ansible...
    ironman: Running ansible-playbook...

PLAY [ironman] *****************************************************************

TASK [setup] *******************************************************************
ok: [ironman]

TASK [test connection] *********************************************************
ok: [ironman]

TASK [print debug message] *****************************************************
ok: [ironman] => {
    "msg": {
        "changed": false,
        "ping": "pong"
    }
}

PLAY RECAP *********************************************************************
ironman                    : ok=3    changed=0    unreachable=0    failed=0

雖然透過 Vagrant 運行 playbook 的步驟容易許多,但必須注意的是,這個方法只限於我們使用 Vagrant 搭建虛擬機的時候才能使用。若今天我們需要直接部署配置到實體主機上,我們就無法透過 Vagrant 指揮遙控節點了。這也是為什麼我們還是必須知道如何使用最正規的方法運行 playbook 進行部署,這個章節的教學只是提供一點搭配的小技巧,讓讀者在練習或開發 Ansible playbook 的時候能夠節省更多時間。


上一篇
[Day 07] 透過 Ansible 運行 playbook
下一篇
[Day 09] 撰寫第一個 Ansible Role
系列文
30 天入門 Ansible 及 Jenkins-CI30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
凍仁翔
iT邦新手 3 級 ‧ 2016-12-08 15:59:52

vagrant provision 真的很方便!基本上開發 Ansible Playbooks 時凍仁都用它在開發!

我要留言

立即登入留言