如何在 Ubuntu 20.04 上安装和配置 Ansible

2023-11-16

Ansible 是一种自动化工具,用于从单台计算机管理多个远程主机。它为您提供了针对大量远程主机的轻松配置。例如,您在多台机器上执行相同的任务,Ansible 为您提供了自动执行这些任务的选项。

Ansible 是 Chef 和 Puppet 等其他流行基础设施自动化工具的更好替代品。您无需在节点上安装任何客户端软件即可通过 Ansible 服务器进行管理。它使用 SSH 连接在节点上执行任务。

本教程将帮助您在 Ubuntu 20.04 LTS Linux 系统上安装和配置 Ansible。

先决条件

我们有一个控制节点来配置 Ansible 服务器,并管理三台节点服务器。这里的控制节点运行的是Ubuntu 20.04 Linux系统。第一个和第三个节点运行在 Ubuntu 18.04 服务器上,第二个节点运行在 centos 7 服务器上。

以下是具有 IP 地址和主机名的节点列表:

  • 控制节点 – 10.0.1.10(控制节点)
  • 第一个节点 – 10.0.1.101 (web-host1)
  • 第二个节点 – 10.0.1.102 (web-host2)
  • 第三个节点 – 10.0.1.103 (db-host1)
  • 第 1 步 – 设置 SSH 密钥

    您可以为远程 Linux Ansible 主机配置基于密钥的 ssh。因此 SSH 不需要密码。 Ansible 还允许您使用 ssh 密码,但基于密钥的 ssh 更安全。

    登录控制节点(10.0.1.10)并生成ssh密钥对:

ssh-keygen -t rsa 

只需按“Enter”即可完成命令要求的所有输入。

将公钥复制到您需要通过 SSH 协议连接的所有远程节点。

ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.1.101 
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.1.102 
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.1.103 

步骤 2 – 在 Ubuntu 上安装 Ansible

您可以从 Ubuntu 系统上的官方软件包存储库安装 Ansible 服务器。其中有最新的 debian 软件包。执行以下命令在 Ubuntu 系统上设置 Ansible PPA。

sudo apt-add-repository ppa:ansible/ansible 

软件更新实用程序将更新系统上的软件包缓存。因此,您必须运行以下命令在 Ubuntu 系统上安装或更新 Ansible

sudo apt update 
sudo apt install ansible 

输入“Y”进行所有安装确认以完成安装过程。接下来,需要配置 Ansible 服务器

步骤 3 – 配置库存文件

您的服务器已准备好使用 Ansible 进行远程主机管理和自动化。您可以拥有所需的多个主机,并使用单个 Ansible 服务器来管理它们。

在这里,您需要在 Ansible 主机文件 (/etc/ansible/hosts) 中定义远程系统。您还可以创建具有相似类型的主机组。在这里,您需要将主机正确分组。组用于在其下定义的所有远程主机上执行一项任务。

编辑 Ansible 主机配置文件。例如:

sudo nano /etc/ansible/hosts 

添加您的主机并将其分组。一个主机可以添加到多个组下.


[webservers]
web-host1
web-host2

[dbservers]
db-host1
  

下图将帮助您了解组和组下的主机。

单主机变量配置

您需要为主机定义设置。主机特定文件必须与host_vars目录下的主机同名(例如:web-host1)。

sudo mkdir /etc/ansible/host_vars/ 
sudo vi /etc/ansible/host_vars/web-host1 

将 web-host1 的 SSH 设置添加到此文件中。


ansible_ssh_host: 10.0.1.101
ansible_ssh_port: 22
ansible_ssh_user: root
  

如果您没有使用步骤 1 来建立该主机的 ssh 连接。您还可以将以下方法之一添加到 web-hosts1 配置文件中以进行身份​​验证。


ansible_ssh_pass: secret_password
ansible_ssh_private_key_file: /home/rahul/.ssh/aws.pem
  

组变量配置

您可以在组配置下配置组的公共变量设置。组文件名必须与下面的组名(例如:webservers)相同group_vars目录。

sudo mkdir /etc/ansible/group_vars 
sudo vi /etc/ansible/group_vars/webservers 

将公共变量添加到该文件中,供该组下添加的所有主机使用。


ansible_ssh_port: 22
ansible_ssh_user: root
  

第 4 步 – 测试 Ansible 连接

您的 Ansible 已准备好使用。要测试所有节点的连接性,请使用 ping 模块。登录到您的 Ansible 服务器并执行以下命令:

ansible -m ping all 

您还可以测试特定主机或组的连接性。

ansible -m ping web-host1        ## Specific host 
ansible -m ping webservers        ## Specific group 

您还可以使用 Ansible shell 模块运行任何 Linux 命令。例如,执行以下命令来测试 web-host1 上的可用内存。

ansible -m shell -a 'free -m' web-host1 

您还可以为一个组执行相同的任务。只需使用组名而不是主机名。

结论

在本教程中,您学习了在 Ubuntu 20.04 系统上安装 Ansible 服务器。还配置了使用 Ansible 服务器管理的远程主机。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 20.04 上安装和配置 Ansible 的相关文章

  • 反向运行 Ansible 循环

    我正在编写一本 ansible playbook 在一次 play 中 我尝试使用我自己的模块 NodeModule 使用 UUID 删除一些节点 所有节点是一个包含节点 UUID 的列表 name Remove OSNs NodeModu
  • Ansible:SSH 错误:unix_listener:对于 Unix 域套接字来说太长

    这是一个已知问题 我找到了解决方案 但它对我不起作用 首先我有 fatal openshift node compute e50xx gt SSH Error ControlPath too long It is sometimes use
  • ssl:身份验证方法 ssl 需要密码

    在尝试通过 Ansible 连接到 Windows 虚拟机时 我遇到了以下问题 TASK setup lt 10 xx xx xx gt ESTABLISH WINRM CONNECTION FOR USER winad admin on
  • 如何删除或排除 Ansible 模板列表中的项目?

    我正在编写一个 Ansible 模板 需要生成主机组中的 IP 列表 排除当前主机IP 我在网上和文档中进行了搜索 但找不到任何允许您删除列表中项目的过滤器 我在下面创建了 hacky for循环来执行此操作 但想知道是否有人知道这样的过滤
  • 如何将 ansible_become_pass 存储在保管库中以及如何使用它?

    我是 ansible 的新手 我正在使用一个非常简单的剧本来发布sudo apt get update and sudo apt get upgrade在几台服务器上 这是我正在使用的剧本 name Update Servers hosts
  • 将变量内容复制到事实中后,Ansible 会抛出错误

    我有变量 其中包含带有其他模板引擎标记的字符串 不幸的是它们是三个花括号 如果我直接使用这些变量 一切都很好 如果我将它们复制到事实中以便随后修改它们 Ansible 会抛出错误 示例剧本 hosts localhost connectio
  • jenkins 管道中的该模块需要 boto3 和 botocore

    我正在尝试通过 jenkins groovy 脚本运行 ansible playbook 但不断收到错误 boto3 is required 我已经安装了 boto3 pip list boto grep boto boto3 1 20 3
  • ansible 有 yaml 编辑模块吗?

    我需要修改 yaml 文件 施洛德配置 http schleuder2 nadir org documentation v2 2 index html 并且我想从 ansible 剧本中执行此操作 是否有模块可以执行此操作 很难用谷歌搜索这
  • 将事实收集到事实缓存的最快方法

    我正在尝试让 Ansible 与 limit 一起工作 为此我需要有关其他主机的事实 我正在使用fact caching进行缓存 我应该运行什么命令 以便它只收集所有主机上的所有事实并缓存它们 而不运行任何任务 像这样的东西设置模块 htt
  • 无法在守护进程模式下运行 Ansible

    我可以运行 Ansible 像守护进程一样管理我的主机吗 例如 我有时会更改我的剧本 但我不想手动运行 ansible playbook main yml 请不要建议 crontab 有一个特定的点 我不能在生产服务器上使用 crontab
  • 用于下载文件的 S3 模块在 ansible 中不起作用

    这是为从 S3 存储桶 artefact test 下载文件而编写的 ansible 代码 name Download customization artifacts from S3 s3 bucket artefact test obje
  • Ansible 手册:错误! “command”不是 Play 的有效属性[重复]

    这个问题在这里已经有答案了 我只是想写一个基本的剧本 并不断收到下面的错误 尝试了很多东西但仍然无法做到正确 我知道这一定是语法问题 但不知道在哪里 这是我的代码 This playbook runs a basic DF command
  • 如果不满足某些条件,如何跳过ansible剧本中的所有其他剧本?

    我在下面的剧本中有多个剧本 如果不满足某些条件 我想忽略所有其他戏剧 因此 对于下面的示例 如果我在中找不到任何新文件Play1然后我不想执行Play2 and Play3根本没有 它应该跳过它 我怎样才能做到这一点 I have end
  • Cygwin - 如何安装 ansible?

    如何使用 Cygwin 获取 安装 ansible 我尝试了以下步骤 但在第 5 条期间 运行时 python setup py 安装 步骤取自 取自https servercheck in blog running ansible wit
  • 如何使用Vault在Ansible中运行playbook api

    我有一本带有Vault的剧本 我可以运行它 ansible playbook info yml ask vault pass 现在 我想在 Ansible 中运行我的 playbook api 答案在如何使用Vault在Ansible v2
  • 有条件地使用文件夹大小

    我只想在大小大于特定大小时删除文件夹 不幸的是我无法达到想要的结果stat module Attempt hosts pluto tasks stat path home ik thunderbird register folder nam
  • 使用 Python API 2.0.0.1 运行 Ansible Playbook

    安塞布尔版本 2 0 0 1 我现在已经四处寻找了很多 我发现的大多数文档要么不完整 要么已弃用 这篇文章适用于1 8 4版本 即 https stackoverflow com questions 27590039 running ans
  • 连接到上游时 Nginx 错误:(13:权限被拒绝)

    我在我的中收到此错误nginx error log file 2014 02 17 03 42 20 crit 5455 0 1 connect to unix tmp uwsgi sock failed 13 Permission den
  • Ansible bitbucket 克隆存储库配置 ssh 错误

    我之前发布过这个问题 但那里的答案不再有效 总之 当使用 Ansible 配置我的 vagrant box 时 在尝试使用 ssh 克隆我的 bitbucket 私有存储库时 我遇到了一个神秘的错误 该错误指出 权限被拒绝 公钥 然而 如果
  • if else 在 ansible 打印语句中

    我需要有关具有多个条件的打印语句的语法的帮助 目前 报价为 inventory hostname 导致错误 如果我删除剧本运行的引号 但列出文本 inventory hostname 而不是变量 我想知道如何打印变量以及 if else 语

随机推荐

  • DOCKER UBUNTU 配置

    TensorRT 8 2 1 8 安装笔记 超全超详细 Docker 快速搭建 TensorRT 环境 知乎 1 DOCKER 深度学习环境基本要素 1 Docker部署深度学习服务器 CUDA cudnn ssh 铜锣烧阿南Anan的博客
  • Linux中的多线程剖析

    目录 1 前言 2 多线程理解 2 1 线程 2 2 通俗了解进程和线程 2 2 1 进程是资源分配的基本单位 2 2 2 Linux中的线程是一种轻量化进程 2 3 进程和线程详解 2 3 1 创建一个线程 pthread create
  • SpringMVC框架在Controller中对于Session的处理

    Controller中的代码 Controller SessionAttributes User Y 此处定义此Controller中将要创建和使用哪些session中的对象名 public class UserController Res
  • 若依RuoYi-Cloud代码学习四---扩展nacos的知识(bootstrap.yml,spring.factories文件)

    一 概念 Nacos 是一个更易于帮助构建云原生应用的动态服务发现 配置和服务管理平台 Nacos 的命名组成 以此知道它的作用 组成部分 全称 描述 Na naming nameServer 即服务注册中心 与 Spring Cloud
  • 一个常见的大数据术语表

    大数据 big data 是指无法在可承受的时间范围内用常规软件工具进行捕捉 管理和处理的数据集合 是需要新处理模式才能具有更强的决策力 洞察发现力和流程优化能力的海量 高增长率和多样化的信息资产 大数据的出现带来了许多新的术语 但这些术语
  • 自蒸馏One-shot NAS——Cream of the Crop

    Paper https arxiv org abs 2010 15821 GitHub NNI https github com microsoft nni blob master docs en US NAS Cream rst GitH
  • Goby反制复现

    0x00 前言 最近复现Goby反制的时候遇到很多坑 记录一下反制过程以及遇到的坑点 还有世界上最强的黑客mux1ng帮我解决了很多问题 0x01环境 攻击机 windows10 Goby1 8 230 172 20 10 3 反制机 Wi
  • VM600 MPC4 IOCT16T CMC16 保护其设备免受篡改或网络攻击

    VM600 MPC4 IOCT16T CMC16 保护其设备免受篡改或网络攻击 推出Protection Suite 其中包括CodeMeter加密和许可工具 使制造商能够快速轻松地保护其现成的软件和专有技术免受盗版和逆向工程的侵害 并保护
  • 链接数据库 报错java.sql.SQLException: Unsupported character encoding ‘utf-8......

    项目启动报如下错误信息 java sql SQLException Unsupported character encoding utf 8 serverTimezone 分析 由 java sql SQLException 可知道很大概率
  • 大数据-linux免密登录

    操作 mini yum服务器 A root sizhan ssh keygen Generating public private rsa key pair Enter file in which to save the key root
  • JavaScript实现点击复制(JS访问剪贴板相关)

    一 具体代码 网页前端开发中有时会出现这样的场景 让用户点击某个按钮 然后就能直接复制对应的文本内容 让用户可以将文本内容粘贴到想要粘贴的地方 常用于分享功能模块中 如果想要实现这种效果就需要我们去访问用户的剪贴板 然后把想要复制的内容写入
  • logging模块详细使用

    啄木鸟社区里的Pythonic八荣八耻有一条 以打印日志为荣 以单步跟踪为耻 很多程序都有记录日志的需求 并且日志中包含的信息既有正常的程序访问日志 还可能有错误 警告等信息输出 python的logging模块提供了标准的日志接口 你可以
  • 公司取名字-免费查询参考(中英文2023年精选100个)公司名字集

    中文名称 1 星辰科技 2 卓越集团 3 璀璨科技 4 炫彩网络 5 融智科技 6 致远集团 7 飞跃科技 8 极致集团 9 灵动科技 10 豪迈集团 11 神州科技 12 创维集团 13 赛博科技 14 蓝海集团 15 云端科技 16 融
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞s2-048(CVE-2017-9791)

    博主介绍 博主介绍 大家好 我是 PowerShell 很高兴认识大家 主攻领域 渗透领域 数据通信 通讯安全 web安全 面试分析 点赞 评论 收藏 养成习惯 一键三连 欢迎关注 一起学习 一起讨论 一起进步 文末有彩蛋 作者水平有限 欢
  • IDEA(2023)解决运行乱码问题

    作者介绍 一个有梦想 有理想 有目标的 且渴望能够学有所成的追梦人 学习格言 不读书的人 思想就会停止 狄德罗 个人主页 进入博主主页 专栏系列 无 欢迎小伙伴们访问到博主的文章内容 在浏览阅读过程发现需要纠正的地方 烦请指出 愿能与诸君一
  • 如何增加 Tomcat 上传文件大小限制

    今天在部署一个war文件 开发站点代码 时Tomcat 8 我遇到了以下有关 Apache Tomcat 服务器中上传限制大小的问题 所以我决定将 Tomcat 上传文件大小限制增加到高于默认值 默认上传限制设置为 50 MB Caused
  • Node.js 与 MySQL 示例

    Node js 是一种流行的 Web 应用程序编程语言 如 PHP 和 JAVA 此外 MySQL 是用于存储值的最流行的数据库 Node js 的 MySQL 数据库驱动程序可在 NPM 存储库下找到 在本教程中 您将学习如何使用 Nod
  • 如何在 Ubuntu 18.04 上安装 GIMP 2.10

    GIMP GNU 图像处理程序 是一个免费分发的用于处理图像的软件 我们可以轻松地优化图像 使用 GIMP 转换其类型 它为设计师提供了将图像转化为真正独特的创作的能力和灵活性 GIMP 是一个跨平台应用程序 可用于 Linux Windo
  • 如何在 EC2 实例上创建交换分区

    在 Amazon Elastic Compute Cloud EC2 实例上创建交换分区有助于提高系统的性能和稳定性 交换分区是硬盘驱动器上的一个空间 当物理内存 RAM 不足时 操作系统可以将其用作虚拟内存 在本文中 我们将解释如何在 E
  • 如何在 Ubuntu 20.04 上安装和配置 Ansible

    Ansible 是一种自动化工具 用于从单台计算机管理多个远程主机 它为您提供了针对大量远程主机的轻松配置 例如 您在多台机器上执行相同的任务 Ansible 为您提供了自动执行这些任务的选项 Ansible 是 Chef 和 Puppet