溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何建立一個Ansible實驗室

發(fā)布時間:2021-10-25 11:35:30 來源:億速云 閱讀:133 作者:小新 欄目:系統(tǒng)運維

小編給大家分享一下如何建立一個Ansible實驗室,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!


工具和軟件

本方案使用以下工具和軟件:

  • Ansible 是我們選擇的自動化工具,因為它易于使用,而且足夠靈活,可以滿足實驗室的要求。

  • Vagrant 易于使用,用于構(gòu)建和維護虛擬機。

  • VirtualBox 是一個托管管理程序,可以在 Windows 和 Linux 環(huán)境中使用。

  • Fedora v30+ 是我本地機器上的操作系統(tǒng)。

你必須進行以下設(shè)置才能建立環(huán)境:

  • 一個互聯(lián)網(wǎng)連接

  • 在 BIOS 中啟用虛擬化技術(shù)支持(以下是在我的聯(lián)想筆記本上的過程)

  • Vagrant v2.2.9

  • 最新版本的 Ansible

  • 最新版本的 VirtualBox

  • Fedora v30+ 宿主機操作系統(tǒng)

這個實驗室環(huán)境有什么?

這個項目旨在部署一個帶有 Ansible 引擎和多個 Linux 節(jié)點的 Ansible 主機,以及一些預加載和預配置的應用程序(httpd 和 MySQL)。它還啟用了 Cockpit,這樣你就可以在測試過程中監(jiān)控虛擬機(VM)的狀態(tài)。使用預部署的應用程序的原因是為了提高效率(所以你不必花時間安裝這些組件)。這樣你就可以專注于創(chuàng)建角色和劇本,并針對上述工具部署的環(huán)境進行測試。

我們確定,對于我們的用例來說,最好的方案是多機 Vagrant 環(huán)境。Vagrant 文件創(chuàng)建了三個 CentOS 虛擬機,以模擬兩個目標主機和一個 Ansible 控制機。

  • Host1: 沒有圖形用戶界面(GUI),安裝 httpd 和 MySQL

  • Host2: 沒有 GUI,安裝了 httpd 和 MySQL

  • Ansible-host:沒有 GUI,安裝了 Ansible 引擎

啟用多個管理程序

如果使用了多個管理程序,一些管理程序可能不允許你拉起虛擬機。要解決這個問題,請遵循以下步驟(基于 Vagrant 的安裝說明)。

首先,找出管理程序的名稱:

$ lsmod | grep kvmkvm_intel             204800  6kvm                   593920  1 kvm_intelirqbypass              16384  1 kvm

我感興趣的是 kvm_intel,但你可能需要另一個(比如 kvm_amd)。

以 root 身份運行以下內(nèi)容,將該管理程序列入黑名單:

$ echo 'blacklist kvm-intel' >> /etc/modprobe.d/blacklist.conf

重新啟動你的機器并嘗試再次運行 Vagrant。

Vagrant 文件

cat Vagrantfile
# -*- mode: ruby -*-# vi: set ft=ruby : Vagrant.configure("2") do |config|# Define VMs with static private IP addresses, vcpu, memory and vagrant-box.  boxes = [    {      :name => "web1.demo.com", ⇒ Host1 this is one of the target nodes      :box => "centos/8",             ⇒ OS version      :ram => 1024,                   ⇒ Allocated memory      :vcpu => 1,               ⇒  Allocated CPU      :ip => "192.168.29.2"     ⇒ Allocated IP address of the node    },    {      :name => "web2.demo.com", ⇒ Host2 this is one of the target nodes      :box => "centos/8",      :ram => 1024,      :vcpu => 1,      :ip => "192.168.29.3"    },    {      :name => "ansible-host", ⇒ Ansible Host with Ansible Engine      :box => "centos/8",      :ram => 8048,      :vcpu => 1,      :ip => "192.168.29.4"    }  ]   # Provision each of the VMs.  boxes.each do |opts|    config.vm.define opts[:name] do |config|#   Only Enable this if you are connecting to Proxy server#      config.proxy.http    = "http://usernam:password@x.y:80"⇒ Needed if you have a proxy#      config.proxy.https   = "http://usernam:password@x.y:80"#      config.proxy.no_proxy = "localhost,127.0.0.1"      config.vm.synced_folder ".", "/vagrant", id: "vagrant-root", disabled: true      config.ssh.insert_key = false      config.vm.box = opts[:box]      config.vm.hostname = opts[:name]      config.vm.provider :virtualbox do |v| ⇒  Defines the vagrant provider        v.memory = opts[:ram]        v.cpus = opts[:vcpu]      end      config.vm.network :private_network, ip: opts[:ip]      config.vm.provision :file do |file|         file.source     = './keys/vagrant' ⇒ vagrant keys to allow access to the nodes         file.destination    = '/tmp/vagrant' ⇒ the location to copy the vagrant key      end      config.vm.provision :shell, path: "bootstrap-node.sh" ⇒ script that copy hosts entry      config.vm.provision :ansible do |ansible| ⇒ declaration to run ansible playbook        ansible.verbose = "v"        ansible.playbook = "playbook.yml" ⇒ the playbook used to configure the hosts      end        end  endend

