用 Ansible 來交付 Vagrant 例項
Ansible 是一款系統管理員進行自動化運維的強大工具。Ansible 讓配置、交付、管理各種容器、軟體部署變得非常簡單。基於輕量級模組的架構非常適合系統管理,一個優點就是如果某個節點沒有被 Ansible 管理的話,它的資源就不會被使用。
這篇文章介紹用 Ansible 來配置Vagrant 例項,它是一個配置好的基礎虛擬機器映像,包含了開發環境中需要用到的工具。你可以用它來部署開發環境,然後和其他成員協同工作。用 Ansible,你可以用你的開發包自動化交付 Vagrant 例項。
我們用 Fedora 24 做主機,用 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 賬戶的密碼,將 <username> 換成你的使用者名稱:
su -c 'usermod -a -G wheel <username>'
然後,你需要登出然後重新登入,確保在使用者組裡。
現在要建立你的第一個 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 作為配置工具:
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 檔案,將下面的內容貼上到檔案當中:
--- - hosts: all become: yes become_user: root tasks: - name: Install Apache yum: name=httpd state=latest - name: Install MariaDB yum: name=mariadb-server state=latest - name: Install PHP5 yum: name=php state=latest - name: Start the Apache server service: name=httpd state=started - name: Install firewalld yum: name=firewalld state=latest - name: Start firewalld service: name=firewalld state=started - name: Open firewall command: firewall-cmd --add-service=http --permanent
每一行代表的意思:
- hosts: all 指定該 playbook 需要在 Ansible 配置檔案中定義的所有主機上都執行,因為還沒定義主機, playbook 將只在本地執行。
- sudo: true 表明該任務需要用 root 許可權執行。(LCTT 譯註:此語句上述配置中缺失。)
- tasks: 指定當 playbook 執行是需要執行的任務,在這一節之下:
- name: ... 描述任務的名字
- yum: ... 描述該任務應該由 yum 模組執行,可選的 key=value 鍵值對將由 yum 模組所使用。
當 playbook 執行時,它會安裝最新的 Apache Web 服務(http),MariaDB 和 PHP。當安裝完畢並啟動防火牆 firewalld,給 Apache 開啟一個埠。你可以透過編寫 playbook 來完成這些。現在可以配置它了。
用 Ansible 配置 Vagrant 例項只需要以下幾步了:
vagrant up --provider libvirt
上面的命令執行 Vagrant 例項,將例項的基礎映象下載到宿主機當中(如果還沒下載的話),然後執行 lamp.yml 來進行配置。
如果一切正常,輸出應該和下面的例子類似:
這個輸出顯示映象例項已經被配置好了,現在檢查服務是否可用,在宿主機上開啟瀏覽器,輸入 ,記住本地主機的 8080 埠是 Vagrant 例項對映過來的 80 埠。你應該可以看到如下的 Apache 的歡迎介面。
要修改你的 Vagrant 例項,你可以修改 lamp.yml,然後執行下面的命令來重新配置:
vagrant provision
現在我們知道怎麼用 Ansible 來配置 Vagrant 例項了。這只是一個基本的例子,但是你可以用這些工具來實現不同的例子。比如你可以用所需工具的最新版本來部署一個完整的應用。現在你可以用 Ansible 來配置你自己的遠端伺服器和容器了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2934906/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用 Vagrant 測試 Ansible 劇本
- react-dva學習 --- 用例項來入門React
- cluster例項運用
- dd應用例項
- ”innerHTML“的應用例項HTML
- 7 個日常實用的 Shell 拿來就用指令碼例項!指令碼
- ansible高階應用ansible-vault
- 正規表示式例項蒐集,通過例項來學習正規表示式。
- redis應用場景及例項Redis
- 機器視覺應用例項視覺
- WebSocket 簡介及應用例項Web
- 14 個 SQL 拿來就用語句例項!SQL
- 呀!ASM例項起不來可咋整ASM
- php例項化物件的例項方法PHP物件
- eMarketer:各行業VR例項應用分析行業VR
- Google報告:大量被入侵的 Google Cloud 例項被用來挖掘加密貨幣GoCloud加密
- unittest例項
- OkHttpClient例項HTTPclient
- jQuery 例項jQuery
- Docker開發例項之應用場景Docker
- NCF的Dapr應用例項的執行
- 觀察者模式應用場景例項模式
- 英國政府部門RPA應用例項
- Hive 分析函式lead、lag例項應用Hive函式
- 基礎python5個例項運用Python
- Flutter中表單元件綜合運用例項Flutter元件
- Oracle minus用法詳解及應用例項Oracle
- face_recognition的5個應用例項
- Mybatis原始碼分析(三)通過例項來看typeHandlersMyBatis原始碼
- ansible/ansible
- 用 Ansible 部署無服務應用!
- Activiti的流程例項【ProcessInstance】與執行例項【Execution】
- 模板與例項在系統中的應用
- 小例項: 用vue實現手風琴效果Vue
- webpack+react+antd單頁面應用例項WebReact
- 用圖表和例項解釋 Await 和 AsyncAI
- 策略模式例項模式
- Draggable 拖拽例項