如何在 Debian 10 上安装和配置 Ansible

2023-10-16

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

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

本教程将帮助您在 Debian 10 Linux 系统上安装和配置 Ansible。

先决条件

对于本教程,我有以下主机:

  • 一个控制节点– 要使用 Ansible 构建基础设施,您需要一个运行 Ansible 服务器的控制节点。这称为 Ansible 控制节点。
  • One or more Hosts – We have three hosts running with different-2 operating systems.
    • 两台装有 Ubuntu 20.04 LTS 的主机
    • 一台 CentOS 8 主机

第 1 步 – 配置 SSH 密钥

Ansible 控制节点使用 ssh 连接来连接主机。您可以将 Ansible 配置为使用密码或基于密钥的 ssh 访问连接主机。在本教程中,我们将使用两种类型(基于密码和密钥的 ssh)从控制节点连接主机。

登录 Ansible 控制节点并生成 ssh 密钥对(如果未生成):

ssh-keygen -t rsa 

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

然后将公钥复制到远程主机,您需要通过基于密钥进行连接:

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 

步骤 2 – 在 Debian 上安装 Ansible

Ansible debian 软件包可在官方 Apt 存储库下获取。您只需将 PPA 添加到您的系统即可。使用以下命令将 Ansible debian 存储库添加到您的系统:

sudo apt-add-repository ppa:ansible/ansible 

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

sudo apt update 
sudo apt install ansible 

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

第 3 步 – 创建库存文件

您已在控制节点上安装了 Ansible 服务器。

现在,您需要将主机添加到 Ansible 服务器。 Ansible 允许以主机和组的形式管理主机。组用于在其下定义的所有远程主机上执行一项任务。

单个主机可以添加到多个组。编辑 Ansible 主机配置文件。例如:

sudo nano /etc/ansible/hosts 

添加您的主机并按组组织它们:


[webservers]
web-host1
web-host2

[dbservers]
db-host1

[ubuntu]
web-host1
db-host1

[centos]
web-host2
  

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

每台主机配置

您可以为各个主机创建配置文件。所有主机配置文件都位于 /etc/ansible/host_vars 目录下,且与主机名相同。

sudo mkdir /etc/ansible/host_vars/ 
sudo vi /etc/ansible/host_vars/web-host1 
  • 第一台主机 – /etc/ansible/host_vars/web-host1
    
    ansible_ssh_host: 10.0.1.101
    ansible_ssh_port: 22
    ansible_ssh_user: root
      
  • 第二台主机 – /etc/ansible/host_vars/web-host2
    
    ansible_ssh_host: 10.0.1.102
    ansible_ssh_port: 22
    ansible_ssh_user: root
      
  • 第三台主机 – /etc/ansible/host_vars/db-host1
    
    ansible_ssh_host: 10.0.1.103
    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 

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

结论

在本教程中,您学习了在 Debian 10 Linux 系统上安装和配置 Ansible。

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

如何在 Debian 10 上安装和配置 Ansible 的相关文章

  • 附加到 group_vars 中的 Ansible 字典而不使用 hash_behaviour = merge

    我想定义一个字典变量 各个主机组可以将自己的密钥添加到其中在group vars中 不使用set fact 例如 像这样的东西 group vars ftp servers yml important ports ftp 21 group
  • 如何让 pyautogui click 在 mac 上运行?

    pyautogui点击方法问题 我正在从 Spyder 运行脚本 如果我单击 Spyder 窗口上的任何内容 则单击效果很好 如果我执行脚本打开 Outlook 然后单击任何内容 则不会发生单击 虽然我能够正确使用 moveTo 功能 我按
  • Ansible git clone“权限被拒绝”但直接 git clone 工作

    我在使用 Ansible 时遇到了一个令人不安的问题 我使用当前主机的 ssh 密钥在我的环境中设置 git 克隆 name Add user Public Key copy src Users alexgrs ssh id rsa pub
  • ansible:基于 extra-vars 文件的任务顺序

    我有包含 10 个任务的 ansible 剧本 任务的顺序因用例而异 因此我必须为每个用例创建 extraVar yml 文件 并且 extraVar yml 将定义任务的顺序 怎么做 Example 剧本 tasks name task1
  • 如何使用 Ansible when 条件在文件中搜索字符串

    我有一个变量中用 n 分隔的搜索字符串列表listofips 我想在文件中搜索该字符串hello csv在我的下面playbook dir 我可能遇到一些语法问题 我不确定 但下面是我尝试过的 set fact listofips 10 0
  • (Tcl/Expect) 退出后清屏

    我想在退出我的 半 交互式期望脚本后清除屏幕 在本地计算机上 我可以在脚本中做到这一点吗 这是我尝试过的 但失败了 usr bin expect f set env TERM vt100 spawn ssh Y username domai
  • if else 在 ansible 打印语句中

    我需要有关具有多个条件的打印语句的语法的帮助 目前 报价为 inventory hostname 导致错误 如果我删除剧本运行的引号 但列出文本 inventory hostname 而不是变量 我想知道如何打印变量以及 if else 语
  • 如何查看点击 HTML 按钮时发出的 POST 请求的地址?

    我正在创建一个涉及网络抓取和网络自动化的项目 我想首先提交此表格 http rgsntl rgs cuhk edu hk rws prd applx2 Public tt dsp timetable aspx http rgsntl rgs
  • 如何确定 Android UI 元素的 XPATH。硒 + Appium

    我目前正在使用 Appium 和 Selenium 自动化 Android 应用程序 并且在通过 ID 定位元素时遇到了一些问题 我想使用 XPATH 但不知道如何获取 android UI 元素的 XPATH 有谁知道如何确定元素的 XP
  • 所有 Ansible playbook 属性

    我刚刚开始使用 Ansible 在阅读了教程 Ansible 团队将其命名为 docs 我想查看可在剧本中使用的所有属性的完整列表 有人能够提供这样的清单吗 我唯一能通过谷歌搜索的是这个老例子 https gist github com m
  • 开发/生产中的 Ansible 服务器/组

    我所处的情况是看不到正确的使用方法 我有多个分配了不同角色的服务器 分布在多个组中 与生产 登台环境相比 我在本地 Vagrant 环境中遇到了一些使用 group vars 的困难 在生产中 有更多的服务器 分配的组更少 在我的 Vagr
  • Ansible:仅在存在时禁用服务

    有没有什么好的方法可以禁用和停止服务 但前提是它安装在服务器上 像这样的事情 service name item enabled no state stopped only if present yes with items avahi d
  • 正在中止,目标使用 selinux 但未安装 Python 绑定 (libselinux-Python)

    我正在尝试运行 Ansible playbook 命令并收到如下错误 fatal localhost FAILED gt changed false msg Aborting target uses selinux but python b
  • 如何使用 Vagrant 自动安装 Ansible Galaxy 角色?

    仅使用一本剧本 则不可能让 Ansible 自动安装依赖角色 至少按照这个所以线程 https stackoverflow com questions 25230376 how to automatically install ansibl
  • 有没有办法使用 SauceLabs 的 RemoteWebDriver 禁用 CORS 检查

    问题说明了一切 我正在尝试在 SauceLabs 上执行一些硒测试 该测试加载一个发出跨域请求的网页 我在想是否有一种方法可以通过代码以独立于平台的方式禁用 CORS 使用时Chrome驱动程序 Chrome组合禁用cors questio
  • 您可以更改 Ansible 的临时消息,直到重试循环吗?

    在我的一本剧本中 我启动一项服务并轮询其状态 然后再继续执行下一个任务 如下所示 name Poll for service status uri url http some service status register response
  • Ansible:使用变量定义 playbook 主机

    我安装了以下版本 ansible 2 3 0 开发2131eaba0c 我想将我的主机变量指定为外部变量 然后在playbook与此类似 hosts integration In my 组变量 全部文件我有以下定义的变量 integrati
  • WatiN 还是 Selenium? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用ansible运行询问用户输入的脚本?

    我想使用 ansible 运行 shell 脚本 但 shell 脚本需要用户输入才能成功执行 例如 我的 shell 脚本询问唯一的 idossec agent 通过ansible我可以预定义我的unique id user input
  • 自动化发布 Android 应用程序的过程

    我们有几个Android应用程序 发现每个版本上传应用程序的过程都是通过Android 开发者网站 https play google com apps publish slow and 无效的 我们喜欢使该过程自动化 更明确地说 我们可以