這些是你需要注意的重要文件。

  • inventory-test.yaml:連接到節(jié)點的清單文件

  • playbook.yaml:Vagrant 供應者調(diào)用的用于配置節(jié)點的劇本文件

  • `Vagrantfile':Vagrant 用來部署環(huán)境的文件

  • Vagrant 密鑰文件:連接實驗室環(huán)境中各節(jié)點的 Vagrant 密鑰

你可以根據(jù)你的需要調(diào)整這些文件。Ansible 的靈活性使你有能力根據(jù)你的需要聲明性地改變你的環(huán)境。

部署你的實驗室環(huán)境

首先,克隆這個 GitHub 倉庫 中的代碼:

$ git clone https://github.com/mikecali/ansible-labs-101.gitCloning into 'ansible-labs-101'...remote: Enumerating objects: 15, done.remote: Counting objects: 100% (15/15), done.remote: Compressing objects: 100% (13/13), done.remote: Total 15 (delta 2), reused 10 (delta 0), pack-reused 0Unpacking objects: 100% (15/15), 6.82 KiB | 634.00 KiB/s, done.

接下來,將你的目錄改為 vagrant-session-2,并查看其內(nèi)容:

$ lsBootstrap-node.sh   inventory   keys   playbook.yml   README.md Vagrantfile

現(xiàn)在你已經(jīng)擁有了實驗室環(huán)境所需的所有工件和配置文件。要部署環(huán)境,請運行:

$ vagrant up

只要有一個像樣的網(wǎng)絡(luò)連接,只需要 20 分鐘左右就可以得到一個運行環(huán)境:

$ vagrant upBringing machine 'web1.demo.com' up with 'virtualbox' provider...Bringing machine 'web2.demo.com' up with 'virtualbox' provider...Bringing machine 'ansible-host' up with 'virtualbox' provider...==> web1.demo.com: Importing base box 'centos/8'...==> web1.demo.com: Matching MAC address for NAT networking...==> web1.demo.com: Checking if box 'centos/8' version '1905.1' is up to date...==> web1.demo.com: Setting the name of the VM: ansible-labs_web1democom_1606434176593_70913==> web1.demo.com: Clearing any previously set network interfaces...==> web1.demo.com: Preparing network interfaces based on configuration...    web1.demo.com: Adapter 1: nat    web1.demo.com: Adapter 2: hostonly==> web1.demo.com: Forwarding ports...    web1.demo.com: 22 (guest) => 2222 (host) (adapter 1)==> web1.demo.com: Running 'pre-boot' VM customizations...==> web1.demo.com: Booting VM...==> web1.demo.com: Waiting for machine to boot. This may take a few minutes...    web1.demo.com: SSH address: 127.0.0.1:2222    web1.demo.com: SSH username: vagrant    web1.demo.com: SSH auth method: private key[...]

一旦該劇本執(zhí)行完成,你會看到這樣的輸出:

PLAY RECAP *********************************Ansible-host     : ok=20 changed=11 unreachable=0 failed=0 skipped=0 rescued=0 ignored=3 Real 18m14.288sUser 2m26.978sSys 0m26.849s

確認所有虛擬機都在運行:

$ vagrant statusCurrent machine states: Web1.demo.com    running (virtualbox)Web2.demo.com    running (virtualbox)ansible-host     running (virtualbox)[...]

你可以通過登錄其中一個虛擬機進一步調(diào)查。訪問 ansible-host

> vagrant ssh ansible-hostActivate the web console with: systemctl enable --now cockpit.socket Last login: Thu Nov 26 12:21:23 2020 from 10.0.2.2[vagrant@ansible-host ~] uptime16:46:42 up 1:24, 1 user, load average: 0.00, 0.01, 0.04

最后,你可以使用 Ansible 模塊來 ping 你創(chuàng)建的其他節(jié)點:

[vagrant@ansible-host]$ ansible -i inventory-test.yaml \webservers -m ping -u vagrant192.168.29.2 | SUCCESS => {  "Ansible-facts": {      "Discovered_interpreter_python": "/usr/libexec/platform-python"    },    "Changed": false;    "Ping": "pong"}[...]

清理

運行如下命令來清理環(huán)境:

$ vagrant destroy [vagrant machine name]

你的輸出會像這樣:

如何建立一個Ansible實驗室

以上是“如何建立一個Ansible實驗室”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI