文章插图
建立一个支持学习和实验新软件的环境 。• 来源:linux.cn • 作者:Mike Calizo • 译者:Xingyu.Wang •
(本文字数:7596,阅读时长大约:9 分钟)
能够构建和拆解公有云环境是非常有用的,但我们大多数人都不能轻松访问公有云 。退而求其次的最好办法就是在本地机器上建立一个实验室,但即使在本地机器上运行也会带来性能、灵活性和其他挑战 。大多数时候,本地机器上额外的工作负载会干扰我们日常的工作,它们当然也会影响你提供一个现成的环境来玩耍和实验新软件 。
几年前,当我和我的团队开始学习 Ansible 时,我们就遇到了这个挑战 。我们找不到一个可以单独使用的环境,我们对这种情况的失望导致我们中的一些人停止了实验 。我们知道需要找到一个解决方案 。
我们花了很多时间研究各种方案,得出了一套工具,使我们的好奇心能够在我们完全控制的环境中学习 。我们可以在本地机器上轮换和拆解实验室环境,而不需要访问内部实验室或公共云 。
本文将解释如何在 20 分钟内以完全自动化的方式在本地机器上部署自己的实验室环境 。
你可以在我的 GitHub 仓库 中找到这个练习的所有代码 。
工具和软件本方案使用以下工具和软件:
- Ansible 是我们选择的自动化工具,因为它易于使用,而且足够灵活,可以满足实验室的要求 。
- Vagrant 易于使用,用于构建和维护虚拟机 。
- VirtualBox 是一个托管管理程序,可以在 windows 和 Linux 环境中使用 。
- Fedora v30+ 是我本地机器上的操作系统 。
- 一个互联网连接
- 在 BIOS 中启用虚拟化技术支持(以下是在我的联想笔记本上的 过程 )
- Vagrant v2.2.9
- 最新版本的 Ansible
- 最新版本的 VirtualBox
- Fedora v30+ 宿主机操作系统
我们确定,对于我们的用例来说,最好的方案是多机 Vagrant 环境 。Vagrant 文件创建了三个 centos 虚拟机,以模拟两个目标主机和一个 Ansible 控制机 。
- Host1: 没有图形用户界面(GUI),安装 httpd 和 MySQL
- Host2: 没有 GUI,安装了 httpd 和 MySQL
- Ansible-host:没有 GUI,安装了 Ansible 引擎
首先,找出管理程序的名称:
$ lsmod | grep kvmkvm_intel 204800 6kvm 593920 1 kvm_intelirqbypass 16384 1 kvm
【20 分钟建立一个 Ansible 实验室】我感兴趣的是 kvm_intel,但你可能需要另一个(比如 kvm_amd) 。以 root 身份运行以下内容,将该管理程序列入黑名单:
$ 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
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 康熙皇帝被称为什么 康熙为什么是一个伟大的皇帝
- 光武帝刘秀与汉武帝的关系 为什么刘秀建立的汉朝为东汉
- 画大饼什么意思?
- 产前抑郁症的症状
- 康乾盛世是一个什么的时代 康乾盛世时期的西方国家
- 栀子金花丸
- 《聊斋志异》中比较恐怖的故事 请介绍一个聊斋志异中你印象深刻的故事
- 武则天发明的是哪一个字 武则天创造的十八个字
- 「算法」如何实现一个简易计算器
- 秦国第一个丞相王绾 汉武帝老师卫绾