随机推荐

  • Tmux 入门

    本指南将介绍 Tmux 的安装和基本用法 以帮助您入门和运行 什么是 tmux Tmux 是终端多路复用器的替代品GNU 屏幕 换句话说 这意味着您可以启动 Tmux 会话 然后在该会话中打开多个窗口 每个窗口占据整个屏幕 并且可以分割成矩
  • 如何在 Python 中向列表添加元素(追加、扩展和插入)

    在 Python 中使用列表时 您经常需要向列表中添加新元素 Python 列表数据类型具有三种添加元素的方法 append 将单个元素追加到列表中 extend 将可迭代的元素追加到列表中 insert 在列表的给定位置插入单个项目 所有
  • 如何添加 Git 远程

    通常 在使用 Git 时 您将仅使用一个名为 origin 的远程服务器 并针对不同的功能和环境使用不同的分支 Origin 是克隆存储库时自动创建的远程名称 并指向克隆的存储库 然而 当与一群人协作处理一个项目时 您可能会发现使用多个 G
  • Linux 中的 Dig 命令(DNS 查找)

    Dig Domain Information Groper 是一个强大的命令行工具 用于查询 DNS 名称服务器 The dig命令 允许您查询有关各种 DNS 记录的信息 包括主机地址 邮件交换和名称服务器 由于其灵活性和易用性 它是系统
  • 如何在 Ubuntu 20.04 上安装 Zoom

    Zoom是一个易于使用的通信平台 集云视频会议 实时消息传递和内容共享于一体 使用 Zoom 您可以举办网络研讨会 组织在线会议以及创建会议室 本指南介绍如何在 Ubuntu 20 04 上安装 Zoom 相同的说明适用于所有基于 Debi
  • 如何在 Ubuntu 20.04 上安装 Memcached

    Memcached 是一个免费开源的高性能内存键值数据存储 它通常用于通过缓存 API 和数据库调用结果中的各种对象来加速应用程序 本文介绍如何在 Ubuntu 20 04 上安装和配置 Memcached 安装 Memcached mem
  • PyQt5绘图教程(绘画API)

    在本教程中 我们将学习如何绘制矢量图形PyQt5 正如您将看到的 在 Python 中 PyQt5 模块是可用于绘图目的的最简单的模块 在开始之前 让我们使用 PyQt5 创建一个窗口 在其中绘制图形 目录 hide 1 创建一个 PyQt
  • NumPy where 教程(带示例)

    The numpy where函数用于检索 ndarray 中给定条件为 true 的元素的索引 学完本教程后 您将充分了解如何使用numpy where查询NumPy 数组 目录 hide 1 语法和参数 2 使用 x 和 y 参数替换值
  • 使用 sed 命令掌握 Linux 文件中的文本插入

    The ised 中的命令用于在行前插入文本 的一般语法为i命令是 sed pattern i text to be inserted filename 在本教程中 我们将重点介绍如何使用sed命令 目录 hide 1 Sed Insert
  • Sed 命令指南:Linux 中的文本编辑

    sed代表流编辑器 该命令允许您解析和转换文本数据 如果输入源自文件 管道或标准输入 sed逐行处理它 With sed 您可以执行各种文本操作 如插入 删除 搜索和替换 目录 hide 1 Basic Syntax and Operati
  • Pandas查询方法:高效过滤DataFrame

    Pandas提供query 允许用户使用字符串表达式查询 DataFrame 的方法 在本教程中 您将了解query方法以及如何在实际应用中使用它 目录 hide 1 Pandas 查询语法和参数 2 使用查询方法过滤数据帧 3 Using
  • 用于网络故障排除的 Linux 网络命令

    在上一篇文章中 我们谈到了Linux进程管理t 在这篇文章中 我们将讨论 Linux 网络命令以及如何排除网络故障 如果确保物理网络正常工作 下一步就是对网络进行故障排除 这里我们进入我们的主题 即 Linux 网络命令以及如何使用它们对网
  • Pandas loc 与 iloc:何时使用它们进行数据选择

    The loc and iloc属性是 Pandas 库的一部分 允许根据某些标准从 DataFrame 中选择数据 本教程将讨论这两种属性之间的主要区别 以及如何确保您使用适合您特定需求的属性 下表总结了这两个属性之间的差异 Proper
  • 使用 PHP 将数组转换或转换为对象(Hydrator 模式)

    在这篇文章中 我们将使用 PHP Hydrator 模式将数组转换为对象 这个方法很简单 就是将数据从一个地方传输到另一个地方 我们将定义一个类 它将一个数组和一个对象作为输入 并搜索对象中的所有 set 方法 并用数组中的值填充它 首先
  • 使用 Linux 进程管理命令进行性能调优

    在服务器管理中 了解正在运行的进程如何详细工作 从高负载进程到慢响应时间进程 非常重要 当你的服务器变得如此缓慢或无法响应时 你应该了解进程管理或Linux进程管理 当是时候杀死一个进程 or renice它以及如何monitor当前正在运
  • NumPy 数组排序:综合指南

    在本教程中 我们将讨论如何对NumPy 数组使用不同的技术 接下来 我们将了解如何按升序和降序对 NumPy 数组进行排序 以及如何处理多维数组 就地排序 间接排序以及排序时遇到的常见问题 目录 hide 1 使用 np sort 对 Nu
  • Seaborn lineplot(用线条可视化数据)

    在 Seaborn 支持的众多绘图中 线图是最常见的统计数据绘图库 在本文中 我们将讨论 lineplot 方法以及如何设置各种属性来自定义绘图 目录 hide 1 使用 lineplot 绘制一条线 2 绘制多条线 3 更改标题
  • Python 中列表列表的扁平化指南

    在本教程中 我们将介绍各种列表扁平化方法 从简单但功能强大的 Python 内置函数到利用 NumPy 等库的更高级技术 无论您使用的是二维列表还是更复杂的多维数据 我们都能满足您的需求 每种方法都将通过示例代码 详细解释和具体输出进行说明
  • 如何通过 PPA 在 Debian 9/8 上安装 Java 9

    如何在 Debian 9 8 上安装 Java 9 Oracle Java 9 是可供安装的最新稳定版本 第一个 Oracle Java 9 稳定版本于 2017 年 9 月 21 日发布 本教程将帮助您在 Debian Linux 上安装
  • 如何在 Debian 10 上安装和配置 Ansible

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