目录

  • Ansible概述
      • 1:什么是Ansible
      • 2:Ansible的架构组成
      • 3:Ansible与SaltStack的对比
  • 安装部署Ansible服务
      • 1:系统环境设置
      • 2:安装Ansible(第一台)
      • 2:配置主机清单
      • 3:修改Ansible配置文件
  • Ansible命令应用基础
      • 1:command模块
      • 2:shell模块
      • 3:user模块
      • 4:cron模块
      • 5:group模块
      • 6:copy模块
      • 7:file模块
      • 9:script模块
      • 10:yum模块
      • 11:service模块
      • 12:setup模块

Ansible概述

1:什么是Ansible

Ansible 是基于 Python 开发,集合了众多优秀运维工具的优点,实现了批量运行命令、部署程序、配置系统等功能的自动化运维管理工具。默认通过 SSH 协议进行远程命令执行或下发配置,无需部署任何客户端代理软件,从而使得自动化环境部署,变得更加简单。可同时支持多台主机并行管理,使得管理主机更加便捷。

2:Ansible的架构组成

Ansible 可以看作是一种基于模块进行工作的框架结构, 批量部署能力就是由Ansible 所运行的模块实现的。简而言之 Ansible 是基于“模块”完成各种“任务”的。其基本框架结构如下图 所示。
在这里插入图片描述

由上图可以得出 Ansible 的基本架构由六大件构成。

Ansible core 核心引擎:即 Ansible 本身;

Host Inventory 主机清单: 用来定义 Ansible 所管理主机, 默认是在 Ansible 的 hosts 配置文件中定义被管理主机, 同时也支持自定义动态主机清单和指定其它配置文件的位置;

Connect plugin 连接插件:负责和被管理主机实现通信。除支持使用SSH连接被管理主机外,Ansible 还支持其它的连接方式,所以需要有连接插件将各个主机用连接插件连接到 Ansible;

Playbook( yaml, jinjia2) 剧本:用来集中定义 Ansible 任务的配置文件, 即将多个任务定义在一个剧本中由 Ansible自动执行, 可以由控制主机针对多台被管理主机同时运行多个任务;

Core modules 核心模块:是 Ansible 自带的模块,使用这些模块将资源分发到被管理主机使其执行特定任务或匹配特定的状态;

Custom modules 自定义模块:用于完成模块功能的补充,可借助相关插件完成记录日志、发送邮件等功能。

3:Ansible与SaltStack的对比

(1)Ansible 安装部署简单
默认情况下,Saltstack 需要安装客户端接收服务器发送过来的命令。Ansible 不需要在被控服务器上部署任何的客户端,直接使用ssh 通道进行远程命令的执行或者下发配置。

(2)Saltstack 响应速度快默认情况下,Ansible 使用 的是标准的 SSH协议,而 Saltstack 使用 ZeroMQ 进行通信和传输。因此,仅仅从响应速度来讲,Saltstack 比 Ansible 快很多,甚至快十几倍。在一般运维场景下,Ansible的响应速度完全可以满足需求

(3)Ansible 更安全
Ansible 使用标准的 SSH 连接传输数据,不需要在远程主机上启动守护进程。此外,标准的 SSH 数据传输本身就是加密传输,远程主机不易被攻击。

(4)对 Windows 的支持
Saltstack 对 windows 的支持比较友好,Ansible 从 1.7 版本开始加入了对 Windows 的支持。由于Windows 默认没有 SSH,而 Ansible 有依赖 SSH 进行通信,所以在 Windows下 Ansible 需要依赖PowerShell 来实现远程管理。Ansible 必须使用 Linux 系统运行控制端。

(5)Ansible 自身运维比较简单
Saltstack 需要在 Master 和 Minion 主机启动一个守护进程,自身需要检测守护进程的运行状态,增加了运维成本。Ansible 和服务器之间用 SSH 进行通信,服务器上值需要运行 SSH 进程就可以进行运维操作。因此,从工具本身的运维角度来说,Ansible 要比 Saltstack简单很多。

安装部署Ansible服务

Ansible 自动化运维环境由控制主机与被管理主机组成。由于 Ansible 是基于 SSH 协议进行通信的,所以控制主机安装 Ansible 软件后不需要重启或运行任何程序,被管理主机也不需要安装和运行任何代理程序。

资源清单
我现在将根据你提供的图片内容生成Markdown格式的表格。

操作系统主机名IP地址角色
openEuler 24.03ansible-node1192.168.10.101管理节点
openEuler 24.03ansible-node2192.168.10.102web被管理主机
openEuler 24.03ansible-node3192.168.10.103db被管理主机

1:系统环境设置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2:安装Ansible(第一台)

Ansible 可以使用源码方式进行安装,也可以使用操作系统中 YM 软件包管理工具进行安装。 YUM方式安装 Ansible,需要依赖第三方的 EPEL 源。

安装Ansible
在这里插入图片描述
注:需要时间同步否则安装不上,以下命令可以时间同步
dnf install chrony -y
systemctl enable --now chronyd

查看版本信息
在这里插入图片描述
查看安装目录
在这里插入图片描述

2:配置主机清单

/etc/ansible/hosts 文件中可以定义被管理主机,Ansible 通过读取/etc/ansible/hosts 文件内定义的主机清单批量做一些操作。比如定义一个 websrvs 组,包含一台主机,再定义一个 dbsrvs 组,包含另一台主机,内容如下:
在这里插入图片描述

3:修改Ansible配置文件

在这里插入图片描述
在这里插入图片描述

Ansible命令应用基础

Ansible 可以使用命令行的方式进行自动化管理。
Ansible 的命令行管理工具都是由一系列模块、参数组成的,使用某些模块或参数之前, 可以在命令后面加上-h 或–help 来获取帮助。例如,ansible-doc 工具可以使用 ansible-doc -h 或者ansible-doc --help 查看其帮助信息。
ansible-doc 工具用于査看模块帮助信息。主要选项包括:
-l 用来列出可使用的模块;
-s用来列出某个模块的描述信息和使用示列。

列出所有可用模块
在这里插入图片描述
列出yum模块的描述信息和操作动作

在这里插入图片描述
备注:
按q退出
Ansible 自带了很多模块,能够下发执行 Ansible 的各种管理任务。首先来了解下 Ansible常用的这些核心模块。

1:command模块

Ansible 管理工具使用-m 选项来指定所使用模块,默认使用 command 模块,即-m 选项省略时会运行此模块,用于在被管理主机上运行命令。例如在被管理主机上执行 date 命令,显示被管理主机时间。有三种执行命令的方式来管理写入主机清单中的主机。

使用IP地址查看被管理的主机日期
在这里插入图片描述
分别查看web组和db组的所有主机日期
在这里插入图片描述
查看所有被管理主机的日期
在这里插入图片描述
注意:
若省略-m 选项,默认运行 command 模块。

2:shell模块

Ansible 中的 shell 模块可以在被管理主机上运行命令,并支持像管道符等功能的复杂命令。

在被管理组 db 里所有主机创建用户 user1,uid 和 gid 都为 1001,用户家目录为/home/user1,shel1
为/bin/bash。
在这里插入图片描述
使用无交互模式给用户设置密码。
在这里插入图片描述

3:user模块

Ansible 中的 user 模块用于创建新用户和更改、删除已存在的用户。其中 name 选项用于指明创建的用户名称。主要包括两种状态(state):
present 表示添加(省略状态时默认使用);
absent 表示移除。

删除上述创建的用户 user1
在这里插入图片描述

4:cron模块

Ansible 中的 cron 模块用于定义任务计划。主要包括两种状态(state):
present 表示添加(省略状态时默认使用);
absent 表示移除。

添加任务计划,使得被管理组 db 里所有主机每十分钟输出 hello 字符串
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
移除任务计划
在这里插入图片描述
注意:出现
在这里插入图片描述
可以使用setenforce 0处理也可以安装
在这里插入图片描述

5:group模块

Ansible 中的 group模块用于对用户组进行管理。
被管理组 db里所有主机创建 mysql 组,gid 为 306
在这里插入图片描述
将被管理组 db 里所有主机的 mysql 用户添加到 mysql 组中
在这里插入图片描述

6:copy模块

Ansible 中的 copy 模块用于实现文件复制和批量下发文件。其中使用 src 来定义本地源
文件路径;使用 dest 定义被管理主机文件路径;使用 content 则是使用指定信息内容生成目标文件。

将本地文件/etc/fstab复制到被管理组db里的所有主机上的/tmp/fstab.ansible并将所有者设置为 root,权限设置为 640。
在这里插入图片描述
在这里插入图片描述
将”hello” 写入到被管理组 db 里所有主机上的/tmp/ test.ansible 文件中

在这里插入图片描述
在这里插入图片描述

7:file模块

Ansible 中使用 file 模块来设置文件属性。其中使用 path 指定文件路径;使用 src 定义源文件路径;使用 name 或 dest 来替换创建文件的符号链接。

设置被管理组 dbsrvs 里所有主机中/tmp/fstab.ansible 文件的所属主为 mysql,所属组为 mysq1,
权限为 644。

在这里插入图片描述
在这里插入图片描述
设置被管理组 dbsrvs 里的所有主机的/tmp/fstab.link 文件为/tmp/fstab.ansible 文件的链接文件。
在这里插入图片描述
在这里插入图片描述

9:script模块

Ansible 中的 script 模块可以将本地脚本复制到被管理主机上进行运行。需要注意的是使用相对路径指定脚本位置。

编辑一个本地脚本,复制到db里所有主机运行
请添加图片描述
请添加图片描述
请添加图片描述

10:yum模块

Ansible 中的 yum 模块负责在被管理主机上安装与卸载软件包,但是需要提前在每个节点配置自己的YUM 仓库。
其中:
使用 name 指定要安装的软件包,还可以带上软件包的版本号;否则安装最新的软件包。
使用 state 指定安装软件包的状态, present、latest 用来表示安装, absent 表示卸载。

db 里所有主机安装 zsh 软件包。
请添加图片描述
请添加图片描述
卸载软件包
请添加图片描述
请添加图片描述

11:service模块

Ansible 中使用 service 模块来控制管理服务的运行状态。其中使用 enabled 表示是否开机自动启动,取值为 true 或者 false;使用 name 定义服务名称;使用 state 指定服务状态,取值有 started、stoped、 restarted.

査看被管理组 web里所有主机 httpd 服务的状态
请添加图片描述
httpd 服务是否是开机自动启动状态。
请添加图片描述
提示表示被管理组里所有主机的 httpd 服务没有设置为开机自动启动状态

设置远程主机自启动 httpd 服务请添加图片描述
査看被管理主机 ansible-node2 的 httpd 状态
请添加图片描述
查看被管理组里所有主机的 httpd 服务是否是开机自动启动状态
请添加图片描述

12:setup模块

Ansible 中使用 setup 模块收集、査看被管理主机的 facts(facts 是 Ansible 采集被管理主机设备信息的一个功能)。每个被管理主机在接收并运行管理命令之前,都会将自己的相关信息( 操作系统版本、IP 地址等)发送给控制主机。
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/92886.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92886.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/92886.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

疏老师-python训练营-Day44预训练模型

浙大疏锦行 知识点回顾: 预训练的概念常见的分类预训练模型图像预训练模型的发展史预训练的策略预训练代码实战:resnet18 作业: 尝试在cifar10对比如下其他的预训练模型,观察差异,尽可能和他人选择的不同尝试通过ctrl进…

AI入门学习--如何写好prompt?

