saltstack的安装

1.简介

 Salt 是一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。

 Salt运行快速,安装简单,高度可定制;Salt用相同的远程执行架构满足管理不同数量服务器的需求。Salt基础设施可以集成最好的远程执行工具,增强了Salt的能力及用途,得到功能丰富实用可以适用于任何      网络的系统。

 Salt 是: 

  • 一个配置管理系统,能够维护预定义状态的远程节点(比如,确保指定的报被安装,指定的服务在运行)

  • 一个分布式远程执行系统,用来在远程节点(可以是单个节点,也可以是任意规则挑选出来的节点)上执行命令和查询数据

   开发其的目的是为远程执行提供最好的解决方案,并使远程执行变得更好,更快,更简单。

2.部署安装

salt的安装方式有很多种,下面我们选择稳定版方式进行安装:

1)master的安装(172.24.5.173)

yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el7.noarch.rpm
yum install salt-master -y

默认配置文件位于/etc/salt/master ,修改master文件

[root@bgs-5p173-wangwenting ~]# vim /etc/salt/master
interface10.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 https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el7.noarch.rpm
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: 172.24.5.173            //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

Usage: salt [options] '<target>' <function> [arguments]
例:
[root@bgs-5p173-wangwenting~]# salt '*'test.ping
 
[root@bgs-5p173-wangwenting ~]# salt '*' cmd.run 'df -h'
 
[root@bgs-5p173-wangwenting ~]# salt '*' pkg.install vim
 
[root@bgs-5p173-wangwenting ~]# salt '*' network.interfaces
 
[root@bgs-5p173-wangwenting ~]# salt '*' sys.doc 查看所有函数

salt-run

是用于管理虚拟机的命令

Usage: salt-run [options]
[root@bgs-5p173-wangwenting ~]# salt-run manage.status   ##查看所有minion状态
[root@bgs-5p173-wangwenting ~]# salt-run manage.down     ##查看所有没在线minion
[root@bgs-5p173-wangwenting ~]# salt-run manged.up       ##查看所有在线minion

salt-cp 

salt-cp 分发文件到minion上,不支持目录分发,通常在master运行

[root@bgs-5p173-wangwenting ~]# salt-cp [options] '<target>' SOURCE DEST
[root@bgs-5p173-wangwenting ~]# salt-cp '*' /opt/hadoop/LICENSE.txt  /opt    //将该目录下的文件拷贝到其他所有机器上的/opt目录下。

 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权限?
salt 's3' file.set_mode /opt/order/jps.sh 777

//修改某一处的值
salt 's2' file.sed /opt/zookeeper/data/myid 'id=2' 'id=3'

python libs python python-devel numpy

https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.file.html


salt '*' hosts.list_hosts

//删除host条目
salt 's2' hosts.rm_host 172.24.5.174 bfd2

//增加域名
salt 's2' hosts.add_host 172.24.5.174 bfd2

//列出hosts列表
salt 's2' hosts.list_hosts

//更新hosts条目
salt 's2' hosts.set_host(ip, alias)

//通过主机名获取IP地址列表

salt 's2' hosts.get_ip s2

//通过IP获取主机名

salt 's2' hosts.get_alias 172.24.5.174

 

 

  6)通过master分发文件.

通过master分发文件:

这个时候需要去/etc/salt/master上去将工作目录给打开权限,如下图所示,这个工作目录我们改成我们自己所实际想修改的任何目录位置都可以,我这里使用的默认的位置。

[root@bgs-5p173-wangwenting salt]# cd /srv/salt/            //我们到这个目录下面,工作目录。
[root@bgs-5p173-wangwenting salt]# mkdir test
[root@bgs-5p173-wangwenting salt]# cd test/
[root@bgs-5p173-wangwenting test]# echo `date` > time.txt
[root@bgs-5p173-wangwenting test]# salt 's2' cp.get_file salt://test/time.txt /opt/wyl/time.txt  
 //说明
 //   1)salt:// 第一个‘/’为 配置文件base指定的根,第二个为路径分割符.
 //   2)复制到的目标机器必须给出文件名,不能只给出目录,否则报错,就是也要加上time.txt
 //   3)这里最好是手动去s2机器上手动创建/wyl/这个目录。不然会出现false的字样。或者在后面加上makedir=True;
 //   4)salt 's2' cp.get_file salt://test/time.txt /opt/wyl/time.txt  makedirs=True gzip=9    //自动创建/wyl这个目录,后面的time.tx也是必须要加的。
// 5)salt 's3' cp.get_dir salt://hive-1.2.1-bin /opt gzip=9 //copy目录到其他minion机器上去。

    s3:
     - /opt/abc/abc.txt

//上述显示将/abc目录下的文件拷贝到s3机器上的/opt下面去了。/opt/abc/abc.txt

 我们在s2组minion机器上正确操作后的结果显示如下:

下面我们来验证一下:

saltstack的基础部署安装,以及命令的使用我们就介绍到这里。

原文地址:https://www.cnblogs.com/wyl9527/p/6836739.html