saltstack 环境部署

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Thinkcortex/article/details/87880570

Saltstack 环境安装

1.    安装salt  yum源(以centos7 / python2环境为例, 其他环境请参考https://repo.saltstack.com/ )
yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm

2.    sudo yum clean expire-cache
3.    安装 salt-minion, salt-master, 及其他组件:
       sudo yum install salt-master
       sudo yum install salt-minion
       sudo yum install salt-ssh
       sudo yum install salt-syndic
       sudo yum install salt-cloud
       sudo yum install salt-api
       安装时可能会失败, 多试几次。
4.    关闭selinux
5.    关闭防火墙

说明: 测试环境中, master IP地址 192.168.58.128
                                  Minion IP地址 192.168.58.132


启动服务

1.    服务端
启动:
    Systemctl start salt-master (CENTOS7)
    /etc/init.d/salt-master  start   (CENTOS 6)


2.    客户端

修改配置文件
vim /etc/salt/minion

                                                     

启动:
systemctl start salt-minion  (CENTOS 7)
/etc/init.d/salt-minion       (CENTOS 6)

一些启动失败的案例:

(1)    Jan 06 22:21:08 localhost.localdomain salt-minion[36923]: [ERROR   ] Error parsing configuration file: /etc/salt/minion - conf should be a document, not <type 'unicode'>

配置文件
Master: salt 冒号后面必须有空格


(2)    ImportError: No module named certify
安装pip,  安装certify


配置认证

查看已经签名的客户端

                                                   

添加未认证的keys

                                                   

说明:-a :accept ,-A:accept-all,-d:delete,-D:delete-all。


测试验证

测试192.168.58.132是否通讯正常

                                            

也可以使用salt ‘*’ test.ping 对所有客户端进行测试。test是一个模块,ping是模块内的方法。 

                                            

远程执行命令

                                      

文件拷贝
cp.get_file用于minion从master下载一个文件
编辑配置文件/etc/salt/master,将file_roots注释去掉

                                    

在master端创建目录“/srv/salt”
拷贝需要复制的文件到工作目录
执行cp.get_file命令

从master 到 minion

                                   

                                  

minion端

                                 

salt 文件push可以将minion端生成的一些文件收集到master端
配置
master端的相关配置:
(1)配置接收minion端文件,基于安全原因默认是关闭的
    file_recv: True
(2)cachedir配置文件保存在master端的路径
    默认存放在/master/minions/minion-id/files路径下

指令:salt 'minion-id' cp.push /path/to/the/file

执行失败报错

                              

                              

aaa文件不存在

                              

home1 不存在
bbb.txt 不存在
默认目标文件会覆盖

Python API

模块安装
以CentOS6.3为例, 过程仅供参考。
环境中没有pip, 且安装困难(缺的东西太多),所以新装了python2.7
安装python所需的依赖包

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc  make

安装setuptools
然后源码安装pip, /usr/local/Python27/Python-2.7.15/python setup.py install
安装salt过程中失败, 需要安装libzmq, 安装libzmq时需要升级autoconf.

下载较新版本的autoconf, 如autoconf-2.69.tar.xz, 进行安装
下载libzmq,  安装
安装salt , /usr/local/Python27/Python-2.7.15/python -m pip install salt

示例:

(1) 

client = salt.client.LocalClient()
cmd1=client.cmd('192.168.58.132','test.ping')
print(cmd1)

{u'192.168.58.132': True}

(2)

ret = client.cmd('*','cmd.run',['ls'])
print (ret)

{u'192.168.58.132': u'anaconda-ks.cfg', '192.168.58.128': False, '192.168.58.131': False}

猜你喜欢

转载自blog.csdn.net/Thinkcortex/article/details/87880570