免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 34710 | 回复: 21

[Salt] 用salt管理一到上万台服务器 [复制链接]

论坛徽章:
0
发表于 2013-12-23 10:13 |显示全部楼层
本帖最后由 xjq1986 于 2014-01-09 15:41 编辑

本文是使用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服务端

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


2. 安装salt 客户端

  1. wget -O - http://bootstrap.saltstack.org | sudo sh
复制代码

3. 配置salt 服务端


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

  1. /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.启动客户端

  1. /etc/init.d/salt-minion  start
复制代码

5. Salt-key确认


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

使用命令salt-key查看




AcceptedKeys:已经接受的客户端

UnacceptedKeys:还没有验证的客户端

RejectedKeys:拒绝的客户端


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

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

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




6. 执行测试在线命令

  1. salt '*'  test.ping
复制代码

格式: * 代表所有客户端,*换成id代表只是选中这个id的客户端


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





7. 执行远程命令


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

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



8. 执行远程脚本


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


9. 查看帮助


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

  1. salt '*' sys.doc > man.txt
复制代码

查看cmd.开头的模块

  1. grep 'cmd.' man.txt
复制代码

会发现有一些以cmd. 开头的模块

cmd.exec_code:

CLIExample:

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


演示:

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


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

  1. salt 'cn-gd-gz-0001' cmd.exec_code python 'print "cheese"'
复制代码

正确显示




用法是:  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

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



执行远程命令

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




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


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

修改脚本为

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

  6. if [ "$3"x = "yy"x ]
  7. then
  8.    echo "ok ???????????????"
  9. fi
复制代码

再次执行远程命令

  1. salt 'cn-gd-gz-0001' cmd.script salt://scripts/1.sh "aa bb cc"
  2. salt 'cn-gd-gz-0001' cmd.script salt://scripts/1.sh "aa bb yy"
复制代码

看起来传递的参数有效的




10.扩展

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

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


11.      管理更多服务器


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


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

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



评分

参与人数 1可用积分 +6 收起 理由
send_linux + 6 非常好的文章,感谢原创

查看全部评分

论坛徽章:
0
发表于 2013-12-26 09:18 |显示全部楼层
自己顶。。。。。。。。。。。。。。

论坛徽章:
0
发表于 2013-12-26 19:14 |显示全部楼层
这个稳定吗?

论坛徽章:
6
丑牛
日期:2013-09-17 00:18:40未羊
日期:2013-10-31 12:10:47午马
日期:2013-12-07 01:58:50水瓶座
日期:2013-12-24 22:43:12水瓶座
日期:2014-03-15 21:12:13操作系统版块每日发帖之星
日期:2016-08-07 06:20:00
发表于 2013-12-26 22:02 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2013-12-27 09:06 |显示全部楼层
salt挺稳定的,推荐使用,哈哈,谢谢版主

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每月发帖之星
日期:2015-09-11 19:30:52IT运维版块每周发帖之星
日期:2015-09-11 19:20:31IT运维版块每日发帖之星
日期:2015-08-26 06:20:00每日论坛发贴之星
日期:2015-08-20 06:20:00IT运维版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15金牛座
日期:2014-05-04 16:58:09双子座
日期:2013-12-17 16:44:37辰龙
日期:2013-11-22 15:20:59狮子座
日期:2013-11-18 22:55:08射手座
日期:2013-11-12 10:54:26
发表于 2013-12-27 12:50 |显示全部楼层
不错,支持。

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每月发帖之星
日期:2015-09-11 19:30:52IT运维版块每周发帖之星
日期:2015-09-11 19:20:31IT运维版块每日发帖之星
日期:2015-08-26 06:20:00每日论坛发贴之星
日期:2015-08-20 06:20:00IT运维版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15金牛座
日期:2014-05-04 16:58:09双子座
日期:2013-12-17 16:44:37辰龙
日期:2013-11-22 15:20:59狮子座
日期:2013-11-18 22:55:08射手座
日期:2013-11-12 10:54:26
发表于 2013-12-27 12:50 |显示全部楼层
不错,支持。

论坛徽章:
459
亥猪
日期:2014-05-31 12:08:03亥猪
日期:2014-05-31 12:07:38亥猪
日期:2014-05-31 12:08:04亥猪
日期:2014-05-31 12:07:43亥猪
日期:2014-05-31 12:07:52亥猪
日期:2014-05-31 12:08:09亥猪
日期:2014-05-31 12:07:51亥猪
日期:2014-05-31 12:08:02亥猪
日期:2014-05-31 12:07:59亥猪
日期:2014-05-31 12:07:37亥猪
日期:2014-05-31 12:07:50亥猪
日期:2014-05-31 12:07:39
发表于 2013-12-27 18:46 来自手机 |显示全部楼层
必须来涨下姿势!

论坛徽章:
0
发表于 2014-01-17 11:39 |显示全部楼层
好文章,自己下了一个salt-0.17.4的安装包,不知道这个在没有外网直连的情况下可以局域网内安装么?

论坛徽章:
0
发表于 2014-02-18 23:28 |显示全部楼层

好帖子必须顶
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP