浦东新区苏州网站建设/互联网推广方式
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
简介
配置管理系统旨在简化对大量服务器的控制,适用于管理员和运维团队。它们允许您从一个中央位置以自动化的方式控制许多不同的系统。
虽然对于 Linux 系统有许多流行的配置管理工具,比如 Chef 和 Puppet,但这些工具通常比许多人想要或需要的要复杂。Ansible 是这些选项的一个很好的替代方案,因为它提供了一个简单的架构,不需要在节点上安装特殊软件,使用 SSH 执行自动化任务和使用 YAML 文件定义配置细节。
在本指南中,我们将讨论如何在 Ubuntu 18.04 服务器上安装 Ansible,并介绍如何使用这个软件的一些基础知识。
Ansible 是如何工作的?
Ansible 通过配置客户机(称为受控节点)来工作,这些客户机从安装和配置了 Ansible 组件的计算机(称为Ansible 控制节点)中进行控制。
它通过普通的 SSH 通道与远程系统通信,获取信息,发出命令和复制文件。由于这一点,Ansible 系统不需要在客户计算机上安装任何额外的软件。
这是 Ansible 简化服务器管理的一种方式。任何暴露了 SSH 端口的服务器都可以被纳入 Ansible 的配置范围,无论它在生命周期的哪个阶段。这意味着您可以通过 SSH 管理的任何计算机,也可以通过 Ansible 进行管理。
Ansible 采用模块化方法,使您能够扩展主系统的功能以处理特定场景。模块可以用任何语言编写,并以标准 JSON 进行通信。
配置文件主要采用 YAML 数据序列化格式编写,因为它具有表达性强和与流行标记语言类似的特点。Ansible 可以通过命令行工具或其配置脚本(称为 Playbooks)与主机进行交互。
先决条件
要遵循本教程,您需要:
-
一个 Ansible 控制节点:Ansible 控制节点是我们将用于通过 SSH 连接到和控制 Ansible 主机的计算机。您的 Ansible 控制节点可以是您的本地计算机或专用于运行 Ansible 的服务器,但本指南假定您的控制节点是一个 Ubuntu 18.04 系统。确保控制节点具有:
- 具有 sudo 特权的非 root 用户。要设置这一点,您可以按照我们的 Ubuntu 18.04 初始服务器设置指南的步骤 2 和 3进行操作。但是,请注意,如果您将远程服务器用作 Ansible 控制节点,则应遵循本指南的每一步。这样做将在服务器上配置一个带有
ufw
防火墙并启用对非 root 用户配置的外部访问,这两者都将有助于保持远程服务器的安全性。 - 与该用户关联的 SSH 密钥对。要设置这一点,您可以按照我们的 Ubuntu 18.04 设置 SSH 密钥的步骤 1进行操作。
- 具有 sudo 特权的非 root 用户。要设置这一点,您可以按照我们的 Ubuntu 18.04 初始服务器设置指南的步骤 2 和 3进行操作。但是,请注意,如果您将远程服务器用作 Ansible 控制节点,则应遵循本指南的每一步。这样做将在服务器上配置一个带有
-
一个或多个 Ansible 主机:Ansible 主机是您的 Ansible 控制节点配置为自动化的任何计算机。本指南假定您的 Ansible 主机是远程 Ubuntu 18.04 服务器。确保每个 Ansible 主机都具有:
- Ansible 控制节点的 SSH 公钥添加到系统用户的
authorized_keys
。此用户可以是root或具有 sudo 特权的常规用户。要设置这一点,您可以按照我们的 Ubuntu 18.04 设置 SSH 密钥的步骤 2进行操作。
- Ansible 控制节点的 SSH 公钥添加到系统用户的
步骤 1 — 安装 Ansible
要开始使用 Ansible 管理服务器基础设施,您需要在将作为 Ansible 控制节点的计算机上安装 Ansible 软件。
从您的控制节点上运行以下命令,将官方项目的 PPA(个人软件包存档)包含在系统的源列表中:
sudo apt-add-repository ppa:ansible/ansible
在提示时按 ENTER
接受 PPA 添加。
接下来,刷新系统的软件包索引,以便它了解新包含的 PPA 中可用的软件包:
sudo apt update
完成此更新后,您可以使用以下命令安装 Ansible 软件:
sudo apt install ansible
您的 Ansible 控制节点现在具有管理主机所需的所有软件。接下来,我们将介绍如何将您的主机添加到控制节点的清单文件中,以便它可以控制它们。
步骤 2 — 设置清单文件
清单文件包含有关您将使用 Ansible 管理的主机的信息。您可以在清单文件中包含从一个到数百台服务器,并且主机可以组织成组和子组。清单文件通常还用于设置仅对特定主机或组有效的变量,以便在 Playbooks 和模板中使用。一些变量还可以影响 Playbook 的运行方式,比如我们稍后将看到的 ansible_python_interpreter
变量。
要编辑默认的 Ansible 清单内容,请在您的 Ansible 控制节点上使用您选择的文本编辑器打开 /etc/ansible/hosts
文件:
sudo nano /etc/ansible/hosts
Ansible 安装提供的默认清单文件包含了一些示例,您可以将其用作设置清单的参考。以下示例定义了一个名为 [servers]
的组,其中包含三台不同的服务器,每台服务器都有一个自定义别名:server1、server2 和 server3。请确保用您的 Ansible 主机的 IP 地址替换下面的 IP 地址。
[servers]
server1 ansible_host=203.0.113.111
server2 ansible_host=203.0.113.112
server3 ansible_host=203.0.113.113[all:vars]
ansible_python_interpreter=/usr/bin/python3
all:vars
子组设置了对此清单中所有主机有效的 ansible_python_interpreter
主机参数。此参数确保远程服务器使用 /usr/bin/python3
Python 3 可执行文件,而不是最近的 Ubuntu 版本上不存在的 /usr/bin/python
(Python 2.7)。
完成后,按 CTRL+X
然后 Y
和 ENTER
保存并关闭文件。
每当您想要检查清单时,可以运行:
ansible-inventory --list -y
您将看到类似于此输出,但其中包含您在清单文件中定义的自己的服务器基础设施:
all:children:servers:hosts:server1:ansible_host: 203.0.113.111ansible_python_interpreter: /usr/bin/python3server2:ansible_host: 203.0.113.112ansible_python_interpreter: /usr/bin/python3server3:ansible_host: 203.0.113.113ansible_python_interpreter: /usr/bin/python3ungrouped: {}
现在您已经配置了清单文件,您已经具备了测试与 Ansible 主机的连接的一切所需。
步骤 3 — 测试连接
在设置包含服务器的清单文件之后,是时候检查 Ansible 是否能够连接到这些服务器并通过 SSH 运行命令了。
在本指南中,我们将使用 Ubuntu root 账户,因为这通常是新创建的服务器上默认可用的唯一帐户。如果您的 Ansible 主机已经创建了一个常规的 sudo 用户,建议您改用该帐户。
您可以使用 -u
参数来指定远程系统用户。如果未提供,Ansible 将尝试以控制节点上的当前系统用户身份进行连接。
从本地计算机或 Ansible 控制节点运行:
ansible all -m ping -u root
此命令将使用 Ansible 内置的 ping
模块在默认清单中的所有节点上运行连接性测试,以 root 身份进行连接。ping
模块将测试:
- 主机是否可访问;
- 您是否具有有效的 SSH 凭据;
- 主机是否能够使用 Python 运行 Ansible 模块。
您应该会得到类似于以下的输出:
server1 | SUCCESS => {"changed": false, "ping": "pong"
}
server2 | SUCCESS => {"changed": false, "ping": "pong"
}
server3 | SUCCESS => {"changed": false, "ping": "pong"
}
如果这是您首次通过 SSH 连接到这些服务器,您将被要求确认您通过 Ansible 连接的主机的真实性。在提示时,输入 yes
然后按 ENTER
确认。
一旦您从主机收到 "pong"
回复,这意味着您已准备好在该服务器上运行 Ansible 命令和 playbook。
步骤 4 — 运行临时命令(可选)
在确认您的 Ansible 控制节点能够与您的主机通信后,您可以开始在服务器上运行临时命令和 playbook。
您可以在清单文件中指定的服务器上使用 Ansible 运行任何您通常通过 SSH 在远程服务器上执行的命令。例如,您可以使用以下命令在所有服务器上检查磁盘使用情况:
ansible all -a "df -h" -u root
server1 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.9G 0 3.9G 0% /dev
tmpfs 798M 624K 798M 1% /run
/dev/vda1 155G 2.3G 153G 2% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
tmpfs 798M 0 798M 0% /run/user/0server2 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 395M 608K 394M 1% /run
/dev/vda1 78G 2.2G 76G 3% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
tmpfs 395M 0 395M 0% /run/user/0...
上面突出显示的 df -h
命令可以替换为您想要的任何命令。
您还可以通过临时命令执行 Ansible 模块,类似于我们之前使用 ping
模块测试连接的方式。例如,这是如何在清单中的所有服务器上使用 apt
模块安装 vim
的最新版本:
ansible all -m apt -a "name=vim state=latest" -u root
在运行 Ansible 命令时,您还可以针对单个主机、组和子组进行操作。例如,这是您如何检查 servers
组中每个主机的 uptime
:
ansible servers -a "uptime" -u root
我们可以通过用冒号分隔它们来指定多个主机:
ansible server1:server2 -m ping -u root
有关如何使用 Ansible 的更多信息,包括如何执行 playbook 来自动设置服务器,您可以查看我们的 Ansible 参考指南。
结论
在本指南中,您已经安装了 Ansible 并设置了一个清单文件,以便从 Ansible 控制节点执行临时命令。
一旦您确认能够从中央 Ansible 控制器机器连接和控制您的基础架构,您就可以在这些主机上执行任何命令或剧本。对于新服务器,初始服务器设置社区剧本是一个很好的起点。您还可以通过我们的指南《配置管理 101:编写 Ansible 剧本》学习如何编写自己的剧本。
有关如何使用 Ansible 的更多信息,请查看我们的 Ansible 速查表指南。
相关文章:

在Ubuntu 18.04上安装和配置Ansible的方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 配置管理系统旨在简化对大量服务器的控制,适用于管理员和运维团队。它们允许您从一个中央位置以自动化的方式控制许多…...

【详细教程】如何使用YOLOv10进行图片与视频的目标检测
《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…...

LLM大语言模型-AI大模型全面介绍
简介: 大语言模型(LLM)是深度学习的产物,包含数十亿至数万亿参数,通过大规模数据训练,能处理多种自然语言任务。LLM基于Transformer架构,利用多头注意力机制处理长距离依赖,经过预训…...

瑜伽馆管理系统的设计
管理员账户功能包括:系统首页,个人中心,管理员管理,教练管理,用户管理,瑜伽管理,套餐管理,体测报告管理,基础数据管理 前台账户功能包括:系统首页࿰…...

JAVA【案例5-2】模拟默认密码自动生成
【模拟默认密码自动生成】 1、案例描述 本案例要求编写一个程序,模拟默认密码的自动生成策略,手动输入用户名,根据用户名自动生成默认密码。在生成密码时,将用户名反转即为默认的密码。 2、案例目的 (1)…...

小区业主管理系统
摘 要 随着城市化进程的加速和人口的不断增加,小区的数量也在不断增加。小区作为城市居民居住的主要场所,其管理工作也变得越来越重要。传统的小区业主管理方式存在诸多问题,如信息传递不畅、业务处理效率低下等。因此,开发一个高…...

vncsever ,window 远程ubuntu远程界面安装方式,VNC Viewer安装教程+ linux配置server 操作
linux 端安装 # 安装VNC 服务器软件 sudo apt install autocutsel # 剪切黏贴操作支持的包 sudo apt-get install tightvncserver # 安装的是 VNC 服务器软件,用于远程桌面访问 # 安装Xfce桌面环境 sudo apt-get install xfce4 xfce4-goodies #安装的是 XFCE 桌…...

java spring boot 单/多文件上传/下载
文章目录 使用版本文件上传服务端客户端(前端)方式一方式二 文件下载服务端客户端(前端) 代码仓库地址 使用版本 后端 spring-boot 3.3.0jdk17 前端 vue “^3.3.11”vite “^5.0.8”axios “^1.7.2” 文件上传 上传文件比较…...

C语言的内存函数
1. memcpy使⽤和模拟实现 1 void * memcpy ( void * destination, const void * source, size_t num ); • 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。 • 这个函数在遇到 \0 的时候并不会停下来。 • 如果source和destination有任…...

【网络通信】计算机网络安全技术总结
一、概述 在数字时代的浪潮下,计算机网络安全技术已成为保护数据完整性和安全性的基石。这项技术不仅是计算机科学的重要组成部分,也是应对各种网络威胁和挑战的关键手段。 二、核心技术和应用 2.1 加密技术 作为网络安全技术的核心,加密技…...

Redis-实战篇-什么是缓存-添加redis缓存
文章目录 1、什么是缓存2、添加商户缓存3、前端接口4、ShopController.java5、ShopServiceImpl.java6、RedisConstants.java7、查看Redis Desktop Manager 1、什么是缓存 缓存就是数据交换的缓冲区(称为Cache),是存贮数据的临时地方ÿ…...

《妃梦千年》第十一章:再遇故人
第十一章:再遇故人 宫中的局势暂时平静下来,但林清婉知道,危险随时可能卷土重来。她必须不断提升自己,才能在这复杂的环境中保护自己和皇上。一天,林清婉正在寝宫中读书,忽然收到了一封信。信中只有短短几…...

反序列化底层学习
反序列化底层学习 前言 以前也是懒得学,觉得没有必要,学到现在发现好多东西都需要学习java的底层,而且很多漏洞都是通过反序列化底层挖出来的,比如weblogic的一些绕过,我这里也主要是为了学习weblogic来学习的&#…...

项目训练营第五天
项目训练营第五天 后端代码优化 通用异常处理类编写 Data public class BaseResponse<T> implements Serializable {int code;T data;String message null;String description null;public BaseResponse(int code, T data, String message, String description) {th…...

数据收集和数据分析
数据分析和收集是一个多步骤的过程,涉及到不同的方法和思维构型。 以下是一些常见的数据收集方法和数据分析的思维模式: ### 数据收集方法: 1. **调查问卷**: 通过设计问卷来收集定量或定性数据。(质量互变规律里面…...

Kubernetes(K8s)从入门到精通系列之十九:Operator模式
Kubernetes K8s从入门到精通系列之十九:Operator模式 一、动机二、Operators in Kubernetes三、Operator示例四、部署Operator五、使用Operator六、编写自己的operator Operator 是 Kubernetes 的软件扩展,它利用自定义资源来管理应用程序及其组件。 Ope…...

vuex的actions返回结果类型是promise及actions方法互相调用
this.$store.dispatch(‘logout’)返回的结果是Promise类型的 调用成功的情况下,返回状态为fulfilled,值为undefined。 所以可以直接进行.then操作: this.$store.dispatch(logout).then((result) > {console.log(result); });因为 Vuex …...

【干货】Jupyter Lab操作文档
Jupyter Lab操作文档1. 使用须知2. 定制化Jupyter设置主题显示代码行数设置语言更多设置 3. 认识Jupyter界面4. 初用Jupyter运行调试格式化查看源码 5. 使用Jupyter Terminal6. 使用Jupyter Markdown7. 上传下载文件(云服务器中的Jupyter Lab)上传文件到…...

iOS分享到微信,配置Universal Links,并从微信打开app,跳转到指定界面
iOS分享到微信之后,需要从微信浏览器直接打开app,跳转到指定界面,这个时候最主要的就是分以下几步(微信sdk集成就不说了) 1.配置Universal Links Universal Links是iOS新系统出来后通用链接,用于在第三方浏览器直接打开app&…...

基于SSM构建的校园失眠与压力管理系统的设计与实现【附源码】
毕业设计(论文) 题目:基于SSM构建的校园失眠与压力管理系统的设计与实现 二级学院: 专业(方向): 班 级: 学 生: 指导教师&a…...

SAP 初始化库存移动类型561501511区别简介
项目上线初始化库存经常会用到561这个移动类型,同时我们在平时测试的过程中也会用到会进行库存的初始化,用的比较多是就是561和501这两个移动类型,本文将测试移动类型561&501&511这三个移动类型,分析三者之间的区别&#…...

情感搞笑聊天记录视频:AI自动化生成技术,操作简单,教程+软件
在数字化时代,内容创作已成为吸引观众、传递信息的重要手段。随着人工智能技术的飞速发展,AI自动生成视频为创作者提供了新的工具和可能性。本文将介绍如何利用AI技术,通过情感搞笑聊天记录视频,在视频号上实现内容的自动化生成&a…...

RabbitMQ中lazyqueue队列
lazyqueue队列非常强悍 springboot注解方式开启 // 使用注解的方式lazy.queue队列模式 非常GoodRabbitListener(queuesToDeclare Queue(name "lazy.queue",durable "true",arguments Argument(name "x-queue-mode",value "lazy&…...

Java三层框架的解析
引言:欢迎各位点击收看本篇博客,在历经很多的艰辛,我也是成功由小白浅浅进入了入门行列,也是收货到很多的知识,每次看黑马的JavaWeb课程视频,才使一个小菜鸡见识到了Java前后端是如何进行交互访问的&#x…...

算法设计与分析 笔记
截图摘自湖南大学彭鹏老师的ppt。笔记也是根据他的ppt整理的。 动态规划 核心 用数组记录中间结果,避免重复计算 三角数塔问题 问题描述 给定一个三角形数塔,从顶部出发,每次只能移动到下一行的相邻元素。要求找到一条路径,…...

mapreduce的工作原理
mapreduce的工作原理 MapReduce是一种编程模型,用于处理大规模数据集的并行运算。它的核心思想是"分而治之",即把一个大数据集分解成多个小块,由多个处理单元并行处理,然后再将结果合并以得到最终结果。MapReduce模型包…...

vue中v-bind和v-model有什么区别
在Vue.js中,v-bind和v-model都是指令,用于实现数据和DOM元素之间的双向绑定,但它们的使用场景和功能有所区别。 v-bind: v-bind是一个通用指令,用于动态地绑定一个或多个属性,或者一个组件prop到表达式。它可以绑定任何…...

基于SpringBoot和PostGIS的某国基地可视化实战
目录 前言 一、Java后台开发设计与实现 1、模型层实现 2、控制层设计 二、WebGIS界面实现 1、列表界面的定义 2、全球基地可视化 三、成果展示 1、全球部署情况 2、亚太地区 3、欧洲基地分布 4、中东的部署 四、总结 前言 在之前的博客中,我们曾经对漂亮…...

为什么Linux服务器空间充足而实际上空间已满的原因
以下是一个典型的Linux服务器的磁盘空间使用情况表,展示了不同文件系统的大小、已用空间、可用空间和挂载点等信息 磁盘空间表的基本组成 Linux服务器的磁盘空间使用情况通常通过df命令查看,输出的表格包含以下几列: Filesystem:…...

【LC刷题】DAY16:530 501 236
【LC刷题】DAY16:530 501 236 文章目录 【LC刷题】DAY16:530 501 236530. 二叉搜索树的最小绝对差 [link](https://leetcode.cn/problems/minimum-absolute-difference-in-bst/description/)501.二叉搜索树中的众数236. 二叉树的最近公共祖先 [link](htt…...