设为首页 收藏本站
查看: 1318|回复: 0

[经验分享] saltstack(一)安装篇

[复制链接]

尚未签到

发表于 2018-8-1 10:57:26 | 显示全部楼层 |阅读模式
  搞saltstack快一个礼拜了,在这里把学习过程mark一下。
  saltstack出来没几年吧,好像比Puppet Chef这些东西都年轻,比它年轻的还有ansible。楼主以前干过半年多运维,十几台服务器的规模,运维方式还停留在石器时代,没搞过自动化,对运维自动化的编年史不太熟。刚来新公司没多长时间,新公司用的是puppet
  看了个把礼拜的salt,这东西采用的C/S模式,通过zeromq通信的,采用AES加密传输,然后可以做自动化相关的运维工作。看了这么长时间,也就概括出了这么点东东,水平有限,先这样吧!
  好了,下面开始安装了
  楼主的系统是debian wheezy,安装很简单

  •   163,souhu目前还没有saltstack,要自己配置saltstack的源。好了请看下面
echo "deb http://debian.saltstack.com/debian wheezy-saltstack main" >> /etc/apt/sources.list  
源地址是加密的,需要导入密钥
  
wget -q -O- "http://debian.saltstack.com/debian-salt-team-joehealy.gpg.key" | apt-key add -
  
更新本地源列表
  
aptitude update
  
服务端:
  
aptitude -y install salt-master
  
客户端:
  
aptitude -y install salt-minion
  OK,saltstack已经安装好了。先随便看看
  看看版本和依赖的库
root@salt-master:~# salt  --version  
salt 2014.1.4
  
root@salt-master:~# salt  --versions-report
  
           Salt: 2014.1.4
  
         Python: 2.7.3 (default, Mar 14 2014, 11:57:14)
  
         Jinja2: 2.7.2
  
       M2Crypto: 0.21.1
  
msgpack-python: 0.1.10
  
   msgpack-pure: Not Installed
  
       pycrypto: 2.6.1
  
         PyYAML: 3.11
  
          PyZMQ: 13.1.0
  
            ZMQ: 3.2.3
  
root@salt-master:~#
  下面开始认证了,首先要修改minion端的配置文件,指向master,我测了下用IP,域名都可以,我就用IP了。salt的配置文件默认都在/etc/salt下面呢。注意修改配置后要重启一下才生效。
root@salt-minion:~# grep "master:" /etc/salt/minion  
master: 10.240.161.98
  
root@salt-minion:~# /etc/init.d/salt-minion   restart
  
[ ok ] Restarting salt minion control daemon: salt-minion.
  客户端就这样了,重启后,那啥zeromq开始发布消息了,服务端会受到这个消息。用salt-key -L查看一下,请求。
root@salt-master:/# salt-key  -L  
Accepted Keys:
  
Unaccepted Keys:
  
salt-minion
  
Rejected Keys:
  
root@salt-master:/#
  接受请求,salt -A  “A”是all的意思。
salt-key -a salt-minion   接受某一个minion  
salt-key -A               接受所有
  
salt-key -d salt-minion   删除某个minion的公钥
  
salt-key -D               删除所有minion的公钥
  
salt-key -P               打印公钥
  当然salt也是可以自动验证的。把下面的False改成True就OK了
root@salt-master:/# grep  -n "auto_accept:" /etc/salt/master  
137:#auto_accept: False
  
root@salt-master:/#
  自动认证我就不玩了,大伙玩一下吧!
  当然认证之前,大伙要是想确保认证的准确性,可以先识别下minion的身份。两边一样的话就靠谱了。这样的做是啥原理呢,minion请求验证的时候,会把公钥发给master,两边都打印一下这个公钥的指纹,finger这东西是叫指纹吧,一样就OK了。这个可以防止别人冒名顶替,发个错误的公钥过来。
master上先执行下  
root@salt-master:~# salt-key -f   salt-minion
  
Unaccepted Keys:
  
salt-minion:  df:27:b6:23:e2:7d:10:f9:3b:3f:b1:1f:c2:1e:cf:52
  
