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

[经验分享] saltstack学习实例

[复制链接]

尚未签到

发表于 2018-8-1 08:01:41 | 显示全部楼层 |阅读模式
  I、saltstack介绍
  摘抄“葱油拌面  Lax” 翻译的一段
  不久前的一天,当我自豪穿着Salt Stack 文化衫的时候,我的女儿看到后就当面问我,“Salt Stack 是什么呀?”
于是,我开始了作出了如下的解释,假如你有很多台服务器而且想要操作这些服务器,你也许需要一台一台的登录这些服务器,每次作出一次操作变更。这些操作可
能是相当简单的,比如重启他们或者检查他们已经运行了多久,更或者,你想要做些更复杂的事情,比如安装软件和按照你的特殊需求来配置他们,也许你只是想要
增加用户并且配置他们的权限。
  假如你有百十来台服务器,你应该怎么做?想象一下你每次一台一台的登陆这些服务器,执行同样的命令在这些100台的服务器中并且编辑同一个配置文
件,你可以想象吗?这是多么的苦逼!仅仅更新一下用户的密码策划就要用掉数天的时间,并且你可能出现错误的操作,怎么样通过一个命令一次完成所有服务器的
操作?怎么解决?答案就是,Salt Stack!
  简言之,saltstack是用python写的一个命令行工具,主要有两个功能:配置管理(puppet专属),远程执行命令(貌似fabric专属)。
  II、安装(yum安装比较方便哈)
  1、环境准备
  OS 版本:CentOS6.5
  master: 192.168.30.135
  minion: 192.168.30.131    \192.168.30.133\192.168.30.134
  Master就是salt的服务端,可以说是中心机器,minion就是客户端,就是我们即将管理的多台机器。
  2、master端安装及配置
#导入EPEL YUM源  
rpm -Uvh http://mirror.pnl.gov/epel/6/x86_64/epel-release-6-8.noarch.rpm
  
#服务器master的安装
  
yum -y install salt-master
  配置启动:
vi /etc/salt/master  
interface: 192.168.30.135  #此处是server端监听的地址。
  
auto_accept: True    #此处是自动接受客户端发送过来的key,如果服务器很多的话,需要开启该功能。
  
##启动
  
service salt-master start
  3、client端安装
#导入EPEL YUM源  
rpm -Uvh http://mirror.pnl.gov/epel/5/i386/epel-release-5-4.noarch.rpm
  
yum -y install salt-minion
  配置启动:
#vi /etc/salt/minion  
master: 192.168.30.135  #这里改成你的master服务器地址
  
id: node1 #建议这里修改成主机名,便于master端分辨
  

  
#在配置文件末尾加入下面内容,每隔5分钟自动同步master配置,效果等同于在客户端执行salt-call state.highstate或在server端执行 salt '*'state.highstate
  
schedule:
  
  highstate:
  
    function: state.highstate
  
    minutes: 5
  
##启动
  
/usr/bin/salt-minion -d #后台启动
  
/usr/bin/salt-minion -d  #前台启动,方便调试
  
#注:minion启动后,自动会生成公钥私钥,并把公钥发送到master端。
  
#minion不监听端口,全靠和master保持长连接,可通过netstat -an|grep ES来查看是否有连接。
  
#也可以类似service satl-minion start方式启动
  
  
  III、常用命令使用
  1、salt-key证书管理
  master端证书存放路径:/etc/salt/pki/master/minions
salt-key  -L            #查询所有接收到的证书  
salt-key  -a <证书名>   #接收单个证书
  
salt-key  -A            #接受所有证书
  
salt-key  -d <证书名>   #删除单个证书
  
salt-key  -D            #删除所有证书
  2、salt执行远程主机命令
salt '*'  test.ping  
#*为匹配所有主机,test.ping为salt一个函数,注:*号是正则,若分了多个组,可以类似于web*,只匹配web服务器
  
salt '*'  cmd.run 'df -h'
  
#查看所有主机的磁盘信息,cmd.run执行单个命令
  
salt '*'  cmd.script salt://hello.sh
  
salt '*'  cmd.script  salt://scripts/runme.sh 'arg1 arg2 "arg 3"'
  
#cmd.script执行一个脚本,即把本地脚本拷贝到远程主机上执行,hello.sh要放在指定的文件存放路径,默认是/srv/salt/
  
salt '*'  state.highstate
  
#向客户端推送master端配置。
  
salt '*' cmd.run 'df -h '  -t 5
  
#超时控制
  3、salt分组管理
  a、方法一
vim /etc/salt/master   找到 nodegroups去掉注释,见如下:  
    nodegroups:
  
        test1: 'L@node1,node2'
  
        test2: 'G@os:CentOS and target'
  
    重启master,service salt-master restart
  
    执行分组的命令及结果:
  
    [root@localhost ~]#  salt -N test1 cmd.run 'hostname'
  
     node1:
  
         node1.test.com
  
     node2:
  
         node2.test.com
  b、方法二
    编辑/etc/salt/master配置文件,在大概12行左右 找到下面的情况去掉注释  
    #default_include: master.d/*.conf
  
    然后在/etc/salt目录下建立master.d目录,新建一个配置文件,如:group.conf,内容如下:
  
    [root@localhost master.d]# more group.conf
  
    nodegroups:
  
        test1: 'L@node1,node2'
  
        test2: 'G@os:CentOS and ttarget'
  
    重启后,执行结果和方法一一致
  4、salt-run检查客户端up状态
  注:该处状态检查salt使用的是test.ping,如果服务器禁ping,则该处不准。
salt-run manage.status #查看所有客户端up/down状态  
salt-run manage.up    #只显示up状态的客户端
  
salt-run manage.down  #只显示down状态的客户端
  5、salt-cp批量拷贝文件
  在master端执行:
语法:  
salt-cp [options] '<target>'SOURCE DEST
  

  
示例:
  
salt-cp '*'  /etc/hosts   /etc/hosts #把master上的hosts文件分发到所有主机。
  
  IV、salt-ssh
  ---待完成
  V、自动同步文件
  1、编辑top.sls
[root@localhost salt]# cat /srv/salt/top.sls  
base:
  
  "*":
  
    - test.test
  2、在/srv/salt下建立test目录,然后进入test目录,编辑test.sls
[root@localhost test]# more test.sls  
/home/eric/test/UserParameter.conf:   ##minion里放置文件的位置
  
  file.managed:
  
    - source: salt://test/UserParameter.conf     ##master里面源文件的位置
  
    - backup: minion        #当文件发生变化时,都会把原文件备份,备份文件目录:/var/cache/salt/minion/file_backup/
  
    - mode: 744
  
    - user: root
  
    - group: root
  3、把要同步的配置文件(例如:UserParameter.conf)放到/srv/salt/test下面;/srv/salt目录下的目录结构如下:
[root@localhost salt]# tree  
.
  
├── test
  
│   ├── test.sls
  
│   └── UserParameter.conf
  
└── top.sls
  
1 directory, 3 files
  4、命令执行
  [root@localhost http]# salt '*' state.highstate

运维网声明 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-544427-1-1.html 上篇帖子: 安装SaltStack(下面简称为salt) 下篇帖子: SaltStack的pillar学习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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