您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“如何使用Ansible來交付Vagrant”,內容詳細,步驟清晰,細節處理妥當,希望這篇“如何使用Ansible來交付Vagrant”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
ansible是新出現的自動化運維工具,基于Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。
在用 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 作為配置工具:
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 運行是需要執行的任務,在這一節之下:
當 playbook 運行時,它會安裝最新的 Apache Web 服務(http),MariaDB 和 PHP。當安裝完畢并啟動防火墻 firewalld,給 Apache 打開一個端口。你可以通過編寫 playbook 來完成這些。現在可以配置它了。
用 Ansible 配置 Vagrant 實例只需要以下幾步了:
vagrant up --provider libvirt
上面的命令運行 Vagrant 實例,將實例的基礎鏡像下載到宿主機當中(如果還沒下載的話),然后運行 lamp.yml 來進行配置。
如果一切正常,輸出應該和下面的例子類似:
這個輸出顯示鏡像實例已經被配置好了,現在檢查服務是否可用,在宿主機上打開瀏覽器,輸入 http://localhost:8080,記住本地主機的 8080 端口是 Vagrant 實例映射過來的 80 端口。你應該可以看到如下的 Apache 的歡迎界面。
要修改你的 Vagrant 實例,你可以修改 lamp.yml,然后運行下面的命令來重新配置:
vagrant provision
讀到這里,這篇“如何使用Ansible來交付Vagrant”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。