1.简介
Salt 是一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。
Salt运行快速,安装简单,高度可定制;Salt用相同的远程执行架构满足管理不同数量服务器的需求。Salt基础设施可以集成最好的远程执行工具,增强了Salt的能力及用途,得到功能丰富实用可以适用于任何 网络的系统。
Salt 是:
-
一个配置管理系统,能够维护预定义状态的远程节点(比如,确保指定的报被安装,指定的服务在运行)
-
一个分布式远程执行系统,用来在远程节点(可以是单个节点,也可以是任意规则挑选出来的节点)上执行命令和查询数据
开发其的目的是为远程执行提供最好的解决方案,并使远程执行变得更好,更快,更简单。
2.部署安装
salt的安装方式有很多种,下面我们选择稳定版方式进行安装:
1)master的安装(172.24.5.173)
yum install salt-master -y |
默认配置文件位于/etc/salt/master ,修改master文件
[root@bgs-5p173-wangwenting ~]# vim /etc/salt/master interface : 10.0 . 0.10 //根据自己ip进行配置 # auto_accept: False //auto_accept 该值暂时我们不去配置,就默认是false. //启动方法: [root@bgs-5p173-wangwenting ~]# /etc/init.d/salt-master start 或者是 //service salt-master start |
2) minion客户端的安装(172.24.5.174,172.24.5.175)两台minion机器
yum install salt-minion -y |
客户端的配置文件为/etc/salt/minion ,打开该文件,这里有两项是必须配置项.
[root@bgs-5p174-wangwenting ~]# vim /etc/salt/minion master: 172.24.5.173 //master机器的ip id: s2 //minion机器标识 [root@bgs-5p175-wangwenting ~]# vim /etc/salt/minion master: //master机器的ip id: s3 //minion机器标识 |
3)启动salt服务,s1上起master,s2、s3起minion服务。
[root@bgs-5p173-wangwenting ~]# /etc/init.d/salt-master start //日志文件默认是这个 /var/log/salt/master [root@bgs-5p174-wangwenting ~]# /etc/init.d/salt-minion start //日志文件默认是这个 /var/log/salt/minion [root@bgs-5p175-wangwenting ~]# /etc/init.d/salt-minion start //重启的命令是 /etc/init.d/salt-minion restart |
现在minion已经运行了,它会产生秘钥对并且尝试连接master。下一步就是折回master服务器接受新minion的公钥。 Master监听4505和4506端口,4505对应的是ZMQ的PUB system,用来发送消息,4506对应的是REP system是来接受消息的。
4)master和minion之间的证书验证:
Salt通过公钥加密和认证minions。想要让minion从master端接受命令,minions的密钥需要被master接受。
salt-key 命令时用来管理master上所有的密钥的。列出master上的密钥:
//查看多少个minion的认证 [root@bgs-5p173-wangwenting ~]# salt-key -L |
//将minion上的认证加到master中去。 [root @s1 ~]# salt-key -A //-A的意思是接受所有的认证 |
现在minion已经连接到master并且通过认证,master可以发送命令到minion。下面我们接受s2,s3这两个minion机器。
5).了解salt的一些常用指令。
[root@bgs-5p173-wangwenting ~]# salt '*' test.ping //运行这条命令的结果将会是master指示所有的minions并行执行,‘*’表示所有的minion机器 test.ping 并返回结果。 //这不是真正的ICMP ping,而是一个简单的函数返回 True。使用 test.ping 是确认一个minion是否连接正常的好方法。 |
Salt拥有一个巨大的函数库可用于执行,而且Salt函数是自带文档说明的。在minions上执行sys.doc 函数可以查看哪些函数可用:
[root@bgs-5p173-wangwenting ~]# salt '*' sys.doc |
这会显示一个非常大的可用函数和函数文档列表。
这些函数覆盖从shell命令到包管理到数据库服务器操作等所有内容。它们包含强大的系统管理API,而这则是Salt配置管理和很多其他部分的核心。
[root@bgs-5p173-wangwenting ~]# salt '*' cmd.run 'ls -l /opt/hadoop' //该命令是指查询minion机器上/opt/hadoop下的文件结构和内容 |
[root@bgs-5p173-wangwenting ~]# salt '*' network.interfaces //列出minion上的所有接口,以及它们的Ip地址、子网掩码、MAC地址等: |
[root@bgs-5p173-wangwenting ~]# salt '*' disk.usage //查看磁盘使用情况 |
salt命令是最常用到的。Salt命令允许执行海量的函数库,并且可以针对特殊的minions和minions组为目标执行,包含命令选项,目标说明,要执行的函数,和函数的参数。
salt
salt-run
是用于管理虚拟机的命令
salt-cp
salt-cp 分发文件到minion上,不支持目录分发,通常在master运行
salt其他常用命令:
salt --out=json 's2' test.echo 'hello' salt --out=yaml 's2' cmd.run "echo hello word" salt --out=json 's2' test.echo 'hello' salt --summary 's2' cmd.run_all "echo my salt" salt --summary 's2' cmd.run "echo my salt" salt -L 's2,s3' test.ping salt -G 'os:CentOS' test.ping salt -N group2 cp.get_file salt://test/time.txt /opt/wyl/time.txt salt 's3' cp.get_dir salt://hive-1.2.1-bin /opt makedirs=True gzip=9 //改变用户和用户组 salt 's2' file.chown /opt/hadoop root root //替换minion机器上的某一个文件的值的内容。 salt 's2' file.replace /opt/hadoop/etc/hadoop/mapred-site.xml pattern='172.24.5.173' repl='bgs-5p173-wangwenting' //salt master修改minion机器上某一个目录下的文件的777权限? //修改某一处的值 python libs python python-devel numpy https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.file.html
//删除host条目 //增加域名 //列出hosts列表 //更新hosts条目 //通过主机名获取IP地址列表 salt 's2' hosts.get_ip s2 //通过IP获取主机名 salt 's2' hosts.get_alias 172.24.5.174
|
6)通过master分发文件.
通过master分发文件:
这个时候需要去/etc/salt/master上去将工作目录给打开权限,如下图所示,这个工作目录我们改成我们自己所实际想修改的任何目录位置都可以,我这里使用的默认的位置。
我们在s2组minion机器上正确操作后的结果显示如下:
下面我们来验证一下:
saltstack的基础部署安装,以及命令的使用我们就介绍到这里。