写好Prompt(提示词)是驾驭AI模型的核心技能。以下是结合测试工程师需求的 结构化方法论 和 黄金模板一、prompt设计金字塔终极心法: Prompt 对AI的测试需求文档,需像设计测试用例一样:可执行:明确输入输出…

Linux编程 IO(标准io,文件io,目录io)

标准IO C语言标准IO概述标准IO&#xff08;Standard Input/Output&#xff09;是C语言中用于处理文件和数据流的一组函数库&#xff0c;定义在<stdio.h>头文件中。与低级IO&#xff08;如read/write&#xff09;相比&#xff0c;标准IO提供了缓冲机制&#xff0c;提高了数…

C# WPF本地Deepseek部署

模型下载地址 using LLama; using LLama.Common; using System; using System.IO; using System.Threading.Tasks; using System.Windows; using System.Windows.Input;namespace YF_Talk {public partial class MainWindow : Window{private LLamaWeights _model;private LLa…

【Abp.VNext】Abp.Vnext框架模块学习

1、Abp.Vnext-集成 Volo.Abp.Core2、Abp.vNext-Web模块 Volo.Abp.AspNetCore.MVC框架&#xff08;framework文件夹&#xff09; 七、Abp.vNext-应用模块-Identity身份认证 业务模块&#xff08;modules文件夹->identity&#xff09; 1、添加领域模型 Volo.Abp.Identity.Doma…

【完整源码+数据集+部署教程】火柴实例分割系统源码和数据集:改进yolo11-rmt

背景意义 研究背景与意义 在计算机视觉领域&#xff0c;实例分割技术作为一种重要的图像处理方法&#xff0c;近年来得到了广泛的关注和应用。实例分割不仅能够识别图像中的物体类别&#xff0c;还能精确地分割出每个物体的轮廓&#xff0c;提供更为细致的视觉信息。这一技术在…

飞算JavaAI云原生实践:基于Docker与K8s的自动化部署架构解析

一、飞算JavaAI详细介绍 1.1 飞算JavaAI飞算JavaAI是飞算云智推出的一款革命性Java开发辅助工具&#xff0c;它通过人工智能技术深度赋能传统软件开发流程&#xff0c;特别为大学生课程设计、毕业设计等实践教学环节提供了强有力的技术支持。在当前高校计算机相关专业教学中&am…

小程序打通美团核销:解锁到店综合业态私域密码,赋能6000+门店破局增长

数字化浪潮奔涌而来&#xff0c;棋牌室、台球厅、亲子乐园等线下综合业态面临经营转型的关键节点。小程序与美团核销功能的深度耦合&#xff0c;正成为撬动私域流量的核心杠杆&#xff0c;为超6000家门店打通了一条低成本、高转化的经营快车道。过往经营模式中&#xff0c;线上…

Linux Shell:Nano 编辑器备忘

打开文件 sudo nano /etc/apt/sources.list选中多行&#xff0c;然后删除 用方向键将光标定位到要删除的起始位置按下 Alt A 设置锚点用方向键选择要删除的区域 (以上 3 步是为了选中文本)用 Ctrl K(剪切) 或 Alt D(直接删除) 全选并删除 按下 Alt \ 将光标移动到文件开头…

常见的设计模式(2)单例模式

目录 一、版本一&#xff1a;禁用构造与拷贝 二、版本二&#xff1a;注册析构函数/嵌套垃圾回收 &#xff08;1&#xff09;使用atexit注册程序结束时的函数 &#xff08;2&#xff09;使用对象嵌套垃圾回收 三、版本三&#xff1a;线程安全 四、版本四&#xff1a;编译器…

JAiRouter 0.2.1 更新啦:内存优化 + 配置合并 + IP 限流增强,运维体验再升级

JAiRouter 0.2.1 更新啦&#xff1a;内存优化 配置合并 IP 限流增强&#xff0c;运维体验再升级 如果你已经在 0.2.0 生产环境中稳定运行&#xff0c;那么这篇更新会让你无痛升级&#xff0c;直接“更轻、更稳、更省心”。 &#x1f4ce; 官方仓库 & issue 直达 https://…

学习嵌入式第二十六天

文章目录IO(续上)1.标准IO1.标准IO的接口2.流的定位2.文件IO1.概念&#xff1a;2.系统调用和库函数3.文件IO函数接口习题IO(续上) 1.标准IO 1.标准IO的接口 fwrite 原型&#xff1a;size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream); 功能&#xff1…

GDB 程序启动参数设置深度指南

GDB 程序启动参数设置深度指南 1. 概述 在程序调试过程中&#xff0c;正确设置启动参数对于验证程序行为、重现特定场景至关重要。GDB提供多种灵活的方式设置启动参数&#xff0c;特别是当您需要调试命令行参数处理逻辑或配置敏感型应用时。 2. 参数设置的核心方法 2.1 启动GDB…

Autudl华为昇腾系列NPU简介和部署推理yolo11 yolov8 yolov5分割模型

0.配置Autudl 下面图片是我所租的昇腾卡和具体环境版本&#xff0c;太具体的就不说了&#xff0c;有需要的话我单独出一期Autudl租显卡的教程&#xff0c;主要是为了学习昇腾环境如何运行Yolo系列模型。 0.1华为昇腾芯片&#xff08;Ascend&#xff09;简介 1.Ascend 310&…

什么是JSP和Servlet以及二者的关系

JSP&#xff08;JavaServer Pages&#xff09; 是“HTML 里写 Java”的模板技术&#xff0c;最终会被容器转换成 Servlet。Servlet 是“Java 里写 HTML”的 Java 类&#xff0c;直接继承 javax.servlet.http.HttpServlet&#xff0c;用来接收/响应 HTTP 请求。Servlet 是什么 纯…

【WonderTrader源码详解 1】【环境搭建 2】【编译安装WonderTrader】

一、引言 本篇来讲述如何搭建 wondertrader 和 wtpy 二、wondertrader 2.1 源码下载 # /home/leo/sda_1.6TBgit clone https://gitee.com/wondertrader/wondertrader.gitgit clone https://gitee.com/wondertrader/wtpy.git2.2 源码编译 cd /home/leo/sda_1.6TB/wondertrader/s…

hutool 作为http 客户端工具调用的一点点总结

场景一&#xff1a;客户端timeout 的时间给的很短//100毫秒 private static final int HTTP_TIMEOUT_MS 1 * 100; response HttpUtil.createPost(patrolresultconfirmUrl).body(JSONObject.toJSONString(search)).header("Authorization", token).timeout(HTTP_TI…

基于MongoDB/HBase的知识共享平台的设计与实现

标题:基于MongoDB/HBase的知识共享平台的设计与实现内容:1.摘要 在当今信息爆炸的时代&#xff0c;知识的有效共享和管理变得愈发重要。本研究的目的是设计并实现一个基于MongoDB/HBase的知识共享平台&#xff0c;以满足大规模知识数据的存储、高效查询和快速共享需求。方法上&…

PHP数组操作:交集、并集和差集

1. 交集&#xff08;Intersection&#xff09;交集是指两个集合中都存在的元素。$array1 [1, 2, 3, 4]; $array2 [3, 4, 5, 6];$intersection array_intersect($array1, $array2); print_r($intersection); // 输出: Array ( [2] > 3 [3] > 4 )2. 并集&#xff08;Uni…

Qt 常用控件 - 7

Text Edit&#xff08;多行输入框&#xff09;QTextEdit 表示多行输入框&#xff0c;也是一个富文本 & markdown 编辑器&#xff0c;能在内容超出范围时自动提供滚动条。QTextEdit&#xff1a;不仅仅能表示纯文本&#xff0c;还可以表示 htnl 和 markdownQPlainTextEdit&am…