用 Ansible 來交付 Vagrant 例項

2021-09-23 15:58:19 字數 4513 閱讀 4087

ansible 是一款系統管理員進行自動化運維的強大工具。ansible 讓配置、交付、管理各種容器、軟體部署變得非常簡單。基於輕量級模組的架構非常適合系統管理,乙個優點就是如果某個節點沒有被 ansible 管理的話,它的資源就不會被使用。

這篇文章介紹用 ansible 來配置 vagrant 例項,它是乙個配置好的基礎虛擬機器映像,包含了開發環境中需要用到的工具。你可以用它來部署開發環境,然後和其他成員協同工作。用 ansible,你可以用你的開發包自動化交付 vagrant 例項。

我們用 fedora 24 做主機,用 centos 7 來作 vagrant 例項。

在用 ansible 配置 vagrant 例項時,你需要做幾件準備的事情。首先在宿主機上安裝 ansible 和 vagrant,在你的主機上執行下面的命令來安裝:

sudo

dnf install ansible vagrant vagrant

-libvirt

上面的命令將 ansible 和 vagrant 在你的宿主機上,以及包括 vagrant 的 libvirt 介面。vagrant 並沒有提供託管你的虛擬機器的功能,它需要第三方工具比如:libirt、virtualbox、vmware 等等。這些工具可以直接與你的 fedora 系統上的 libvirt 和 kvm 協同工作。

接著確認你的賬戶在正確的 wheel 使用者組當中,確保你可以執行系統管理員命令。如果你的賬號在安裝過程中就建立為管理員,那麼你就肯定在這個使用者組裡。執行下面的命令檢視:

id

|grep

wheel

如果你能看到輸出,那麼你的賬戶就在這個組裡,可以進行下一步。如果沒有的話,你需要執行下面的命令,這一步需要你提供 root 賬戶的密碼,將 換成你的使用者名稱:

su-c 

'usermod -a -g wheel '

然後,你需要登出然後重新登入,確保在使用者組裡。

現在要建立你的第乙個 vagrant 例項了,你需要用 ansible 來配置它。

配置乙個映象例項之前,你需要先建立它。建立乙個目錄,存放 vagrant 例項相關的檔案,並且將它作為當前工作目錄,用下面這條命令:

mkdir-p 

~/lampbox && cd ~/

lampbox

在建立映象例項之前,你需要搞清楚目的,這個映象例項是乙個執行 centos 7 基礎系統,模板包括 apache 的 web 服務,mariadb(mysql 原開發者建立的乙個流行的開源資料庫)資料庫和 php 服務。

初始化 vagrant 例項,用vagrant init命令:

vagrant 

init

centos

/7這個命令初始化 vagrant 例項,並建立乙個名為 vagrantfile 的檔案,包含一些預先配置的變數。開啟並編輯它,下面的命令顯示了用於這次配置的基本映象例項。

config.vm

.box

="centos/7"

現在設定埠**,以便你配置完畢 vagrant 例項並讓它執行起來之後可以測試它。將下述配置加入到 vagrantfile 的最終的end語句之前:

config.vm

.network

"forwarded_port"

,guest:80

,host

:8080

這個命令將 vagrant 例項 的 80 埠對映為主機的 8080 埠。

下一步是設定 ansible 作為配置 vagrant 例項的工具,將下述配置加入到 vagrantfile 最終的end語句之前,將 ansible 作為配置工具provisioning provider:

config.vm

.provision

:ansible do|

ansible

|ansible

.playbook

="lamp.yml"

end

(必須將這三行在最後的end語句之前加入)注意ansible.playbook = "lamp.yml"這一句定義了配置映象例項的 ansible playbook 的名字。

在 ansible 之中,playbook 是指在你的遠端節點執行的策略,換句話說,它管理遠端節點的配置和部署。詳細的說,playbook 是乙個 yaml 檔案,在裡面寫入你要在遠端節點上將要執行的任務。所以,你需要建立乙個名為 lamp.yml 的 playbook 來配置映象例項。

在 vagrantfile 相同的目錄裡建立乙個 lamp.yml 檔案,將下面的內容貼上到檔案當中:

每一行代表的意思:

當 playbook 執行時,它會安裝最新的 apache web 服務(http),mariadb 和 php。當安裝完畢並啟動防火牆 firewalld,給 apache 開啟乙個埠。你可以通過編寫 playbook 來完成這些。現在可以配置它了。

用 ansible 配置 vagrant 例項只需要以下幾步了:

vagrant up 

--provider libvirt

如果一切正常,輸出應該和下面的例子類似:

這個輸出顯示映象例項已經被配置好了,現在檢查服務是否可用,在宿主機上開啟瀏覽器,輸入http://localhost:8080,記住本地主機的 8080 埠是 vagrant 例項對映過來的 80 埠。你應該可以看到如下的 apache 的歡迎介面。

要修改你的 vagrant 例項,你可以修改 lamp.yml,你能從 ansible 的官網上找到很多文章。然後執行下面的命令來重新配置:

vagrant provision現在我們知道怎麼用 ansible 來配置 vagrant 例項了。這只是乙個基本的例子,但是你可以用這些工具來實現不同的例子。比如你可以用所需工具的最新版本來部署乙個完整的應用。現在你可以用 ansible 來配置你自己的遠端伺服器和容器了。

原文發布時間為:2016-10-21

用ioclt 來設定路由

include include include include include include include int main char args memset route,0,sizeof route addr struct sockaddr in route.rt gateway addr s...

用template 來開發dojo widget

dojo 提供了一套模板機制來做widget.可以寫一段widget的html 執行時就可以把這段html替換到dom裡面.參考這裡 http dojotoolkit.org book dojo book 0 9 part 3 programmatic dijit and dojo manipula...

用Liberator來執行Torpedo測試

即使沒有對torpeodo 進行優化,liberator pe還是在torpedo拿到了高分 test result sumabc defg hliberator pe 1.2 beta 242 2222 257 下面我們將一步步地向您介紹如何用liberator pe來執行torpedo測試。li...