Saltstack+Shell自动化分发脚本

2023-11-23 07:10

本文主要是介绍Saltstack+Shell自动化分发脚本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

目的:用Saltstack工具去部署批量服务器,自动化安装(卸载)服务(比如MySQL)。

1

2

3

4

5

6

[root@node2 ~]# ll

总用量 304228

-rw-r--r-- 1 root root 311516309 3月  10 2015 mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz

-rwxr-xr-x 1 root root      6628 3月  25 12:52 MySQL_二进制安装.sh

-rwxr-xr-x 1 root root       590 3月  25 12:53 MySQL_二进制卸载.sh

[root@node2 ~]#

1、查看Master和minion状态。

 

 

Masternode2192.168.1.221
minionnode4192.168.1.223

1.1)查看master状态信息:

 

 

1

2

3

4

5

6

[root@node2 ~]# netstat -atupn|grep --color -E '4505|4506'

tcp        0      0 0.0.0.0:4505                0.0.0.0:*                   LISTEN      2897/python2.6      

tcp        0      0 0.0.0.0:4506                0.0.0.0:*                   LISTEN      2915/python2.6      

tcp        0      0 192.168.1.221:4505          192.168.1.223:58448         ESTABLISHED 2897/python2.6      

tcp        0      0 192.168.1.221:4506          192.168.1.223:53904         ESTABLISHED 2915/python2.6      

[root@node2 ~]#

1.2)查看当前的salt key信息(minion)我只配置了一个:

1

2

3

4

5

6

7

[root@node2 ~]# salt-key -L

Accepted Keys:

node4

Denied Keys:

Unaccepted Keys:

Rejected Keys:

[root@node2 ~]#

 

1.3)查看minion状态信息:

1

2

3

4

5

[root@node2 ~]# salt 'node4' cmd.run 'netstat -atupn|grep python'

node4:

    tcp        0      0 192.168.1.223:53904         192.168.1.221:4506          ESTABLISHED 2846/python2.6      

    tcp        0      0 192.168.1.223:58448         192.168.1.221:4505          ESTABLISHED 2846/python2.6

[root@node2 ~]#

1.4)分发Shell脚本和包并授权:

1.4.1)常用cp模块介绍:(其它模块可看我其它相关博客)

cp.get_file   从主服务器下载目录

cp.get_dir    从主服务器下载文件

cp.get_url    从服务器下载指定URL文件

1

2

3

4

5

6

7

8

9

10

11

[root@node2 ~]# salt 'node4' cp.get_file salt://mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz /root/mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz

node4:

    /root/mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz

[root@node2 ~]#

[root@node2 ~]# salt 'node4' cp.get_file salt://MySQL_install.sh /root/MySQL_install.sh

node4:

    /root/MySQL_install.sh

[root@node2 ~]# salt 'node4' cp.get_file salt://MySQL_remove.sh /root/MySQL_remove.sh

node4:

    /root/MySQL_remove.sh

[root@node2 ~]#

1.4.2)minion查看;

1

2

3

4

5

6

[root@node4 ~]# ll

总用量 304232

-rw-r--r-- 1 root root 311516309 3月  25 14:06 mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz

-rw-r--r-- 1 root root      6628 3月  25 14:09 MySQL_install.sh

-rw-r--r-- 1 root root       590 3月  25 14:10 MySQL_remove.sh

[root@node4 ~]#

1.4.3)脚本加权:

1

2

3

[root@node2 ~]# salt 'node4' cmd.run 'chmod +x /root/*.sh'

node4:

[root@node2 ~]#

1.5)脚本安装:

1.5.1)安装

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

[root@node2 ~]# salt 'node4' cmd.run '/root/MySQL_install.sh'

node4:

    ?[37;32m  开始MySQL的安装! ?[0m

    ?[37;32m MySQL安装目录已经创建完成![/usr/local/mysql下] ?[0m

    ########################################################!

    ?[37;32m MySQL需要的的用户和组创建完成! ?[0m

    ########################################################!

    安装MySQL需要的基本依赖包!

    ?[37;32m MySQL需要的基本依赖包已安装完成! ?[0m

    ########################################################!

    初始化MySQL!

    ?[37;32m MySQL初始化成功! ?[0m

    ########################################################!

    更改MySQL权限属组权限

    ?[37;32m 更改MySQL目录权限属组权限成功! ?[0m

    ########################################################!

    创建并配置mysql的启动文件!

    ?[37;32m MySQL启动文件已经创建配置完成! ?[0m

    ########################################################!

    导入优化好的my.cnf到/etc/

    ?[37;32m MySQL的配置文件已准备完毕! ?[0m

    ########################################################!

    启动MySQL服务

    ?[37;32m MySQL服务启动成功! ?[0m

    ########################################################!

    配置MySQL的root账号密码!

    ?[37;32m MySQL的root默认账号密码是renzhiyuan ?[0m

    ########################################################!

[root@node2 ~]#

wKioL1iv2Lbz90Q4AAAdlt58JhE197.png

1.5.2)卸载:

1

2

3

4

5

6

7

[root@node2 ~]# salt 'node4' cmd.run '/root/MySQL_remove.sh'

node4:

    ?[37;32m 开始MySQL卸载! ?[0m

    ########################################################!

    ?[37;32m MySQL卸载成功! ?[0m

    ########################################################!

[root@node2 ~]#

其实自动化可以放在一个脚本批量执行,博主只是为了更方便的分享知识,未免写的有点多,欢迎大家指正。

登录乐搏学院官网http://www.learnbo.com/

或关注我们的官方微博微信,还有更多惊喜哦~

本文出自 “永不放弃!任志远” 博客,谢绝转载!

转载于:https://my.oschina.net/learnbo/blog/879464

这篇关于Saltstack+Shell自动化分发脚本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/416240

相关文章

shell中set -u、set -x、set -e的使用

《shell中set-u、set-x、set-e的使用》本文主要介绍了shell中set-u、set-x、set-e的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录✅ 1. set -u:防止使用未定义变量 作用: 示例:❌ 报错示例输出:✅ 推荐使用场景:✅ 2. se

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

Python使用python-docx实现自动化处理Word文档

《Python使用python-docx实现自动化处理Word文档》这篇文章主要为大家展示了Python如何通过代码实现段落样式复制,HTML表格转Word表格以及动态生成可定制化模板的功能,感兴趣的... 目录一、引言二、核心功能模块解析1. 段落样式与图片复制2. html表格转Word表格3. 模板生

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

《Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)》本文主要介绍了Golang分布式锁实现,采用Redis+Lua脚本确保原子性,持可重入和自动续期,用于防止超卖及重复下单,具有一定... 目录1 概念应用场景分布式锁必备特性2 思路分析宕机与过期防止误删keyLua保证原子性可重入锁自动

Linux实现简易版Shell的代码详解

《Linux实现简易版Shell的代码详解》本篇文章,我们将一起踏上一段有趣的旅程,仿照CentOS–Bash的工作流程,实现一个功能虽然简单,但足以让你深刻理解Shell工作原理的迷你Sh... 目录一、程序流程分析二、代码实现1. 打印命令行提示符2. 获取用户输入的命令行3. 命令行解析4. 执行命令

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到