saltstack 服务器批量管理
学习saltstack 服务器批量管理
1、saltstack 简介
SaltStack是一个开源的、新的基础平台管理工具,使用Python语言开发,同时提供Rest API方便二次开发以及和其他运维管理系统进行集成。相对于出道比较早的Puppet,SaltStack先天的优势就是简单、易用,可以非常快速的在团队中推广和使用,而且运行多平台。
SaltStack目前拥有四大主要功能
- 远程执行:就是在管理节点上实现在上百台、上千台机器上同时执行一个命令。
- 配置管理:也可以称之为状态管理,你可以描述一个状态。例如,某台机器要安装Nginx软件包、Nginx必须是启动的状态、Nginx有一个配置文件(内容和某个地方的一样)。你用一种描述语法描述出来后交给SaltStack,SaltStack就可以帮你实现,而不用你手动进行Nginx软件包的安装、配置文件的修改、启动等。
- 云管理:SaltStack有一个组件叫作salt-cloud,它可以帮你自动化的进行云主机的创建和管理,支持很多公有云或私有云,例如AWS、阿里云、HP云、OpenStack、CloudStack等。
- 事件驱动:事件驱动基础设施是SaltStack最强大也是最神秘的功能,前面的远程执行和配置管理是最基础的的,事件驱动是指SaltStack在日常运行中可以产生和捕捉事件,并根据捕捉到的事件触发对应的操作。
SaltStack的四种运行方式
- Local:在本地运行或者说单台使用SaltStack
- Minion/Master: 传统的客户端/服务器端(C/S)架构
- Syndic: 使用代理实现架构扩展,用于管理更多的节点
- Salt SSH: 无须安装客户端,直接通过SSH通信
2、SaltStack演示操作
1、首先需要准备至少两台的虚拟机
192.168.16.130 master
192.168.16.193 minion
2、 修改2台机器的主机名,用于主机名通信,加速salt的命令执行
hostnamectl set-hostname master
hostnamectl set-hostname minion1
3、关闭2台机器的iptables防火墙策略,防止端口拒绝
iptables -F #清空防火墙规则
systemctl stop firewalld #关闭防火强服务
systemctl disable firewalld #禁止防火墙开机自启
4、分别安装2个软件
master机器上装
yum install salt-master -y
minion机器上装
yum install salt-minion -y
5、配置/etc/hosts文件,用于主机名通信
192.168.16.190 master
192.168.16.193 minion1
6、修改salt的master和minion的配置文件
- 在master机器上修改 /etc/salt/master 文件改为如下
[root@master ~]# grep -vE "^$|#" /etc/salt/master
interface: 0.0.0.0
publish_port: 4505
user: root
worker_threads: 5
ret_port: 4506
- 在minion机器上修改 /etc/salt/minion 文件改为如下
[root@minion1 ~]# grep -vE "^$|#" /etc/salt/minion
master: master
master_port: 4506
user: root
id: minion1
5、分别启动salt-master和salt-minion
[root@master ~]# systemctl start salt-master
[root@minion1 ~]# systemctl start salt-minion
6、查看密钥是否被读取到了
在master上输入 salt-key -L 查看是否读取到了minion的信息
[root@master ~]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
minion1
Rejected Keys:
7、分别检查2台机器的密钥信息,是否一致
- 在master机器上输入
salt-key -f minion1
[root@master ~]# salt-key -f minion1
Unaccepted Keys:
minion1: 4f:51:a8:33:9d:65:8d:81:0b:84:6f:08:f7:b6:23:9c
- 在minion机器上输入
salt-call --local key.finger
[root@minion1 ~]# salt-call --local key.finger
local:
4f:51:a8:33:9d:65:8d:81:0b:84:6f:08:f7:b6:23:9c
8、接收minion1的密钥,使用 salt-key -a minion1 进行管理
[root@master ~]# salt-key -a minion1
The following keys are going to be accepted:
Unaccepted Keys:
minion1
Proceed? [n/Y] y
Key for minion minion1 accepted.
9、用salt的命令salt '*' test.ping 测试服务器是否存活
[root@master ~]# salt '*' test.ping
minion1:
True
salt '*' test.ping #发送命令接口,ping一下被管理的机器,是否存活,返回true活着,负责挂掉了,或者salt-minion 服务器宕机了
salt # 是核心管理命令
"*" # 目标匹配
test.ping # 是test模块下的一个功能函数
10、对于密钥管理的命令如下
salt-key 参数如下
-L #查看KEY状态
-A #允许所有
-D #删除所有
-a #认证指定的key
-d #删除指定的key
-r #注销掉指定key(该状态为未被认证)
11、学习salt的命令接口
- 测试命令
test.fib生成斐波那契数列
[root@master ~]# salt 'minion2' test.fib 50
minion2:
|_
- 0
- 1
- 1
- 2
- 3
- 5
- 8
- 13
- 21
- 34
- 2.14576721191e-06
salt '*' cmd.run 'touch /tmp/一给我里giao' --summary输出salt命令执行结果的详细情况
[root@master ~]# salt 'minion2' cmd.run 'touch /tmp/一给我里giao' --summary
[root@minion1 tmp]# ls
vmware-root 一给我里giao
12、远程安装nginx,以及启动nginx
[root@master ~]# salt '*' cmd.run "systemctl status nginx"
minion2:
Unit nginx.service could not be found.
ERROR: Minions returned with non-zero exit code
[root@master ~]# salt 'minion*' cmd.run "yum install nginx -y"
minion1:
Loaded plugins: fastestmirror
Repository epel is listed more than once in the configuration
Repository epel-debuginfo is listed more than once in the configuration
Repository epel-source is listed more than once
.
.
.
[root@master ~]# salt '*' cmd.run "systemctl status nginx"
minion1:
* nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Dec 25 22:13:21 minion1 systemd[1]: Unit nginx.service cannot be reloaded because it is inactive.
ERROR: Minions returned with non-zero exit code
minion1 上的信息:
[root@minion2 tmp]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Dec 25 22:13:21 minion2 systemd[1]: U
13、salt提供的软件安装模块,其实也是在远程调用yum命令而已
[root@master 192.168.11.72 ~]$salt '*' pkg.install "nginx"
#卸载minion上的nginx
[root@master 192.168.11.72 ~]$salt '*' pkg.remove "nginx"
#检查pkg包的版本
[root@master 192.168.11.72 ~]$salt '*' pkg.version "nginx"
14、salt提供的服务信息模块其实调用的是 systemctl 命令
[root@master ~]# salt '*' service.start "redis"
minion1:
True
[root@master ~]# salt '*' service.status "redis"
minion1:
True
15、输出json格式的数据,以及yaml格式的数据
[root@master ~]# salt '*' service.status "redis" --out=json
{
"minion1": true
}
16、salt采集服务器静态信息之grains模块,其实就是用python写的一个超大的字典
[root@master ~]# salt '*' grains.item fqdn_ip4 --out=json
{
"minion2": {
"fqdn_ip4": [
"192.168.16.56"
]
}
}
saltstack 服务器批量管理的更多相关文章
- windows下运行的linux服务器批量管理工具(带UI界面)
产生背景: 由于做服务器运维方面的工作,需要一人对近千台LINUX服务器进行统一集中的管理,如同时批量对LINUX服务器执行相关的指令.同时批量对LINUX服务器upload程序包.同时批量对LINU ...
- vps批量管理,服务器批量管理,3389批量管理工具
注册的第一天,把我的工具弄上来.如果有一个软件,如果你有vps虚拟机,服务器,3389中的任意一种两种或全部,而且还是批量的,需要管理.那么,你可能会想找个软件来管理吧,毕竟,一个人忙不过来管理这么多 ...
- SHELL实现同时操作多个服务器:服务器批量管理
引言: 1.如果你想知道你所管理的几万台服务器的/home分区使用率是多少. 2.如果你想为你所管理的几万台服务器添加同一个计划任务你该怎么办? 3.如果你想让你所管理的几万台 ...
- 远程管理服务器--批量管理服务器,vps
一般大型的企事业单位都有自己的服务器,但是服务器一般都放在机房,辐射较大,噪音大,如何能有效的避免这一情况呢?哈哈,那就来个远程桌面,远程操作服务器吧. 一.使用 iis7远程连接管理工具工具下载官网 ...
- 服务器批量管理软件ansible安装以及配置
1.yum安装(管理主机以及被管理主机都需要安装) yum install epel-release yum install ansible 2.配置管理主机 vim /etc/ansible/hos ...
- linux expect自动登陆远程服务器 批量管理服务器
#!/usr/bin/expect set ipaddress [lindex $argv 0] set passwd [lindex $argv 1] set timeout 3 spawn ssh ...
- Ansible实现批量管理服务器
Ansible介绍: a. ansible是一个基于Python开发的自动化运维工具b. ansible是一个基于ssh协议实现远程管理的工具c. ansible软件可以实现多种批量管理操作(批量系统 ...
- saltstack批量管理文件和计划任务
简介 saltstack是由thomas Hatch于创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统.用来管理你的基础架构,可轻松管理成千上万台服务器. 关于saltstack更多功能本 ...
- 使用ansible批量管理远程服务器
使用ansible批量管理远程服务器 背景 本地需要管理远程的一批服务器,主要执行以下任务: 1) 将本地的文件复制到远端所有服务器: 2) 需要在远程服务器中执行一个个命令: 远端服务器路径并非完全 ...
随机推荐
- Ch2信息的表示和处理——caspp深入理解计算机系统
目录 第2章 信息的表示和处理 2.1 信息存储 2.1.1 十六进制 一.表示法 二.加减 三.进制转换 2.1.2 字 2.1.3 数据大小 2.1.4 字节顺序与表示 一.字节的排列规则 二.打 ...
- 第 16 章 【硬核!】 垃圾回收相关 GC细讲
第 16 章 垃圾回收相关概念 1.System.gc() 的理解 1.1.System.gc() 方法 System.gc() 方法 在默认情况下,通过System.gc()者Runtime.get ...
- Google、Facebook等均开始支持的HTTP3到底是个什么鬼?
GitHub 19k Star 的Java工程师成神之路,不来了解一下吗! 最近一段时间以来,关于HTTP/3的新闻有很多,越来越多的国际大公司已经开始使用HTTP/3了. 所以,HTTP/3已经是箭 ...
- K8S构建1台master2台node+Harbor_笔记
部署环境: master.node:centos7虚拟机 网络使用本地网卡共享到VMnet1(仅主机),虚拟机使用VMnet1. 准备文件: CentOS-7-x86_64-Minimal-1810. ...
- 如何从零开发一个NuGet软件包?
作者:依乐祝 首发地址:https://www.cnblogs.com/yilezhu/p/14175019.html 我想目前每个.net开发人员都应该知道nuget.org和NuGet软件包吧.但 ...
- 每天学一点ES6(一)开始
最近学习vue,发现很多用法都不会了,虽然照猫画虎可以跑起来,但是总感觉很朦胧,是是而非的感觉不太好. 听说这些都是ES6的用法,所以决定要学习一下ES6 ES6 全称:ECMASctipt 6 简称 ...
- 十大经典排序算法最强总结(含Java、Python码实现)
引言 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法.排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面 ...
- Qt学习笔记-Qt5和Qt4在音频方面的不同-QtAV
之前学习qt4的时候,播放音频用的是phonon播放后端插件+mplayer. 今天改用qt5了.qt5中去掉了phonon模块加了multimedia.但是依然无法播放音乐,因为没有ffmpge s ...
- Python 字符串操作分类
应用举例: str="abc defghi jklm nopqrstuvwxyz" print(str.isspace()) 运行结果: False 1) 判断类型 方法 | 说明 ...
- js表单简单验证(手机号邮箱)
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncod ...