偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

20 分鐘建立一個(gè) Ansible 實(shí)驗(yàn)室

系統(tǒng) Linux
本文將解釋如何在 20 分鐘內(nèi)以完全自動(dòng)化的方式在本地機(jī)器上部署自己的實(shí)驗(yàn)室環(huán)境。

[[361417]]

建立一個(gè)支持學(xué)習(xí)和實(shí)驗(yàn)新軟件的環(huán)境。

能夠構(gòu)建和拆解公有云環(huán)境是非常有用的,但我們大多數(shù)人都不能輕松訪問(wèn)公有云。退而求其次的最好辦法就是在本地機(jī)器上建立一個(gè)實(shí)驗(yàn)室,但即使在本地機(jī)器上運(yùn)行也會(huì)帶來(lái)性能、靈活性和其他挑戰(zhàn)。大多數(shù)時(shí)候,本地機(jī)器上額外的工作負(fù)載會(huì)干擾我們?nèi)粘5墓ぷ鳎鼈儺?dāng)然也會(huì)影響你提供一個(gè)現(xiàn)成的環(huán)境來(lái)玩耍和實(shí)驗(yàn)新軟件。

幾年前,當(dāng)我和我的團(tuán)隊(duì)開(kāi)始學(xué)習(xí) Ansible 時(shí),我們就遇到了這個(gè)挑戰(zhàn)。我們找不到一個(gè)可以單獨(dú)使用的環(huán)境,我們對(duì)這種情況的失望導(dǎo)致我們中的一些人停止了實(shí)驗(yàn)。我們知道需要找到一個(gè)解決方案。

我們花了很多時(shí)間研究各種方案,得出了一套工具,使我們的好奇心能夠在我們完全控制的環(huán)境中學(xué)習(xí)。我們可以在本地機(jī)器上輪換和拆解實(shí)驗(yàn)室環(huán)境,而不需要訪問(wèn)內(nèi)部實(shí)驗(yàn)室或公共云。

本文將解釋如何在 20 分鐘內(nèi)以完全自動(dòng)化的方式在本地機(jī)器上部署自己的實(shí)驗(yàn)室環(huán)境。

你可以在我的 GitHub 倉(cāng)庫(kù)中找到這個(gè)練習(xí)的所有代碼。

