当前位置: 首页 > ai >正文

Ansible部署应用

目录

  • 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模块

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里所有主机运行

http://www.xdnf.cn/news/17599.html

相关文章:

  • AR巡检:三大核心技术保障数据准确性
  • 聚合搜索中的设计模式
  • 【Unity】Unity中ContentSizeFitter有时无法及时自适应大小问题解决
  • Baumer高防护相机如何通过YoloV8深度学习模型实现木板表面缺陷的检测识别(C#代码UI界面版)
  • python --- 基础语法(1)
  • Web 开发 14
  • [SC]如何使用sc_semaphore实现对共享资源的访问控制
  • 【网络运维】Linux和自动化:Ansible
  • 基于RAII的智能指针原理和模拟实现智能指针
  • 企业培训笔记:宠物信息管理--实现宠物信息的添加
  • NLP—词向量转换评论学习项目分析
  • 【Java项目与数据库、Maven的关系详解】
  • Docker部署kafka实操+Java中访问
  • 42.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--集成网关--网关集成认证(一)
  • 云计算概述
  • 【web站点安全开发】任务2:HTML5核心特性与元素详解
  • GitLab CI + Docker 自动构建前端项目并部署 — 完整流程文档
  • 跨界重构规则方法论
  • TCP服务器网络编程设计流程详解
  • Linux Ansible的安装与基本使用
  • Linux:企业级WEB应用服务器TOMCAT
  • 技术干货|Kafka 如何实现零停机迁移
  • Stereolabs ZED相机 选型指南:双目 / 单目、短距 / 长距,如何为机器人视觉系统匹配最优方案?
  • selenium常见的与浏览器版本不兼容闪退问题
  • 计算机网络2-2:物理层下面的传输媒体
  • 【Node.js从 0 到 1:入门实战与项目驱动】2.2 验证安装(`node -v`、`npm -v`命令使用)
  • 计算机视觉(4)-相机基础知识恶补
  • Flink Redis维表:Broadcast Join与Lookup Join对比及SQL示例
  • 从零部署Nacos:替代Eureka的服务注册与服务发现基础教程
  • 使用Excel制作甘特图