广告
返回顶部
首页 > 资讯 > 精选 >如何建立一个Ansible实验室
  • 621
分享到

如何建立一个Ansible实验室

2023-06-15 17:06:37 621人浏览 薄情痞子
摘要

小编给大家分享一下如何建立一个Ansible实验室,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!工具和软件本方案使用以下工具和软件:Ansible 是我

小编给大家分享一下如何建立一个Ansible实验室,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

工具和软件

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

  • Ansible 是我们选择的自动化工具,因为它易于使用,而且足够灵活,可以满足实验室的要求。

  • Vagrant 易于使用,用于构建和维护虚拟机

  • VirtualBox 是一个托管管理程序,可以在 windowslinux 环境中使用。

  • Fedora v30+ 是我本地机器上的操作系统

你必须进行以下设置才能建立环境:

  • 一个互联网连接

  • 在 BiOS 中启用虚拟化技术支持(以下是在我的联想笔记本上的过程)

  • Vagrant v2.2.9

  • 最新版本的 Ansible

  • 最新版本的 VirtualBox

  • Fedora v30+ 宿主机操作系统

这个实验室环境有什么?

这个项目旨在部署一个带有 Ansible 引擎和多个 Linux 节点的 Ansible 主机,以及一些预加载和预配置的应用程序(Httpd 和 MySQL)。它还启用了 Cockpit,这样你就可以在测试过程中监控虚拟机(VM)的状态。使用预部署的应用程序的原因是为了提高效率(所以你不必花时间安装这些组件)。这样你就可以专注于创建角色和剧本,并针对上述工具部署的环境进行测试。

我们确定,对于我们的用例来说,最好的方案是多机 Vagrant 环境。Vagrant 文件创建了三个 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 身份运行以下内容,将该管理程序列入黑名单:

$ 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:连接到节点的清单文件

  • playbook.yaml:Vagrant 供应者调用的用于配置节点的剧本文件

  • `Vagrantfile':Vagrant 用来部署环境的文件

  • Vagrant 密钥文件:连接实验室环境中各节点的 Vagrant 密钥

你可以根据你的需要调整这些文件。Ansible 的灵活性使你有能力根据你的需要声明性地改变你的环境。

部署你的实验室环境

首先,克隆这个 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,并查看其内容:

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

现在你已经拥有了实验室环境所需的所有工件和配置文件。要部署环境,请运行:

$ vagrant up

只要有一个像样的网络连接,只需要 20 分钟左右就可以得到一个运行环境:

$ 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[...]

一旦该剧本执行完成,你会看到这样的输出:

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)[...]

你可以通过登录其中一个虚拟机进一步调查。访问 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 你创建的其他节点:

[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"}[...]

清理

运行如下命令来清理环境:

$ vagrant destroy [vagrant machine name]

你的输出会像这样:

如何建立一个Ansible实验室

以上是“如何建立一个Ansible实验室”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 如何建立一个Ansible实验室

本文链接: https://www.lsjlt.com/news/280976.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何建立一个Ansible实验室
    小编给大家分享一下如何建立一个Ansible实验室,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!工具和软件本方案使用以下工具和软件:Ansible 是我...
    99+
    2023-06-15
  • 怎么从硬件到防火墙建立一个家庭实验室
    这篇文章主要介绍了怎么从硬件到防火墙建立一个家庭实验室,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。规划家庭实验室时,需要考虑三方面:硬件、软件和维护。我们将在这里查看前两方...
    99+
    2023-06-15
  • python如何建立一个文件
    python中建立一个文件的方法:1、在win操作系统中找到python程序目录;2、打开idle工具;3、在idle中新建一个shell脚本;4、输入“import os”指令导入os模块;5、通过“os.mknod(文件名)”指令建立一...
    99+
    2022-10-13
  • ubuntu中如何建立一个目录
    ubuntu中建立一个目录需要使用“mkdir ”命令,方法步骤:1、打开ubuntu终端;2、在命令行中输入“mkdir 目录名”命令建立一个目录即可。具体操作步骤:在ubuntu系统桌面中使用快捷键【Ctrl+Alt+T】打开ubunt...
    99+
    2022-10-15
  • 如何建立一个XMLHttpRequest对象池
    这篇文章主要介绍“如何建立一个XMLHttpRequest对象池”,在日常操作中,相信很多人在如何建立一个XMLHttpRequest对象池问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2022-10-19
  • 如何建立一个超图详解
    1.图和超图 图作为一种数据结构,由节点和边组成,可由下图表示。其中一个边只能链接两个节点。一个图可表示为G=(v,e,w) 其中v表示节点,e表示边,w表示节点的特征。关于图的表示...
    99+
    2022-11-12
  • 如何建立一个LINQ ASP.NET网站
    小编给大家分享一下如何建立一个LINQ ASP.NET网站,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!最近使我激动不已的新鲜事之一就是LINQ系列技术的出现,包...
    99+
    2023-06-17
  • 如何建立与优化一个网
    这期内容当中小编将会给大家带来有关如何建立与优化一个网,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。打开一看,确实没有什么特色或者新意,出于关心,我问他为什么要选择做导航站,他的回答竟然是做导航站简单,不...
    99+
    2023-06-12
  • Ubuntu如何建立一个Android开发环境
    这篇文章主要讲解了“Ubuntu如何建立一个Android开发环境”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Ubuntu如何建立一个Android开发环境”吧!安装Ubuntu虚拟机安装...
    99+
    2023-07-04
  • 如何将树莓派家庭实验室变成一个网络文件系统
    这篇文章将为大家详细讲解有关如何将树莓派家庭实验室变成一个网络文件系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。共享文件系统是为家庭实验室增加通用性和功能性的好方法。在实验室中为客户端共享一个集中的文...
    99+
    2023-06-15
  • ubuntu中如何建立一个空文本文件
    ubuntu中建立一个空文本文件的方法:1、打开ubuntu终端;2、在命令行中输入“touch 文件名.txt”命令建立一个空文本文件即可。具体操作方法如下:在ubuntu系统桌面中使用快捷键【Ctrl+Alt+T】打开ubuntu终端命...
    99+
    2022-10-22
  • 在python中如何建立一个自己的包
    目录python如何建立一个自己的包一些概念如何建立(示例)导入自己写好的python包实例总结python如何建立一个自己的包 一些概念 模块:我们写的每个py都是一个模块包:模块...
    99+
    2023-02-17
    python建立包 python自己的包 python建立一个自己的包
  • win11更新后会建立一个分区如何解决
    这篇文章主要介绍了win11更新后会建立一个分区如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇win11更新后会建立一个分区如何解决文章都会有所收获,下面我们一起来看看吧。情况一:如果我们在安装win1...
    99+
    2023-07-01
  • 计算机中如何在桌面建立一个小框
    小编给大家分享一下计算机中如何在桌面建立一个小框,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在桌面建立一个小框的方法:首先在电脑桌面下方的任务栏空白处右击;然后...
    99+
    2023-06-14
  • 如何在Gitee上建立一个中文名称的仓库
    在Gitee上建立一个中文名称的仓库有许多好处,比如更便于中文用户理解和记忆。下面我将介绍如何在Gitee上建立一个中文名称的仓库。第一步:注册Gitee账号如果你还没有Gitee账号,需要先进行注册。打开Gitee官网(https://g...
    99+
    2023-10-22
  • 如何利用C++实现一个简单的聊天室程序?
    如何利用C++实现一个简单的聊天室程序?在信息时代,人们越来越注重网络交流。而聊天室作为一种常见的沟通工具,具有实时性和交互性的特点,被广泛应用于各个领域。本文将介绍如何利用C++语言实现一个简单的聊天室程序。首先,我们需要建立一个基于客户...
    99+
    2023-11-04
    C++ 实现 聊天室程序
  • Java和Django学习笔记:如何建立一个完美的索引?
    在Web开发中,索引是非常重要的一部分,它可以提高查询效率,加快数据检索速度。本文将介绍如何在Java和Django中建立一个完美的索引。 一、Java中的索引建立 Java是一种面向对象的编程语言,它提供了许多数据结构和算法库,可以方便...
    99+
    2023-10-06
    django 学习笔记 索引
  • Android项目中如何在一个数据库里建立多张表
    Android项目中如何在一个数据库里建立多张表,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一,创建一个公共的DBAdapt...
    99+
    2022-10-18
  • 如何使用MySQL和Java实现一个简单的聊天室功能
    要使用MySQL和Java实现一个简单的聊天室功能,你需要进行以下步骤:1. 创建数据库和表:使用MySQL创建一个数据库,并在该数...
    99+
    2023-10-10
    MySQL
  • 如何在腾讯云服务器上建立一个安全的网站
    1. 选择合适的服务器类型和操作系统 在腾讯云上建立网站,首先需要选择适合的服务器类型和操作系统。腾讯云提供了多种服务器类型,如云服务器、轻量应用服务器等,根据你的需求选择合适的类型。同时,选择一个安全可靠的操作系统,如CentOS、Ub...
    99+
    2023-10-27
    腾讯 建立一个 器上
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作