工具和軟件

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

  • Ansible 是我們選擇的自動(dòng)化工具,因?yàn)樗子谑褂?,而且足夠靈活,可以滿足實(shí)驗(yàn)室的要求。
  • Vagrant 易于使用,用于構(gòu)建和維護(hù)虛擬機(jī)。
  • VirtualBox 是一個(gè)托管管理程序,可以在 Windows 和 Linux 環(huán)境中使用。
  • Fedora v30+ 是我本地機(jī)器上的操作系統(tǒng)。

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

  • 一個(gè)互聯(lián)網(wǎng)連接
  • 在 BIOS 中啟用虛擬化技術(shù)支持(以下是在我的聯(lián)想筆記本上的過(guò)程
  • Vagrant v2.2.9
  • 最新版本的 Ansible
  • 最新版本的 VirtualBox
  • Fedora v30+ 宿主機(jī)操作系統(tǒng)

這個(gè)實(shí)驗(yàn)室環(huán)境有什么?

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

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

  • Host1: 沒(méi)有圖形用戶(hù)界面(GUI),安裝 httpd 和 MySQL
  • Host2: 沒(méi)有 GUI,安裝了 httpd 和 MySQL
  • Ansible-host:沒(méi)有 GUI,安裝了 Ansible 引擎

啟用多個(gè)管理程序

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

首先,找出管理程序的名稱(chēng):

  1. $ lsmod | grep kvm
  2. kvm_intel             204800  6
  3. kvm                   593920  1 kvm_intel
  4. irqbypass              16384  1 kvm

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

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

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

重新啟動(dòng)你的機(jī)器并嘗試再次運(yùn)行 Vagrant。

Vagrant 文件

  1. cat Vagrantfile
  1. # -*- mode: ruby -*-
  2. # vi: set ft=ruby :
  3.  
  4. Vagrant.configure("2") do |config|
  5. # Define VMs with static private IP addresses, vcpu, memory and vagrant-box.
  6. boxes = [
  7. {
  8. :name => "web1.demo.com", Host1 this is one of the target nodes
  9. :box => "centos/8", OS version
  10. :ram => 1024, Allocated memory
  11. :vcpu => 1, Allocated CPU
  12. :ip => "192.168.29.2" Allocated IP address of the node
  13. },
  14. {
  15. :name => "web2.demo.com", Host2 this is one of the target nodes
  16. :box => "centos/8",
  17. :ram => 1024,
  18. :vcpu => 1,
  19. :ip => "192.168.29.3"
  20. },
  21. {
  22. :name => "ansible-host", Ansible Host with Ansible Engine
  23. :box => "centos/8",
  24. :ram => 8048,
  25. :vcpu => 1,
  26. :ip => "192.168.29.4"
  27. }
  28. ]
  29.  
  30. # Provision each of the VMs.
  31. boxes.each do |opts|
  32. config.vm.define opts[:name] do |config|
  33. # Only Enable this if you are connecting to Proxy server
  34. # config.proxy.http = "http://usernam:password@x.y:80" Needed if you have a proxy
  35. # config.proxy.https = "http://usernam:password@x.y:80"
  36. # config.proxy.no_proxy = "localhost,127.0.0.1"
  37. config.vm.synced_folder ".", "/vagrant", id: "vagrant-root", disabled: true
  38. config.ssh.insert_key = false
  39. config.vm.box = opts[:box]
  40. config.vm.hostname = opts[:name]
  41. config.vm.provider :virtualbox do |v| Defines the vagrant provider
  42. v.memory = opts[:ram]
  43. v.cpus = opts[:vcpu]
  44. end
  45. config.vm.network :private_network, ip: opts[:ip]
  46. config.vm.provision :file do |file|
  47. file.source = './keys/vagrant' vagrant keys to allow access to the nodes
  48. file.destination = '/tmp/vagrant' the location to copy the vagrant key
  49. end
  50. config.vm.provision :shell, path: "bootstrap-node.sh" script that copy hosts entry
  51. config.vm.provision :ansible do |ansible| declaration to run ansible playbook
  52. ansible.verbose = "v"
  53. ansible.playbook = "playbook.yml" the playbook used to configure the hosts
  54. end
  55. end
  56. end
  57. end

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

  • inventory-test.yaml:連接到節(jié)點(diǎn)的清單文件
  • playbook.yaml:Vagrant 供應(yīng)者調(diào)用的用于配置節(jié)點(diǎn)的劇本文件
  • `Vagrantfile':Vagrant 用來(lái)部署環(huán)境的文件
  • Vagrant 密鑰文件:連接實(shí)驗(yàn)室環(huán)境中各節(jié)點(diǎn)的 Vagrant 密鑰

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

部署你的實(shí)驗(yàn)室環(huán)境

首先,克隆這個(gè) GitHub 倉(cāng)庫(kù) 中的代碼:

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

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

  1. $ ls
  2. Bootstrap-node.sh   inventory   keys   playbook.yml   README.md Vagrantfile

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

  1. $ vagrant up

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

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

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

  1. PLAY RECAP *********************************
  2. Ansible-host     : ok=20 changed=11 unreachable=0 failed=0 skipped=0 rescued=0 ignored=3
  3.  
  4. Real 18m14.288s
  5. User 2m26.978s
  6. Sys 0m26.849s

確認(rèn)所有虛擬機(jī)都在運(yùn)行:

  1. $ vagrant status
  2. Current machine states:
  3.  
  4. Web1.demo.com    running (virtualbox)
  5. Web2.demo.com    running (virtualbox)
  6. ansible-host     running (virtualbox)
  7. [...]

你可以通過(guò)登錄其中一個(gè)虛擬機(jī)進(jìn)一步調(diào)查。訪問(wèn) ansible-host

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

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

  1. [vagrant@ansible-host]$ ansible -i inventory-test.yaml \
  2. webservers -m ping -u vagrant
  3. 192.168.29.2 | SUCCESS => {
  4.   "Ansible-facts": {
  5.       "Discovered_interpreter_python": "/usr/libexec/platform-python"
  6.     },
  7.     "Changed": false;
  8.     "Ping": "pong"
  9. }
  10. [...]

清理

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

  1. $ vagrant destroy [vagrant machine name]

你的輸出會(huì)像這樣:

 

Output from cleaning up environment

有創(chuàng)意的學(xué)習(xí)

在自己的實(shí)驗(yàn)室里利用自己的時(shí)間學(xué)習(xí) Ansible 這樣的軟件是一個(gè)好習(xí)慣,但由于受到無(wú)法控制的限制,可能會(huì)很困難。

有時(shí)候,你需要發(fā)揮創(chuàng)意,找到另一種方法。在開(kāi)源社區(qū)中,你可以選擇很多方案;我們選擇這些工具的主要原因之一是,它們是許多人常用和熟悉的。

 

另外,請(qǐng)注意,這些劇本并沒(méi)有按照我的要求進(jìn)行優(yōu)化。

 

責(zé)任編輯:龐桂玉 來(lái)源: Linux中國(guó)
相關(guān)推薦

2021-04-03 21:40:51

硬件防火墻家庭實(shí)驗(yàn)室

2021-12-30 09:40:33

CentOS家庭實(shí)驗(yàn)室Linux

2009-06-25 19:03:37

云計(jì)算IBMWeb

2023-11-29 14:18:32

2021-08-04 09:48:05

數(shù)字化

2015-02-06 09:23:52

賽可達(dá)實(shí)驗(yàn)室網(wǎng)絡(luò)安全

2015-10-10 11:23:49

2011-05-25 17:51:40

2015-07-16 16:28:13

Testin云測(cè)

2009-09-21 11:45:36

CCIE實(shí)驗(yàn)室考試

2014-11-27 10:52:17

vlan路由

2020-07-14 18:00:33

樹(shù)莓派網(wǎng)絡(luò)文件系統(tǒng)Linux

2013-04-07 09:38:00

HPC硬件HPC高性能計(jì)算

2023-08-09 15:11:26

FedoraLinux實(shí)驗(yàn)室

2010-08-23 14:01:25

互聯(lián)網(wǎng)

2014-06-16 14:45:26

曙光EB級(jí)云存儲(chǔ)實(shí)驗(yàn)室

2014-04-08 20:40:01

華為OpenDayligh

2009-09-01 16:41:00

思科認(rèn)證CCIEEdify

2009-11-07 20:55:30

2010-01-20 13:20:26

嵌入式設(shè)備實(shí)驗(yàn)室
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)