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

ansible和saltstack安装和简单操作

目录

Ansible

详细描述

1. 简介

2. 架构

3. 特点

4. 优势

5. 适用场景

6. 简单的playbook示例

安装

配置环境

一、安装Ansible

二、配置SSH无密码登录

三、配置Ansible主机清单

模块操作示例

1. Setup模块

2. Copy模块

3. File模块

4. Command模块和shell模块

5. Group模块

6. User模块

7. Get_url模块

8. Yum模块

SaltStack

详细描述

1. 简介

2. 架构

3. 特点

4. 优势

5. 适用场景

6. 简单的状态文件(SLS)示例

安装

配置环境

一、安装SaltStack Master端

二、安装SaltStack Minion端

三、连接测试

模块操作示例

1. 查看模块

2. 查看模块的操作方法

3. 查看操作方法

4. Cmd模块

5. Pkg模块

6. Service模块

7. User模块

8. Group模块

9. File模块

Ansible 与 SaltStack 对比


Ansible

详细描述

1. 简介

Ansible 是一种简单而强大的自动化工具,主要用于配置管理、应用部署和任务执行。它由 Michael DeHaan 于 2012 年创建,并于 2015 年被 Red Hat 收购。Ansible 的目标是提供一种易于使用且无需复杂架构的自动化解决方案。

2. 架构

Ansible 的架构基于 “推送” 模式,主要由以下组件构成:

  • 控制节点(Control Node):运行 Ansible 命令的主机,通常是一台服务器或个人计算机。

  • 被管理节点(Managed Nodes):需要被配置或管理的目标主机。

  • Inventory(主机清单):定义了被管理节点的列表,以及它们的分组信息。

  • Playbooks(剧本):用 YAML 格式编写的文件,用于定义任务的执行顺序和逻辑。

  • Modules(模块):Ansible 的核心功能单元,用于执行具体的操作(如文件操作、服务管理等)。

  • Connection Plugins(连接插件):用于与被管理节点建立连接,最常用的是 SSH。

3. 特点

  • 无代理(Agentless):Ansible 无需在被管理节点上安装任何代理软件,仅通过 SSH 连接即可执行任务,简化了部署和管理。

  • 模块化:Ansible 提供了丰富的模块,涵盖了文件管理、服务控制、软件包安装等常见运维任务。

  • 易用性:Ansible 的配置文件采用 YAML 格式,易于阅读和编写,降低了学习成本。

  • 幂等性:Ansible 的任务执行具有幂等性,即多次执行相同任务的结果是一致的,不会导致意外的副作用。

  • 扩展性:用户可以自定义模块和插件,以满足特定需求。

4. 优势

  • 简单高效:Ansible 的设计简洁,易于上手,同时能够高效地完成复杂的任务。

  • 安全性:基于 SSH 的连接方式确保了通信的安全性。

  • 可扩展性:支持大规模部署,能够管理数千台服务器。

  • 社区支持:Ansible 拥有庞大的社区,提供了丰富的文档和插件资源。

5. 适用场景

  • 配置管理:自动化配置服务器、安装软件包、设置服务等。

  • 应用部署:快速部署应用程序到多个服务器。

  • 任务自动化:执行重复性任务,如备份、监控等。

  • 多环境管理:支持跨不同操作系统和平台的统一管理。

6. 简单的playbook示例

- name: Install and start Apachehosts: webserverstasks:- name: Install httpdyum:name: httpdstate: present- name: Start httpd serviceservice:name: httpdstate: started

安装

配置环境

local host:centos7(192.168.88.100)

ansible1:Ubuntu(192.168.88.120)

一、安装Ansible

yum -y install epel-release

yum -y install ansible

安装完成后,通过ansible --version命令验证安装结果,确保Ansible版本信息显示正常

二、配置SSH无密码登录

在CentOS 7主机上生成SSH密钥对

ssh-keygen

将公钥复制给远程主机

ssh-copy-id root@192.168.88.120

尝试通过SSH免密登录Ubuntu主机,验证登录是否成功

三、配置Ansible主机清单

编辑/etc/ansible/hosts文件,添加Ubuntu主机的IP地址

vim /etc/ansible/hosts

使用ansible ping模块测试与Ubuntu主机的连接

ansible webservers -m ping

如果返回pong,则表示连接成功,Ansible安装和配置完成

模块操作示例

1. Setup模块

  • 功能描述setup模块用于收集目标主机的详细信息,包括硬件配置(如CPU、内存、磁盘等)、操作系统版本、网络配置、环境变量等。这些信息可以作为后续任务的参考依据,帮助运维人员更好地了解目标主机的状态。

  • 应用场景:在进行系统配置、软件安装或故障排查时,通过setup模块获取目标主机的详细信息,可以快速定位问题或确定配置方案。

ansible webservers -m setup

2. Copy模块

  • 功能描述:该模块可实现从管理机向节点拷贝静态文件,并且设置合理的文件权限。Copy模块在复制文件时会先比较一下文件的checksum(校验和),如果相同则不会复制,返回状态为OK;如果不同才会复制,返回状态为changed。

  • 应用场景:在配置管理、部署应用程序或分发配置文件时,copy模块是常用的工具。

ansible all -m copy -a 'dest=/root src=/root/text/text1.txt'

3. File模块

  • 功能描述file模块用于管理文件、目录和链接的属性,例如创建、删除、设置权限、改变所有者等。它还可以用于创建目录、删除文件等操作。

  • 应用场景:在进行文件系统管理、配置文件修改或清理工作时,file模块非常实用。

ansible all -m file -a 'path=/root/text1.txt state=absent'

4. Command模块和shell模块

  • Command模块可以运行节点权限范围所有的Shell命令,但是command模块执行的命令是获取不到$HOME这样的环境变量的,还有一些运算符(>、<等),也不支持管道符
  • Shell模块是command模块的增强版,他可以执行远程主机的Shell脚本文件,也支持管道
ansible all -m shell -a 'ps -ef|grep mysql'
ansible all -m command -a 'ps -ef'

5. Group模块

  • 功能描述group模块用于管理用户组,包括创建、删除、修改用户组的属性等。

  • 应用场景:在进行系统用户管理、权限分配时,group模块是必不可少的工具。

ansible webservers -m group -a 'gid=2017 name=test'

6. User模块

  • 功能描述user模块用于管理用户账户,包括创建、删除、修改用户属性(如密码、用户组、登录Shell等)。

  • 应用场景:在进行用户管理、权限分配或系统配置时,user模块非常实用。

ansible webservers -m user -a 'name=test group=test'

7. Get_url模块

  • 功能描述get_url模块用于从指定的URL下载文件到目标主机的指定路径。它支持多种协议(如HTTP、HTTPS等),并可以设置文件的校验和,确保文件完整性。

  • 应用场景:在需要从远程服务器下载文件(如软件包、配置文件等)时,get_url模块非常方便。

ansible all -m get_url -a 'dest=/root url=http://www.baidu.com'

8. Yum模块

  • 功能描述yum模块用于在基于RPM的系统(如CentOS、RHEL等)上管理软件包。它支持安装、更新、删除软件包,并自动处理依赖关系。

  • 应用场景:在进行系统软件管理、安装应用程序时,yum模块是常用的工具。

ansible 192.168.88.120 -m yum -a "name=tree state=present"


SaltStack

详细描述

1. 简介

SaltStack 是一种开源的配置管理工具,由 Thomas Hatch 于 2011 年创建。它旨在提供一种高效、可扩展的解决方案,用于管理大规模基础设施。SaltStack 通过其独特的 “Master-Minion” 架构,实现了对大量服务器的集中管理。

2. 架构

SaltStack 的架构基于 “拉取” 模式,主要由以下组件构成:

  • Master(主节点):负责管理和分发任务,存储配置数据和指令。

  • Minion(从节点):被管理的主机,负责执行 Master 分发的任务。

  • States(状态):定义了目标主机的期望状态,类似于 Ansible 的 Playbooks。

  • Pillars(柱子):用于存储敏感数据或特定于环境的配置信息。

  • Grains(谷物):描述了 Minion 的系统信息(如操作系统、CPU、内存等)。

  • Beacons(信标):用于监控系统事件,并触发相应的响应。

3. 特点

  • Master-Minion 架构:通过集中式管理,实现了对大量服务器的高效管理。

  • 高并发能力:SaltStack 支持高并发通信,能够快速处理大量任务。

  • 灵活性:提供了丰富的 API 和插件机制,方便用户自定义功能。

  • 实时性:支持实时通信和任务执行,能够快速响应系统变化。

  • 多语言支持:支持多种编程语言(如 Python、Shell 等)编写状态文件和模块。

4. 优势

  • 高性能:SaltStack 的并发处理能力使其能够高效管理大规模集群。

  • 可扩展性:支持从几十台到数千台服务器的管理。

  • 灵活性:提供了丰富的自定义功能,能够满足复杂的需求。

  • 实时性:能够实时监控和响应系统事件,适合动态环境。

5. 适用场景

  • 大规模集群管理:适用于管理大规模数据中心或云计算环境。

  • 实时监控与响应:通过信标功能实时监控系统状态,快速响应事件。

  • 复杂环境管理:支持多种操作系统和平台的统一管理。

  • 自动化部署:快速部署和配置应用程序及服务。

6. 简单的状态文件(SLS)示例

apache:pkg.installed:- name: apache2service.running:- name: apache2- enable: True

安装

配置环境

master端:Ubuntu--2(192.168.88.121)

minion端:Ubuntu(192.168.88.120)

一、安装SaltStack Master端

apt install salt-master

启动SaltStack Master服务 

systemctl start salt-master
systemctl enable salt-master

二、安装SaltStack Minion端

apt install -y salt-minion

修改Minion端配置文件/etc/salt/minion,添加以下内容

vim /etc/salt/minion

启动Minion端服务

systemctl start salt-minion
systemctl enable salt-minion

三、连接测试

使用salt-key命令查看minion端连接情况

