SaltStack是一个服务器基础架构集中化管理平台,具有配置管理、远程执行、监控等功能,通常能够理解为简化版的puppet和增强版的func。SaltStack基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia二、python-msgpack和PyYAML等)构建。 经过部署SaltStack环境,咱们能够在成千上万台服务器上作到批量执行命令,根据不一样业务特性进行配置集中化管理、分发文件、采集服务器数据、操做系统基础及软件包管理等,SaltStack是运维人员提升工做效率、规范业务配置与操做的利器。html
SaltStack是一种全新的基础设施管理方式,部署轻松,在几分钟内能够运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通信。python
Saltstack能够实现云计算与数据中心架构编排,Saltstack能够由zabbix监控事件调用,经过Saltstack的salt-cloud实现对docker和openstack等云平台的支持,配合saltstack的mine实时发现功能就能够实现各类云平台业务自动扩展;Saltstack能够与CMDB相结合实现运维平台化、自动化和智能化。linux
Saltstack在企业中实现服务器部署的自动化运维,saltstack是基于python开发的一套C/S架构配置管理工具,它的底层使用zeroMQ消息队列pub/sub方式通讯,使用SSL证书签发的方式进行认证管理。nginx
salt咱们选择了0.16.0版,该版中加入了multi-masterr 特性,在这种架构下全部的minion将链接到全部配置的master上去。当一个master出现故障可使用其他的master继续提供服务,不会影响咱们的正常使用。web
优缺点分析:优势是可使用简单的配置模块或复杂的脚本,Web界面能够看到运行和监控的工做状态、事件日志,扩展能力极强,缺点是缺乏生成深度报告的能力。redis
实现标准化 运维 : mongodb
第一步是物理基础设施的标准化,例如,识别物理对像服务器、交换机、机柜等硬件;识别这些物理对像的属性,服务器的序列号、ip地址、厂商等信息;识别这些对像之间的关系,服务器所在的机柜、接入哪一个交换机的哪一个接口了等信息。docker
第二步是应用的标准化,应用服务、中间件,数据库等;例如,数据库的表、视图、存储过程的标准化,表的字段名、值,索引等,表和视图之间的关联关系等。shell
第三步是流程标准化,如备份、软件升级、杀毒,新业务上线等流程的标准化,数据库
saltstack架构以下图:
(1)、部署简单、方便;
(2)、支持大部分UNIX/Linux及Windows环境;
(3)、主从集中化管理;
(4)、配置简单、功能强大、扩展性强;
(5)、主控端(master)和被控端(minion)基于证书认证,安全可靠;
(6)、支持API及自定义模块,可经过Python轻松扩展。
(1)、minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和 minion.pub(public key),而后将 minion.pub发送给master。
(2)、master在接收到minion的public key后,经过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的 public key,而后master就能对minion发送指令了。
四、Master与Minion的链接
(1)、SaltStack master启动后默认监听4505和4506两个端口。4505(publish_port)为saltstack的消息发布系统,4506(ret_port)为saltstack客户端与服务端通讯的端口。若是使用lsof 查看4505端口,会发现全部的minion在4505端口持续保持在ESTABLISHED状态。
一、肯定saltstack软件依赖关系是否知足要求:saltstack要求python的版本大于2.6或小于3.0,还须要检查如下的库,包括msgpack-python、yaml、jinja二、markupsafe、apache-libcloud、requests等。
三、建立一个master服务的备份节点并复制主master节点的key到备节点:
默认的master的private key是在目录: /etc/salt/pki/master. 将该目录下的master.pem拷贝到备master节点的同一位置,对master的public key文件master.pub作一样的操做,启用备master节点,在备节点接受key。
四、重启minions:配置完成后,minion将会对主master和备master进行核对,而且两个master都对minion有操做权限。
注:minion能够自动检测失败的master,而且尝试重连到一个更快的master,将minion端的参数master_alive_interval 设置为true,便可开启该功能。
五、saltstack状态文件的编写,saltstack上线后,运维工做从复杂的重复的服务器部署和配置工做转移到saltstack状态文件的编写和维护,状态文件的编写要考虑模块化和通用性,在大批量部署以前要通过测试,没有问题后再部署,如下是一些常常用到的测试命令:
(1)、查询网络链接状况--是否能链接到客户端
(2)、查询网卡ip
(3)、查询磁盘空间
还有不少常常用到的命令在此就不一一列举了,Saltstack能够实现云计算与数据中心架构编排,Saltstack能够由zabbix监控事件调用,经过Saltstack的salt-cloud实现对docker和openstack等云平台的支持,配合saltstack的mine实时发现功能就能够实现各类云平台业务自动扩展;Saltstack能够与CMDB相结合实现运维平台化、自动化和智能化。
一、cobbler实现自动装机
二、saltstack实现工程自动化配置
三、kubernetes实现容器自动化编排
四、zabbix实现自动化监控
五、elastic实现应用日志自动化收集
六、jenkins实现开发持续化交付
七、自动化运维是基于流程化的框架
•传统运维效率低,大多工做人为完成
•传统运维工做繁琐,容易出错
•传统运维每日重复作相同的事情
•传统运维没有标准化流程
•传统运维的脚本繁多,不能方便管理
•自动化运维就是要解决上面全部问题
• Puppet (www.puppetlabs.com)
基于rubby开发,c/s架构,支持多平台,可管理配置文件、用户、cron任务、软件包、系统服务等。 分为社区版(免费)和企业版(收费),企业版支持图形化配置。
• Saltstack(官网 https://saltstack.com,文档docs.saltstack.com )
基于python开发,c/s架构,支持多平台,比puppet轻量,在远程执行命令时很是快捷,配置和使用比puppet容易,能实现puppet几乎全部的功能。
• Ansible (www.ansible.com )
更saltstack安装加简洁的自动化运维工具,不须要在客户端上安装agent,基于python开发。能够实现批量操做系统配置、批量程序的部署、批量运行命令。
• ITIL即信息技术基础架构库(Information Technology Infrastructure Library),主要适用于IT服务管理(ITSM)。ITIL为企业的IT服务管理实践提供了一个客观、严谨、可量化的标准和规范。ITIL已经成为了IT服务管理的国际标准,而CMDB配置管理数据库(Configuration Management Database)则是实现ITIL最重要的内容。
• 已个新业务上线须要的操做 : DNS变动、LVS变动、OS初始化、自动化测试、持续部署、持续反馈、监控、业务调用关系配置等等。
•
企业自动化运维整体规划图:
SaltStack是一个服务器基础架构集中化管理平台,具有配置管理、远程执行、监控等功能,基于Python语言实现。
安装SaltStack后咱们就能够在成千万台服务器上作到批量执行命令,根据不一样业务进行配置集中化管理、传送文件、修改配置,采集数据、启停程序及命令执行等,SaltStack是运维工程人员提升工做效率、规范业务配置与操做的利器。
如图所示,管理员经过salt的主控端master节点上的4505,4506端口服务对安装了minion的被控端进行管理。结合被控端的业务分组和YAML规范的sls文件定义,实现被控主机状态管理。
测试环境:
master: 192.168.1.101
minion1: 192.168.1.102
minion2: 192.168.1.103
master安装
yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm yum install salt-master -y
minion安装
yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm yum install salt-minion -y
master配置
#绑定master通讯IP
interface: 192.168.1.101 #自动认证,避免手动运行salt-key来确认证书信任 auto_accept: True #指定文件根目录位置 file_roots: base: - /srv/salt/
minion配置
#制定master通讯ip master: 192.168.1.101 #修改被控端主机识别id,建议使用操做系统主机名来配置 id: server2 #192.168.1.103上配置server3
master服务启动
systemctl start salt-master systemctl enable salt-master
minion服务启动
systemctl start salt-minion systemctl enable salt-minion
利用Saltstack远程执行命令,命令格式为:
salt ‘<操做目标>’ <方法> [参数]
一、在server2上执行free -m命令查看内存
salt ‘server2’ cmd.run 'free -m'
二、在全部机器上执行df -k命令磁盘使用状况
salt '*' cmd.run 'df -k'
三、将主控机配置的主目录下的文件test.txt复制到全部机器的/tmp下
salt '*' cp.get_file salt://test.txt /tmp
四、在server2上配置定时任务
salt server2 cron.set_job root '*' '*' '*' '*' 1 /usr/bin/weekly
说明
master须要开启4505,4506端口
• SaltStack是一个服务器基础架构集中化管理平台,具有配置管理、远程执行、监控等功能,基于Python语言实现。
• saltstack介绍https://docs.saltstack.com/en/latest/topics/index.html
• 可使用salt-ssh远程执行,相似ansible,
• 也支持c/s模式,下面咱们将讲述该种模式的使用,须要准备两台机器
• 133.130为服务端,133.132为客户端
• 设置hostname以及hosts,aming-01,aming-02
• 两台机器所有安装saltstack yum源
• yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
• 130上执行 yum install -y salt-master salt-minion
• 132上执行 yum install -y salt-minion
实例:
设置主机名:wang -01,wang-02
• 133.130服务端操做
[root@localhost 01]# vi /etc/hosts 192.168.133.130 wang-01 #增长下面两行 192.168.133.132 wang-02 [root@localhost 01]# cd /usr/local/src [root@localhost src]# yum install -y yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm [root@localhost 01]# vi /etc/hosts 192.168.133.130 wang-01 #增长下面两行 192.168.133.132 wang-02 [root@localhost 01]# yum install -y salt-master salt-minion [root@localhost 01]# yum list | grep salit #橘黄色的是yum安装的 [root@localhost 01]#
133.132客户端上操做
[root@localhost 02]# vi /etc/hosts 192.168.133.130 wang-01 #增长下面两行 192.168.133.132 wang-02 [root@localhost 01]# cd /usr/local/src [root@localhost src]# yum install -y yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm [root@localhost 02]# yum install -y salt-minion [root@localhost 02]# yum list | grep salit # 罗列出salt有关的包
一。准备工做
1.全部服务器操做系统root帐户密码须要一致,且网络互通
2.pssh工具:能够实现批量执行命令,发送文件等等,详细能够关注我另外博文《Linux批量操做pssh工具》
3.ssh密钥同步:即先生成ssh-key,并经过pscp工具发送至每一台服务器/root/.ssh上,实现服务器之间ssh免密码登陆,详细能够关注我另外博文《Linux免密码登陆》
4.设计好每台服务器IP与主机名Hostname对应关系 /root/host例如:
192.168.225.128 server1
192.168.225.129 server2
192.168.225.130 server3
192.168.225.131 server4
192.168.225.132 server5
192.168.225.133 server6
192.168.225.134 server7
192.168.225.135 server8
192.168.225.136 server9
二。批量修改主机名
1.添加hostname.sh文件
[aliyunzixun@xxx.com ~]# vim hostname.sh
ip=`ifconfig eth0 | grep 'inet ' | awk '{print $2}'`
hostname=`cat /root/host | grep $ip | awk '{print $2}'`
echo $ip
echo $hostname
hostnamectl set-hostname --static $hostname
hostname $hostname
注意:我们是经过服务器IP地址来修改主机名的,上面接口必定要对应准确,命令较为简单。
2.把生成的这两个文件(host与hostname.sh)经过pscp工具发送到全部的服务器上任意的同一目录下
pscp -h iplist /root/host /root/hostname.sh /root/# iplist是全部服务器IP,若是不会使用,请看准备工做第二点。
3.经过pssh工具,批量给予hostname.sh这个文件的可执行权限
pssh -h iplist -i 'chmod +x /root/hostname.sh' # iplist是全部服务器IP,若是不会使用,请看准备工做第二点。
4.经过pssh工具,批量执行hostname.sh文件
pssh -h iplist -i 'sh /root/hostname.sh'
三。其余
这种批量修改方法比较简单,合适我们这种不常用脚本的人,另外以上操做系统为centos7以上,
• 130上编辑配置文件
• vi /etc/salt/minion //增长
• master: aming-01
• 启动服务systemctl start salt-master; systemctl start salt-minion
实例:
130上编辑配置文件
[root@localhost 01]# vi /etc/salt/minion //增长 把#master:salt 修改为 master: aming-01 #master的主机名 [root@localhost 01]# systemctl start salt-master 启动服务 [root@localhost 01]# ps aux | grep salt #查看salt启动成功没 注意:minion不监听端口,master监听 [root@localhost 01]# netstat -lntp master监听的端口 [root@localhost 01]# systemctl start salt-minion #若是启动不了。更换成02,在02中安装salt-master [root@localhost 02]# [root@localhost 02]#
• 132上编辑配置文件
• vi /etc/salt/minion //增长
• master: aming-01
• 启动服务systemctl start salt-minion
•
• 服务端监听4505和4506两个端口,4505为消息发布的端口,4506为和客户端通讯的端口
实例:
[root@localhost 02]# vi /etc/salt/minion //增长 把#master:salt 修改为 master: aming-02 #master的主机名 [root@localhost 02]# systemctl start salt-minion [root@localhost 02]# ps aux | grep salt #查看salt启动成功没 [root@localhost 02]# [root@localhost 02]#
• master端和minion端通讯须要创建一个安全通道,传输过程须要加密,因此得配置认证,也是经过密钥对来加密解密的
• minion在第一次启动时会在/etc/salt/pki/minion/下生成minion.pem和minion.pub,其中.pub为公钥,它会把公钥传输给master
• master第一次启动时也会在/etc/salt/pki/master下生成密钥对,当master接收到minion传过来的公钥后,经过salt-key工具接受这个公钥,一旦接受后就会在/etc/salt/pki/master/minions/目录里存放刚刚接受的公钥,同时客户端也会接受master传过去的公钥,把它放在/etc/salt/pki/minion目录下,并命名为minion_master.pub
• 以上过程须要借助salt-key工具来实现
• 执行以下命令 salt-key -a aming-01// -a后面跟主机名,能够认证指定主机
• salt-key -a aming-02
实例:
[root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 0]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]#
• -a 后面跟主机名,认证指定主机
• -A 认证全部主机
• -r 跟主机名,拒绝指定主机
• -R 拒绝全部主机
• -d 跟主机名,删除指定主机认证
• -D 删除所有主机认证
• -y 省略掉交互,至关于直接按了y
• salt '*' test.ping //这里的*表示全部已经签名的minion端,也能够指定一个
• salt 'aming-01' test.ping
• salt '*' cmd.run "hostname"
• 说明: 这里的*必须是在master上已经被接受过认证的客户端,能够经过salt-key查到,一般是咱们已经设定的id值。关于这部份内容,它支持通配、列表以及正则。 好比两台客户端aming-01,aming-02, 那咱们能够写成salt 'aming-*', salt 'aming-0[12]' salt -L 'aming-01,aming-02' salt -E 'aming-(01|02)'等形式,使用列表,即多个机器用逗号分隔,并且须要加-L,使用正则必需要带-E选项。 它还支持grains,加-G选项,pillar 加-I选项,下面会介绍到。
• grains是在minion启动时收集到的一些信息,好比操做系统类型、网卡ip、内核版本、cpu架构等。
• salt 'aming-02' grains.ls 列出全部的grains项目名字
• salt 'aming-02' grains.items 列出全部grains项目以及值
• grains的信息并非动态的,并不会实时变动,它是在minion启动时收集到的。
• 咱们能够根据grains收集到的一些信息,作配置管理工做。
• grains支持自定义信息。
• minion上:
• vim /etc/salt/grains //添加:
• role: nginx
• env: test
• 重启minion服务
• systemctl restart salt-minion
• master上:
• 获取grains:
• salt '*' grains.item role env
• 能够借助grains的一些属性信息来执行
• salt -G role:nginx cmd.run 'hostname'
实例:
[root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 0]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]#
• pillar和grains不同,是在master上定义的,而且是针对minion定义的一些信息。像一些比较重要的数据(密码)能够存在pillar里,还能够定义变量等。
• 配置自定义pillar
• vim /etc/salt/master
• 找到以下配置://去掉前面的警号
•pillar_roots:
• base: #此行前面有两个空格
• - /srv/pillar #此行前面有4个空格
• mkdir /srv/pillar
• vim /srv/pillar/test.sls //内容以下
• conf: /etc/123.conf
• vi /srv/pillar/top.sls //内容以下
•base:
• 'aming-02': #此行前面有两个空格
• - test #此行前面有4个空格
• 重启master
• systemctl restart salt-master
• 当更改完pillar配置文件后,咱们能够经过刷新pillar配置来获取新的pillar状态:
• salt '*' saltutil.refresh_pillar
• 验证:salt '*' pillar.item conf
• pillar一样能够用来做为salt的匹配对象。好比 salt -I 'conf:/etc/123.conf' test.ping
实例:
[root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 0]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]#
• master上 vi /etc/salt/master //搜索找到file_roots
• 打开以下内容的注释:
•file_roots:
• base: #前面有两个空格
• - /srv/salt #前面有4个空格
• mkdir /srv/salt ; cd /srv/salt
• vi /srv/salt/top.sls //加入以下内容
•base:
• '*': #前面有两个空格
• - httpd #前面有4个空格
• 意思是,在全部的客户端上执行httpd模块
• 重启 systemctl restart salt-master
•
•master上vi /srv/salt/httpd.sls //加入以下内容,这个就是httpd模块的内容
•httpd-service:
• pkg.installed:
• - names: //这里若是只有一个服务,那么就能够写成 –name: httpd 不用再换一行了。
• - httpd
• - httpd-devel
• service.running:
• - name: httpd
• - enable: True
• 说明: httpd-service是id的名字,自定义的。pkg.installed 为包安装函数,下面是要安装的包的名字。service.running也是一个函数,来保证指定的服务启动,enable表示开机启动。
• 执行: salt 'aming-02' state.highstate//执行过程会比较慢,由于客户端上在yum install httpd httpd-devel
实例:
[root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 0]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]#
•master上vi /srv/salt/test.sls //加入以下内容
•file_test:
• file.managed:
• - name: /tmp/aminglinux.com
• - source: salt://test/123/1.txt
• - user: root
• - group: root
• - mode: 600
•说明:第一行的file_test为自定的名字,表示该配置段的名字,能够在别的配置段中引用它,source指定文件从哪里拷贝,这里的salt://test/123/1.txt至关因而/srv/salt/test/123/1.txt
• mkdir /srv/salt/test/123
• cp /etc/passwd /srv/salt/test/123/1.txt
• vi /srv/salt/top.sls //改成以下内容
•base:
• '*':
• - test
• 执行: salt 'aming-02' state.highstate
• 检查aming-02上是否有/tmp/aminglinux.com,检查内容以及权限
实例:
[root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 0]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]#
• master上vi /srv/salt/test_dir.sls //加入以下内容
•file_dir:
• file.recurse:
• - name: /tmp/testdir
• - source: salt://test/123
• - user: root
• - file_mode: 640
• - dir_mode: 750
• - mkdir: True
• - clean: True //加上它以后,源删除文件或目录,目标也会跟着删除,不然不会删除
• 修改top.sls, vi /srv/salt/top.sls //改成以下内容
•base:
• '*':
• - test_dir
• 执行: salt 'aming-02' state.highstate
• 检查aming-02上是否有/tmp/testdir,检查里面的目录、文件以及权限
• 说明:这里有一个问题,若是source对应的目录里有空目录的话,客户端上不会建立该目录
实例:
[root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 0]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]#
• shell_test:
• cmd.script:
• - source: salt://test/1.sh
• - user: root
• vi /srv/salt/test/1.sh //加入以下内容
•#!/bin/bash
•touch /tmp/111.txt
•if [ ! -d /tmp/1233 ]
•then
• mkdir /tmp/1233
•fi
• 更改top.sls内容
•base:
• '*':
• - shell_test
• 执行: salt 'aming-02' state.highstate
• 检查是否有/tmp/111.txt和/tmp/1233
实例:
[root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 0]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]#
• master上vi /srv/salt/cron_test.sls //加入以下内容
•cron_test:
• cron.present:
• - name: /bin/touch /tmp/111.txt
• - user: root
• - minute: '*'
• - hour: 20
• - daymonth: '*'
• - month: '*'
• - dayweek: '*
• 注意,*须要用单引号引发来。固然咱们还可使用file.managed模块来管理cron,由于系统的cron都是以配置文件的形式存在的。想要删除该cron,须要增长:
•cron.absent:
• - name: /bin/touch /tmp/111.txt
• 二者不能共存,要想删除一个cron,那以前的present就得去掉。
• 更改top.sls
•base:
• '*':
• - cron_test
• 执行: salt 'aming-02' state.highstate
• 到aming-02上检查cron,会看到提示# Lines below here are managed by Salt, do not edit
• 咱们不能随意改动它,不然就无法删除或者修改这个cron了。
实例:
[root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 0]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]#
• cp.get_file 拷贝master上的文件到客户端
• salt '*' cp.get_file salt://test/1.txt /tmp/123.txt
• cp.get_dir 拷贝目录
• salt '*' cp.get_dir salt://test/conf /tmp/ //会自动在客户端建立conf目录,因此后面不要加conf,若是写成 /tmp/conf/ 则会在/tmp/conf/目录下又建立conf
• salt-run manage.up 显示存活的minion
• salt '*' cmd.script salt://test/1.sh 命令行下执行master上的shell脚本
实例:
[root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 0]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]#
• salt-ssh不须要对客户端作认证,客户端也不用安装salt-minion,它相似pssh/expect
• 安装很简单yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
• yum install -y salt-ssh
• vi /etc/salt/roster //增长以下内容
•aming-01:
• host: 192.168.133.130
• user: root
• passwd: lishiming
•aming-02:
• host: 192.168.133.132
• user: root
• passwd: lishiming
• salt-ssh --key-deploy '*' -r 'w' //第一次执行的时候会自动把本机的公钥放到对方机器上,而后就能够把roster里面的密码去掉
实例:
[root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 0]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]# [root@localhost 01]#
常见问题:
参考连接 :
企业级自动化运维方案设计及Saltstack、Ansible等5种工具比较分析 : https://mp.weixin.qq.com/s/srAH0odplNG31oKGwLfuCQ
连接:
第一天salt stack 笔记 : http://blog.51cto.com/xiaoluoge/1597889
saltstack 系列: http://outofmemory.cn/saltstack/
SaltStack经常使用命令 : http://www.voidcn.com/article/p-tbrslplu-zv.html
saltstack一些经常使用模块和api调用方法 : http://blog.51cto.com/xiaoluoge/1615905
写一个基于saltstack的自动化运维平台 : http://blog.51cto.com/xiaoluoge/1613992
salt-api 使用 : http://blog.51cto.com/xiaoluoge/1613353
saltstack grains模块自定义 : http://blog.51cto.com/xiaoluoge/1612681
saltstack return数据实时返回收集 : http://blog.51cto.com/xiaoluoge/1612133
持久性session链接之memcached高可用方案 : http://blog.51cto.com/xiaoluoge/1595971
一次脚本和crond引起的系统故障 荐 : http://blog.51cto.com/xiaoluoge/1595759
web服务器time_wait值太高解决方案 : http://blog.51cto.com/xiaoluoge/1588666
原 [Saltstack]-{install,open of web}[一] : https://blog.csdn.net/u012402276/article/details/51840875
原 [Saltstack]-{grains,pillar}[二] : https://blog.csdn.net/u012402276/article/details/51852435
CentOS 7.2 部署Saltstack : http://blog.51cto.com/zlyang/1854875
saltstack 基础入门文档 : http://blog.51cto.com/zlyang/1854835
Saltstack快速部署 : http://blog.51cto.com/zlyang/1792638
saltstack经常使用命令 : http://blog.51cto.com/liangey/1731438
关于saltstack mine自定义收集minion状态及应用场景 荐 : http://blog.51cto.com/rfyiamcool/1433843
监控开发之用munin来自定义插件监控redis和mongodb 荐 : http://blog.51cto.com/rfyiamcool/1426130
nginx lua redis解决saltstack下发传输文件慢的问题思路 荐 : http://blog.51cto.com/rfyiamcool/1388127
saltstack event配合websocket客户端实时推送结果 荐 : http://blog.51cto.com/rfyiamcool/1418208
借用subprocess和gevent、multiprocessing解决saltstack超时不许的问题 荐 : http://blog.51cto.com/rfyiamcool/1377429
部署SaltStack及批量安装httpd服务荐 : http://blog.51cto.com/13630803/2155031
集群管理系统 Saltstack的资源配置及性能测试 荐 : http://blog.51cto.com/rfyiamcool/1262537
用Saltstack的returners实现批量监控和数据存储 荐 : http://blog.51cto.com/rfyiamcool/1264438
用Saltstack的modules和grains实现实时监控平台 : http://blog.51cto.com/rfyiamcool/1266437
经过python和websocket构建实时通讯系统[扩展saltstack监控] 荐 : http://blog.51cto.com/rfyiamcool/1269232
关于Saltstack halite 配置管理及二次开发ui [原salt-ui] 荐 : http://blog.51cto.com/rfyiamcool/1275443
saltstack的rest接口salt-api开发使用指南 荐 : http://blog.51cto.com/rfyiamcool/1362979
用saltstack cp模块实现文件管理、拉取和回滚下发 荐 : http://blog.51cto.com/rfyiamcool/1360468
运维平台化saltstack和jinja2模板构建高可用集群配置平台 荐 : http://blog.51cto.com/rfyiamcool/1351068
利用saltstack的api接口和modules实现实时监控 荐 : http://blog.51cto.com/rfyiamcool/1345518
利用saltstack的salt-ssh进行集群管理【无客户端下】 荐 : http://blog.51cto.com/rfyiamcool/1305710
使用Saltstack的ssh模块实现key的集中式管理 [salt.modules.ssh] : http://blog.51cto.com/rfyiamcool/1300204
saltstack基于pillar统一配置iptables防火墙实战 : http://blog.51cto.com/dyc2005/2178969
跟我学 Saltstack 经常使用模块及 API :https://mp.weixin.qq.com/s/oKhpKm5f2yNvsNphk3rdqA
如何在 Saltstack 组件下收集被控主机的信息? :https://mp.weixin.qq.com/s/kIm2FpoZ86hl2D3JL_-mRg
如何经过 Saltstack pillar组件定义与被控主机相关的任何数据? :https://mp.weixin.qq.com/s/KtysK7vog5PHC_SMDiPgMw
运维资产管理系统cmdb对实施自动化运维的重要性 荐 : http://blog.51cto.com/rfyiamcool/1370928