root@salt-master:~#
  
minion上再执行下
  
root@salt-minion:~#salt-call key.finger --local
  
local:
  
    df:27:b6:23:e2:7d:10:f9:3b:3f:b1:1f:c2:1e:cf:52
  
root@salt-minion:~#
  好了,我们来看一下,master和minion密钥的一些事情吧
  看一下master上面的/etc/salt/pki/master目录
root@salt-master:~# tree /etc/salt/pki/master/  
/etc/salt/pki/master/
  
├── master.pem
  
├── master.pub
  
├── minions
  
│   └── salt-minion
  
├── minions_pre
  
└── minions_rejected
  再看一下minion上面的/etc/salt/pki/minion
root@salt-minion:~# tree /etc/salt/pki/minion/  
/etc/salt/pki/minion/
  
├── minion_master.pub
  
├── minion.pem
  
└── minion.pub
  看到没有,master和minion分别保存了对方的公钥,这说明个啥,说明master和minion之间通信,两者都是可以是发起方,不是只有master向minion发东西,minion也可以向master发东西。其实master监听的俩端口4505是master端zeromq的pub口,4506是sub口。一个管发布消息,一个负责接收消息。
  好了,安装认证就到这里吧,下面搞搞简单的命令行操作
root@salt-master:~# salt  '*'  test.ping  
salt-minion:
  
    True
  注意这里面的ping和ICMP那个ping完全不搭嘎的,返回True说明minion回应master的消息,可以干活了,大伙一起来看看源码吧
root@salt-minion:~# sed -n '33,48p' /home/lixc/salt-2014.1.4/salt/modules/test.py  
def ping():
  
    '''
  
    Just used to make sure the minion is up and responding
  
    Return True
  

  
    CLI Example:
  

  
    .. code-block:: bash
  

  
        salt '*' test.ping
  
    '''
  

  
    if 'proxyobject' in __opts__:
  
        return __opts__['proxyobject'].ping()
  
    else:
  
        return True
  
root@salt-minion:~#
  看到没,这个__opts__,我也不是很懂,刚接触两三个多月python,水平太菜了,但肯定不是ICMP那东西。
  执行个命令看看
root@salt-master:~# salt 'salt-minion'  cmd.run 'ls /home/'  
salt-minion:
  
    lixc
  
    lost+found
  
root@salt-master:~#
  执行段小代码
root@salt-master:~# salt '*' cmd.exec_code  bash 'for i in {1,2};do echo $i;done'  
salt-minion:
  
    1
  
    2
  
root@salt-master:~#
  再执行个脚本玩玩
root@salt-master:~# cat /srv/salt/scripts/test.py  
#!/usr/bin/env python
  
import sys
  
print sys.argv[1]
  
root@salt-master:~# salt '*' cmd.script salt://scripts/test.py HelloWorld
  
salt-minion:
  
    ----------
  
    pid:
  
        4024
  
    retcode:
  
        0
  
    stderr:
  

  
    stdout:
  
        HelloWorld
  
root@salt-master:~#
  看到没,还可以带参数,比楼主几个月前完运维纯手工效率高多了。好吧,再来个文件拷贝吧
root@salt-master:~# salt-cp   '*' test.py  /tmp/  
{'salt-minion': {'/tmp/test.py': True}}
  
root@salt-master:~# salt '*' cmd.run "ls /tmp"
  
salt-minion:
  
    test.py
  
root@salt-master:~#
  再安装个软件玩玩。
root@salt-master:~# salt '*' pkg.install  vim  
salt-minion:
  
    ----------
  
    vim:
  
        ----------
  
        new:
  
            2:7.3.547-7
  
        old:
  

  
root@salt-master:~#
  好了,先到这里吧。还有个linux man手册一样的东西,不懂的模块可以问它。比如想看看cmd模块咋用。
salt '*' -d cmd  
也可以在minion端执行
  
salt-call -d cmd

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-544667-1-1.html 上篇帖子: saltstack同步文件--saltstack cp.get_file(三) 下篇帖子: 结合saltstack打造mysql dba数据库运维平台化salt-api接口
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表