[Saltstack]-{install,open of web}[一]

来源:互联网 发布:淘宝 处方药购买流程 编辑:程序博客网 时间:2024/05/02 02:02

[CentOS6.6_64bit][Saltstack]

Saltstack 是通过C/S模式实现管理集群化的工具,可以远程管理单一或者多个服务器操作系统的平台。

可以对所有服务器进行统一命令操作,或者查看服务器状态以及硬件相关。

1.EPEL

如果你的系统中EPEL当前不是enabled的话,你需要先通过如下的命令对其进行启动(PS:以下命令需要在两台机器上都执行):
rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm

2.分别在master的一端和minion的一端安装salt:
yum install salt-master
yum install salt-minion

在Windows端的安装:(下载Windows端的安装包)地址如下:
https://repo.saltstack.com/windows/
安装的过程中只需要在出现需要填写master服务器端地址和minion端地址的时候,
将master服务器端的地址和本机地址填写进去,然后一直下一步就可以了。
当安装完成之后,会在C:\salt\conf 的下面出现minion.d、pki、minion的三个文件,
如果没有的话建立一个minion文件,没有后缀名,然后将master以及id写进去,步骤同Linux版的配置。 

3.在启动master端的服务之前修改minion端的配置文件:

minion: vim /etc/salt/minion
#master: salt
在master的一栏去掉前面的#注释,将冒号后面的内容更改为master这台机器的ip地址或者hostname,
注意冒号和ip地址之间需要由空格,否则会报错
#id: salt
去掉id前面的注释,更改冒号后面的内容为本机minion端的ip地址或者hostname,注意空格
master: 192.168.79.155

4.启动master端和minion端的服务:
linux:
service salt-master start
service salt-minion start
Windows:
找到C:\salt下的程序运行文件,双击运行即可,如果服务没有起来,将其中可执行的相关bat文件执行一下就可以了。

[注意]如果master端搜索不到客户端的请求,该怎么办:
4.1查看防火墙是否关闭   
service iptables status

service iptables stop


4.2校对两边的机器时间
yum install ntp
ntpdate ntp.api.bz

ntpdate cn.pool.ntp.org


4.3如果用ntp还是同步不了,那就需要更改系统语言版本为同样的语言:
vim /etc/sysconfig/i18n            LANG="zh_CN.UTF-8"或者其他 

最后再次用ntpdate cn.pool.ntp.org进行时间同步


4.4如果仍然发现日期是对了,但是时间相差12个小时,那么看最后面的时间区域标识是EDT呢还是CST
那么就得将EDT的时间域变为CST的时间区域
mv /etc/localtime /etc/localtime.bak
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
这时候再查看日期就会变成为:2016年 07月 06日 星期三 12:20:50 CST  (因为更改过系统语言)

即:LANG="zh_CN.UTF-8" ---->  ntpdate cn.pool.ntp.org ----> CST

最后将时间写入硬件:hwclock --systohc

5.查看申请连接的客户端并接受:
salt-key -L   在master服务器端执行这条命令以后,如果有成功启动服务的用户端,就会在下面出现它们的IP地址
salt-key -A   执行此命令表示接收所有用户端的连接申请key,在询问中输入Y通过就OK了。

salt-key -d ip或者hostname这样可以踢出主机

通过后,可以查看到用户端的连通可控性:
salt x.x.x.x test.ping  测试连通性,如果可控制,会有黄色的true出现。
salt '*' test.ping   测试所有主机连通性


6.简单命令执行:x.x.x.x 表示ip地址

salt x.x.x.x cmd.run ifconfig    查看网卡IP地址   
salt '*' cmd.run 'dir'  查看所有用户端目录
salt 'x.x.x.*' cmd.run 'dir'  查看此网段内的所有主机的主目录
salt -G 'os:CentOS' test.ping  匹配系统为CentOS的主机并测试连通性
salt -E '6[12345].*' cmd.run 'ip a'  以正则表达式的方式来进行匹配并显示匹配到所有主机的IP地址。
salt '*' cp.get_file salt://home/gogo /root/gogo  同步master主机文件到各用户端
salt \* grains.items 查看所有客户端的基本信息
salt '*' cmd.run 'hostname' 查看所有主机的主机名

7.搭建web操作页面(可参考https://docs.saltstack.com/en/latest/topics/tutorials/halite.html)

(1) 对于saltstack而言,用命令来对集群服务器进行管理固然好,但确实没有web页面管理来的方便易用。
下面介绍web客户端的安装:
yum install python-halite
yum install python-pip

pip install -U halite
pip install cherrypy
pip install paste

yum install python-devel
yum install gcc
pip install gevent
pip install pyopenssl
(2) 更改master端的配置文件 vim /etc/salt/master
去掉注释并替换内容为下面的参数:
external_auth:  pam:    salt:    - .*    - '@runner'    - '@wheel'------------------------------在最底部加入:halite:  level: 'debug'  server: 'cherrypy'  host: '0.0.0.0'  port: '8080'  cors: False  tls: False#  certpath: '/etc/pki/tls/certs/localhost.crt'#  keypath: '/etc/pki/tls/certs/localhost.key'#  pempath: '/etc/pki/tls/certs/localhost.pem'

(3)重新启动master的服务
service master restart 

然后使用浏览器进行连接:http://192.168.60.94:8080/就会有web的界面出来了。



当然这是一个简单的web界面,内里的ui需要自己去定制。

8.saltstack的常用模块:

查看当前可调用模块:
salt '*' sys.list_modules

(1)、cp模块(实现远程文件、目录的复制,以及下载URL文件等操作)
## 将主服务器配置文件master中file_roots指定位置下的目录(- /srv/salt)中的文件复制到被控主机,如果没有目录就新建目录
mkdir –p /srv/salt
然后测试:
salt '*' cp.get_file salt://test_file_one /srv/salt/test_one
成功就会有绿色的目录出现,在到minion端去查看就可以看到了文件已经存在了

## 下载指定URL内容到被控主机指定位置

# salt '*' cp.get_url http://xxx.xyz.com/download/0/files.tgz /root/files.tgz

分发文件的后缀属性:
salt '*' cp.get_file salt://test_file_one /srv/salt/test_one gzip=9 表示在分发的同时压缩文件,级别为9,9为压缩的最大强度
salt '*' cp.get_file salt://test_file_one /srv/salt/test_one makedir=True 表示当目标位置目录不存在时,自动创建目录

 
(2)、cmd模块(实现远程的命令行调用执行)
# salt '*' cmd.run 'netstat -ntlp'  显示被控主机的目前服务监听端口信息

salt 'win*'  cmd.run:- name: |
       mkdir /tmp/foo
       chown dan /tmp/foo
       chgrp www-data /tmp/foo
       chmod 2751 /tmp/foo
       touch /tmp/foo/bar 
 
(3)、cron模块(实现被控主机的crontab操作)
## 为指定的被控主机、root用户添加crontab信息
# salt '*' cron.set_job root '*/5' '*' '*' '*' '*' '/root/test.sh'  给所有被控主机设定每5分钟执行一次test.sh的脚本
# salt '*' cron.raw_cron root   以root身份显示所有被控主机的定时任务
 
## 删除指定的被控主机、root用户的crontab信息
# salt '*' cron.rm_job root 'date >/dev/null 2>&1'   以所有被控主机的root身份移除数据清空的定时任务
# salt '*' cron.raw_cron root  以所有被控主机的root身份显示所有的定时任务
 
(4)、dnsutil模块(实现被控主机通用DNS操作)
## 为被控主机添加指定的hosts主机配置项
# salt '*' dnsutil.hosts_append /etc/hosts 127.0.0.1 rocketzhang.qq.com
 
(5)、file模块(被控主机文件常见操作,包括文件读写、权限、查找、校验等)
# salt '*' file.get_sum /etc/resolv.conf md5
# salt '*' file.stats /etc/resolv.conf
更多功能可以看文档哈 ^_^
 
(6)、network模块(返回被控主机网络信息)
# salt '*' network.ip_addrs
# salt '*' network.interfaces
更多功能可以看文档哈 ^_^
 
(7)、pkg包管理模块(被控主机程序包管理,如yum、apt-get等)
# salt '*' pkg.install nmap
# salt '*' pkg.file_list nmap
 
(8)、service 服务模块(被控主机程序包服务管理)
# salt '*' service.enable crond
# salt '*' service.disable crond
# salt '*' service.status crond
# salt '*' service.stop crond
# salt '*' service.start crond
# salt '*' service.restart crond
# salt '*' service.reload crond

(9)、更多功能

更多的功能:grains、pillar、states、modules、returner、runners、reactor等,

还有如下高级命令的使用,以及模板配置的渲染、扩展模块的二次开发等。





0 0