salt-key -L

测试salt命令验证master与minion端的通信

salt '*' test.ping
salt '*' cmd.run 'uptime'

安装saltstack完成

模块操作示例

1. 查看模块

salt 'saltminion' sys.list_modules

2. 查看模块的操作方法

salt 'saltminion' sys.list_functions service

3. 查看操作方法

salt 'saltminion' sys.doc service.start

4. Cmd模块

  • 功能描述cmd模块用于在目标主机上执行命令。它支持多种命令执行方式,包括简单的命令执行、脚本运行等。

  • 应用场景:在需要执行系统命令、脚本或进行系统状态检查时,cmd模块非常实用。

salt 'saltminion' cmd.run 'free -m'

5. Pkg模块

  • 功能描述pkg模块用于管理目标主机上的软件包。它支持安装、更新、删除软件包,并自动处理依赖关系。

  • 应用场景:在进行系统软件管理、安装应用程序时,pkg模块是常用的工具。

salt 'saltminion' pkg.install vsftpd

6. Service模块

  • 功能描述service模块用于管理目标主机上的服务。它支持启动、停止、重启服务,并可以查询服务状态。

  • 应用场景:在进行服务管理、故障排查时,service模块非常实用。

salt 'saltminion' service.start vsftpd
salt 'saltminion' service.enable vsftpd

7. User模块

  • 功能描述user模块用于管理目标主机上的用户账户。它支持创建、删除用户,修改用户属性(如密码、用户组等)。

  • 应用场景:在进行用户管理、权限分配时,user模块是必不可少的工具。

salt 'saltminion' user.add zzz

8. Group模块

  • 功能描述group模块用于管理目标主机上的用户组。它支持创建、删除用户组,修改用户组属性。

  • 应用场景:在进行用户管理、权限分配时,group模块是常用的工具。

salt 'saltminion' group.add test
salt 'saltminion' group.adduser test zzz

9. File模块

  • 功能描述file模块用于管理目标主机上的文件和目录。它支持文件复制、文件权限设置、目录创建等操作。

  • 应用场景:在进行文件系统管理、配置文件修改时,file模块非常实用。

salt 'saltminion' file.addend /etc/profile "export JAVA_HOME=/usr/local/jdk"


Ansible 与 SaltStack 对比

特性AnsibleSaltStack
架构无代理,基于 SSH 推送Master-Minion 架构,基于 ZeroMQ 拉取
安装复杂度简单,无需在被管理节点上安装代理需要在被管理节点上安装 Minion
并发能力中等,适合中小规模部署高并发,适合大规模集群
实时性任务执行后生效支持实时监控和响应
易用性配置文件简单,易于上手配置复杂,学习曲线较陡
适用场景中小规模部署,简单任务自动化大规模集群管理,复杂环境

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

相关文章:

  • AWS API Gateway配置日志
  • 在SpringBoot中使用AWS SDK实现邮箱验证码服务
  • React项目的状态管理:Redux Toolkit
  • @Transactional注解失效的原因有哪些?
  • Javascript 编程基础(5)面向对象 | 5.2、原型系统
  • java教程笔记(十一)-泛型
  • C语言字符数组输入输出方法大全(附带实例)
  • Axios请求超时重发机制
  • 亚矩阵云手机实测体验:稳定流畅背后的技术逻辑​
  • 面向无人机海岸带生态系统监测的语义分割基准数据集
  • Cursor 1.0正式推出:全面解析你的AI 编程助手
  • 湖北理元理律师事务所:企业债务重组的风险控制方法论
  • 办公提效的AI免费工具使用感悟
  • 大量企业系统超龄服役!R²AIN SUITE 一体化企业提效解决方案重构零售数智化基因
  • Inxpect安全雷达传感器与控制器:动态检测 + 抗干扰技术重构工业安全防护体系
  • 从“人找政策”到“政策找人”:智能退税ERP数字化重构外贸生态
  • 如何以 9 种方式将照片从手机传输到笔记本电脑
  • 手机如何防止ip关联?3种低成本方案
  • 23套橙色系精选各行业PPT模版分享
  • 【前端】每日一道面试题6:解释Promise.any和Promise.allSettled的使用场景及区别。
  • 安装VUE客户端@vue/cli报错警告npm WARN deprecated解决方法 无法将“vue”项识别为 cmdlet、函数
  • 智能对联网页小程序的仓颉之旅
  • 2018~2025:英伟达在具身智能机器人领域的关键布局详解
  • 探索 Java 垃圾收集:对象存活判定、回收流程与内存策略
  • 学习笔记(26):线性代数-张量的降维求和,简单示例
  • Komiko 视频到视频功能炸裂上线!
  • uniapp 集成腾讯云 IM 消息搜索功能
  • python中的经典视觉模块:OpenCV(cv2)全面解析
  • 【PDF PicKiller】PDF批量删除固定位置图片工具,默认解密,可去一般图、背景图、水印图!
  • Excel处理控件Aspose.Cells教程:使用 C# 在 Excel 中创建组合图表