|
第1章 Saltstack安装
1.1 环境准备
1.1.1 创建用户(root)(不需要该步骤)
192.168.80.151(master)/192.168.80.154(client)
创建idc-salt用户,密码为idc-salt2016,开始准备用普通用户安装saltstack,后来发现不行,需要root用户或者sudo权限安装
1.1.2 准备安装包及所需文件
http://mirrors.sohu.com/fedora-epel/6/x86_64/为下载rpm包地址
1.1.3 关闭防火墙
1、 查看服务器防火墙状态,命令: service iptables status
2、 如果看到firewall is not running说明是关闭状态;如果是打开状态,可以直接运行命令: service iptables stop,关闭防火墙;
1.1.4 yum安装需要联网
vi /etc/ resolv.conf ,配置文件增加nameserver 114.114.114.114
1.2 软件安装
1.2.1 安装epel(root用户)
1、上传epel-release-6-8.noarch.rpm安装文件到目录 /home/idc-salt/tools
2、执行命令rpm -ivh epel-release-6-8.noarch.rpm
1.2.2 升级python(不需要该步骤)
https://www.python.org/ftp/python/ 下载升级包
http://www.cnblogs.com/idotest/p/5442173.html 参考地址
ln -s /usr/local/python3/bin/python3.4 /usr/bin/python 修改系统的py版本
升级成3.4版本之后,yum不能使用,所以151和154机器还是使用2.6的版本
1.2.3 安装salt-master(root用户)
具体的安装过程参考下面的网站
https://repo.saltstack.com/yum/redhat/6.4/x86_64/latest/
http://mirrors.aliyun.com/centos/6/os/x86_64/Packages/
http://yum.baseurl.org/download/
注意:
1、rpm安装过程比较复杂,因为各种依赖,执行rpm –ivh salt-2016.3.4-1.el6.noarch.rpm,少什么包就按提示一个个安装(差不多要花一天时间才能搞好),如果是几个rpm互相依赖,则可以在rpm –ivh 后面把相关的rpm都带上,这样就能同时安装,比如:rpm –ivh yum-metadata-parser-1.1.2-16.el6.x86_64.rpm yum-plugin-fastestmirror-1.1.30-37.el6.noarch.rpm yum-3.2.29-73.el6.centos.noarch.rpm 同时安装yum相关的包
2、rpm -ivh --force python-crypto-2.6.1-2.el6.x86_64.rpm 版本冲突,强制安装
3、rpm -aq|grep yum|xargs rpm -e --nodeps 删除yum的rpm安装
4、Rpm方式安装成功之后,手动上传salt、salt-minion相关文件到/usr/bin目录下,然后执行chmod +x 文件。salt、salt-minion相关文件在yum安装的机器上找
5、154是rpm方式安装,151是yum方式安装
https://repo.saltstack.com/#rhel yum方式的安装,直接参考官网,几步就搞定了:
1、yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el7.noarch.rpm
2、 yum clean expire-cache
3、yum install salt-master 或者 yum install salt-minion
1.3 yum方式安装salt
yum安装首先要配置好yum源,本次安装为redhad5下的salt-minion,master安装也一样,只是最后一个是安装minion包,一个是安装master。redhat6和redhat7流程和此过程一样,具体步骤如下。
1.3.1 配置yum源
进入/etc/yum.repo.d目录,在该目录下创建文件salt-2016.11.repo,并将填写源信息,内容如下:
[salt-2016.11]
name=saltstack
baseurl=http://134.64.117.90/saltstack/redhat5
gpgcheck=0
enable=1
注:此为redhat5的源url。不同redhat版本url不一样,具体看源位置,本源库为电信yum库,是提前将所有salt依赖全部打入到yum库中才能使用。
redhat5:http://134.64.117.90/saltstack/redhat5
redhat6:http://134.64.117.90/saltstack/redhat6
redhat7:http://134.64.117.90/saltstack/redhat7
1.3.2 安装salt-repo
1) 查看yum库有无该包,执行指令,根据执行结果找到该包名称(salt-repo.noarch),指令如下:yum list |grep -i salt-repo
2) salt-repo安装:yum install salt-repo.noarch
1.3.3 重新配置yum源
此步骤为重复1操作,因为salt-repo安装后,会在/etc/yum.repo.d下生成salt-2016.11.repo同名文件,将其覆盖,因此需要对其内容进行修改,操作同步骤1。
1.3.4 安装master/minion
1) 查看yum库有无该包,执行指令,根据执行结果找到该包名称salt-master.noarch,指令如下: yum list |grep -i salt-master
2) salt-master安装:yum install salt-master.noarch
该步骤会看到,有很多master的依赖包,根据界面提示信息选择确定下载并安装依赖,等待下载并安装完成。
1) 查看yum库有无该包,执行指令,根据执行结果找到该包名称salt-minion.noarch(salt-master.noarch),指令如下: yum list |grep -i salt-minion
2) salt-minion安装:yum install salt-minion.noarch
该步骤会看到,有很多minion的依赖包,根据界面提示信息选择确定下载并安装依赖,等待下载并安装完成
1.3.5 master/minion配置
1、master配置
进入/etc/salt目录,vim打开minion文件。
1) 找到并配置master地址,在master后面配置master所在的IP,修改保存退出,如:
master: 134.64.206.49
注:master前不能有空格,冒号后面需要有一个空格。
2、minion配置
进入/etc/salt目录,vim打开minion文件。
1) 找到并配置master地址,在master后面配置master所在的IP,如:
master: 134.64.206.49
注:master前不能有空格,冒号后面需要有一个空格。
2) 找到并配置id,在id后面配置当前minion机器的名称(可填写本机ip),如:
id: 134.64.206.40
注:id前不能有空格,冒号后面需要有一个空格。
3)保存退出
1.3.6 启动master/minion
1)启动master
输入指令:service salt-master start
2)启动minion
输入指令:service salt-minion start
3)注意事项
不同redhat版本启动命令不一样,此为redhat5/6适用命令),界面会显示salt启动成功。如有失败,则查看启动错误信息,一般如果master/minion安装没问题,则都是master/minion文件配置master或id不规范导致。
1.4 salt手动安装rpm
1.4.1 redhat6
1、上传redhat6系统的salt所有rpm包
2、安装salt-repo包
rpm -ivh salt-repo-2016.11-1.el6.noarch.rpm
3、安装依赖
rpm -ivh libyaml-0.1.3-4.el6.x86_64.rpm
rpm -ivh PyYAML-3.11-1.el6.x86_64.rpm
rpm -ivh python-crypto-2.6.1-2.el6.x86_64.rpm
rpm -ivh python-futures-3.0.3-1.el6.noarch.rpm
rpm -ivh python-msgpack-0.4.6-1.el6.x86_64.rpm
rpm -ivh python-chardet-2.2.1-1.el6.noarch.rpm
rpm -ivh python-ordereddict-1.1-2.el6.noarch.rpm
rpm -ivh python-six-1.9.0-2.el6.noarch.rpm
rpm -ivh python-urllib3-1.10.2-1.el6.noarch.rpm
rpm -ivh python-requests-2.6.0-3.el6.noarch.rpm
rpm -ivh python-jinja2-2.8.1-1.el6.noarch.rpm
rpm -ivh python-tornado-4.2.1-1.el6.x86_64.rpm
rpm -ivh zeromq-4.0.5-4.el6.x86_64.rpm
rpm -ivh python-zmq-14.5.0-2.el6.x86_64.rpm
4、安装salt
rpm -ivh salt-2016.11.3-1.el6.noarch.rpm
5、安装salt-master/salt-minion
master:rpm -ivh salt-master-2016.11.3-1.el6.noarch.rpm
minion:rpm -ivh salt-minion-2016.11.3-1.el6.noarch.rpm
redhat6启动命令:service salt-minion start
停止命令:service salt-minion stop
重启命令:service salt-minion restart
1.4.2 redhat7
1、上传redhat7系统的salt所有rpm包
2、安装salt-repo包
rpm -ivh salt-2016.11.3-1.el7.noarch.rpm
3、安装依赖
rpm -ivh libsodium-1.0.5-1.el7.x86_64.rpm
rpm -ivh libyaml-0.1.4-11.el7_0.x86_64.rpm
rpm -ivh PyYAML-3.11-1.el7.x86_64.rpm
rpm -ivh base/python-jinja2-2.7.2-2.el7.noarch.rpm
rpm -ivh base/python-babel-0.9.6-8.el7.noarch.rpm
rpm -ivh base/python-markupsafe-0.11-10.el7.x86_64.rpm
rpm -ivh python-futures-3.0.3-1.el7.noarch.rpm
rpm -ivh python-crypto-2.6.1-2.el7.x86_64.rpm
rpm -ivh python-msgpack-0.4.6-1.el7.x86_64.rpm
rpm -ivh python-chardet-2.2.1-1.el7.noarch.rpm
rpm -ivh python-tornado-4.2.1-1.el7.x86_64.rpm
rpm -ivh openpgm-5.2.122-2.el7.x86_64.rpm
rpm -ivh zeromq-4.1.4-5.el7.x86_64.rpm
rpm -ivh python-zmq-15.3.0-2.el7.x86_64.rpm
4、安装salt
rpm -ivh salt-2016.11.3-1.el7.noarch.rpm
5、安装salt-master/salt-minion
master:rpm -ivh salt-master-2016.11.3-1.el7.noarch.rpm
minion:rpm -ivh salt-minion-2016.11.3-1.el7.noarch.rpm
redhat7启动命令:systemctl start salt-minion
停止命令:systemctl stop salt-minion
重启命令:systemctl restart salt-minion
1.4.3 注意事项
salt针对不同系统版本安装不同的salt包,而执行操控脚本也需要考虑,因linux5/6与linux7中的一些命令不一致,因此在对脚本文件进行批量下发时,需要注意下发主机的操作系统版本。
一般机器环境都没有开发外网访问,很多企业都有自己的yum库,注意如果是yum和rpm2种混合安装模式(一般不会这么干),则切记,安装salt-repo后,检查/etc/yum.repo.d目录下的相关.repo是否被修改,如被改动,改回成之前配置的就好了,不然会出现yum找不到包。
1.5 配置启停
1.5.1 查看版本
salt --versions-report
1.1.1 修改服务端配置
修改master的配置,设置master的ip
vi /etc/salt/master
interface: 192.168.80.151
1.1.2 修改客户端的配置
Vi /etc/salt/minion
master: 192.168.80.151
id: 192.168.80.154
1.1.3 服务 端启停
Master启动
service salt-master start(service salt-master stop 是停止)
1.1.4 客户端启停
service salt-minion start 启动客户端(service salt-minion stop 是停止)
测试的时候,151启动报错,是因为python-crypto冲突了
解决方法是:
rpm -qa |grep python-crypto 查询所有python-crypto版本
rpm -aq|grep python-crypto-2.0.1-22.el6.x86_64 |xargs rpm -e –nodeps 删除低版本的python-crypto
1.1.5 密钥认证
服务端执行salt-key –L,此时154客户端还未加入到master认证中
执行命令salt-key –A,接收所有请求
salt-key –a 接受某个客户端请求
salt-key –A 接受所有客户端请求
salt-key –d 删除单个客户端
salt-key –D 删除所有客户端
1.6 测试验证
测试连通性:salt \* test.ping
远程执行命令:salt \* cmd.run 'ls /root'
第2章 Salt-api安装
2.1 安装cherrypy
sudo easy_install cherrypy 查看合适的cherrypy版本
http://docs.cherrypy.org/en/latest/install.html
下载3.2.2版本的cherrypy,然后安装:
tar -xzvf cherrypy-cherrypy-3.2.2.tar.gz 解压
cd cherrypy-cherrypy-3.2.2
python setup.py install
2.2 安装salt-api
参考网站:
http://blog.csdn.net/hnhuangyiyang/article/details/50667000
http://iceyao.blog.51cto.com/9426658/1627908
salt-api所有操作均在master端
yum -y install salt-api pyOpenSSL
chkconfig salt-api on
2.3 创建目录master.d
sed -i '/#default_include/s/#default/default/g' /etc/salt/master
mkdir /etc/salt/master.d
该目录在/etc/salt/master文件中会引用
2.4 生成自签名证书
cd /etc/pki/tls/certs/
make testcert
密码自己设置,我设置的是 idcsalt
如果make testcert出现错误,删除/etc/pki/tls/private/localhost.key文件,然后再make testcert。(密码不能有“-“字符)
cd /etc/pki/tls/private
openssl rsa -in localhost.key -out localhost_nopass.key
2.5 创建用户
useradd -M -s /sbin/nologin saltapi
echo "saltapi2016" | passwd saltapi --stdin
2.6 新增配置文件eauth.conf(saltapi为上一步创建的用户)
cd /etc/salt/master.d/
文件内容为:
external_auth:
pam:
saltapi:
- .*
- '@wheel'
- '@runner'
2.7 新增配置文件api.conf
cd /etc/salt/master.d/
文件内容为:
rest_cherrypy:
port: 8000
ssl_crt: /etc/pki/tls/certs/localhost.crt (2.4章节生成的文件)
ssl_key: /etc/pki/tls/private/localhost_nopass.key (2.4章节生成的文件)
2.8 启动salt-api
service salt-master restart
service salt-api restart
启动完之后查看8000(端口在2.7章节中指定)端口是否在监听:netstat -anop|grep 8000
2.9 测试salt-api
curl -k https://192.168.80.151:8000/login -H "Accept: application/x-yaml" -d username='saltapi' -d password='saltapi2016' -d eauth='pam'
上面的命令用来获取token(salt-api重启一次,tocken就会发生变化)
curl -k https://192.168.80.151:8000/ -H "Accept: application/x-yaml" -H "X-Auth-Token: 8ef747d5ea27b6a0ea6afe6907d7f68d8e3e630d" -d client='local' -d tgt='*' -d fun='test.ping'
相当于在salt-master本地执行salt \* test.ping
curl -k https://192.168.80.151:8000/ -H "Accept: application/x-yaml" -H "X-Auth-Token: 8ef747d5ea27b6a0ea6afe6907d7f68d8e3e630d" -d client='local' -d tgt='*' -d fun='test.echo' -d arg='hello world'
相当于在salt-master本地执行salt \* test.echo 'hello world'
curl -k https://192.168.80.151:8000/ -H "Accept: application/x-yaml" -H "X-Auth-Token: 8ef747d5ea27b6a0ea6afe6907d7f68d8e3e630d" -d client='local' -d tgt='*' -d fun='cmd.run' -d arg='ls /root'
相当于在salt-master本地执行salt \* cmd.run 'ls /root'
|
|
|