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

[经验分享] 用salt管理一到上万台服务器

[复制链接]

尚未签到

发表于 2015-11-26 12:44:45 | 显示全部楼层 |阅读模式
本文是使用salt管理一台虚拟机,从而引出管理一万台服务器的思路.^_^


1.      安装salt服务端

2.      安装salt 客户端

3.      配置salt 服务端

4.      配置salt客户端

5.      Salt-key确认

6.      执行测试在线命令

7.      执行远程命令

8.      查看帮助

9.      执行远程脚本

10.   扩展

11.  管理更多服务器



本文从这个网址得到启发http://wiki.saltstack.cn/docs


测试环境,salt服务端IP:192.168.1.1   salt客户端IP:192.168.1.2


1.安装salt服务端


  • curl -L http://bootstrap.saltstack.org | sudo sh -s -- -M -N
复制代码


2.安装salt 客户端


  • wget -O - http://bootstrap.saltstack.org | sudo sh
复制代码
3.配置salt 服务端


Salt服务端一般不需要配置,直接启动即可


  • /etc/init.d/salt-master  start
复制代码
4.配置salt客户端


编辑 /etc/salt/minion文件

a.修改masterIP为服务端IP: 192.168.1.1

Master:192.168.1.1

b.修改客户端标识id这个是验证和管理时使用的名称

id:cn-gd-gz-0001

c.启动客户端


  • /etc/init.d/salt-minion  start
复制代码
5. Salt-key确认


这时候服务端已经接受到客户端的验证请求

使用命令salt-key查看



DSC0000.jpg



AcceptedKeys:已经接受的客户端

UnacceptedKeys:还没有验证的客户端

RejectedKeys:拒绝的客户端


这时候看到cn-gd-gz-0001在未验证那里显示

执行命令接受管理这个客户端,会提示是否接受,Y即可


  • salt-key -a cn-gd-gz-0001
复制代码


DSC0001.jpg



6.执行测试在线命令


  • salt '*'  test.ping
复制代码
格式: *代表所有客户端,*换成id代表只是选中这个id的客户端


返回true说明客户端在线,无响应大家懂的


DSC0002.jpg




7.执行远程命令


cn-gd-gz-0001这台客户端执行命令uname –a


  • salt 'cn-gd-gz-0001' cmd.run 'uname -a'
复制代码
DSC0003.jpg



8.执行远程脚本


上面cmd.run可以执行远程命令,但是有时我们想执行很多命令,例如一键安装lnmp,怎么办?


9.查看帮助


可以查看帮助文档来解决这个问题,帮助文档太多了,重定向到一个文件再看


  • salt '*' sys.doc > man.txt
复制代码
查看cmd.开头的模块


  • grep 'cmd.' man.txt
复制代码
会发现有一些以cmd.开头的模块

cmd.exec_code:

CLIExample:

         salt '*' cmd.exec_code ruby 'puts "cheese"'


演示:


  • salt 'cn-gd-gz-0001' cmd.exec_code ruby 'puts "cheese"'
复制代码

这个客户端没有ruby,返回找不到这个命令


  • salt 'cn-gd-gz-0001' cmd.exec_code python 'print "cheese"'
复制代码
正确显示


DSC0004.jpg



用法是:  salt ‘目标执行语言 对应语言的代码



cmd.run  这个前面说了


cmd.script

这个是比较强大的命令,意思是可以从远程下载一个脚本在客户端执行


CLIExample:

         salt '*' cmd.script salt://scripts/runme.sh

         salt '*' cmd.script salt://scripts/runme.sh 'arg1 arg2 "arg 3"'



帮助文档说Thescript can be located on the salt master file server or on an HTTP/FTP       server.


所以配置一下salt服务端,把脚本放在服务端



编辑/etc/salt/master,打开下面的注释,保存后重启服务端

file_roots:

   base:

     - /srv/salt


如果没有/srv/salt/script目录就创建一个


cd/srv/salt/scripts


写一个shell脚本保存为1.sh


  • #!/bin/bash
  • echo  "test salt" > /tmp/testsalt.txt
复制代码


执行远程命令


  • salt 'cn-gd-gz-0001' cmd.script salt://scripts/1.sh
复制代码
DSC0005.jpg




显示的信息还是很直观的,stdout没有信息显示是因为脚本语句没有显示文本,可以加多一句echo “ok”再执行多一次就可以看到输出了.


看帮助好像还可以在执行脚本时添加命令行参数,试试

修改脚本为


  • #!/bin/bash
  • echo  "test salt" > /tmp/testsalt.txt
  • echo $1
  • echo $2
  • echo $3

  • if [ "$3"x = "yy"x ]
  • then
  •    echo "ok ???????????????"
  • fi
复制代码
再次执行远程命令


  • salt 'cn-gd-gz-0001' cmd.script salt://scripts/1.sh "aa bb cc"
  • salt 'cn-gd-gz-0001' cmd.script salt://scripts/1.sh "aa bb yy"
复制代码
看起来传递的参数有效的



DSC0006.jpg



10.扩展

grep  'cmd.' man.txt这个命令可以查出帮助文档中还有其它 cmd. 大概有10个,童鞋们可以研究研究

除了这个远程执行之外,salt还有很多已经做好的模块,在这里就不一一介绍了


11.      管理更多服务器


基本思路是: 把需要执行的脚本放在服务端,然后让客户端下载回去自己执行.......然后就可以喝杯茶了


这里演示是管理一台虚拟机。。。。。。。。能不能很方便管理一百台服务器?一千台服务器?一万台服务器?

笔者也没有一万台服务器环境,只能说管理几百台机器还是轻松加愉快的^_^ 如果你有更好的想法和建议,请告诉我,谢谢.





本文来自:http://bbs.iyunv.com/thread-4116433-1-1.html

运维网声明 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-143889-1-1.html 上篇帖子: skill sum review 下篇帖子: 2013年度Python运维工具
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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