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

[经验分享] saltstack-10897714

[复制链接]

尚未签到

发表于 2018-7-31 13:49:05 | 显示全部楼层 |阅读模式
  saltstack 安装
  两台机器
  192.168.1.122 192.168.1.124
  设置hostname以及hosts
  192.168.1.122 web1.bbs.com
  192.168.1.124 web2.bbs.com
  关闭selinux,清空iptables规则
  122上
  yum install -y epel-release
  yum install -y salt-master salt-minion
  124上
  yum install -y epel-release
  yum install -y salt-minion
  启动服务
  122上 vim /etc/salt/minion
  master:192.168.1.122
  启动服务
  service salt-master start
  service salt-minion start
  124上
  vim /etc/salt/minion
  master: 192.168.1.122
  启动服务
  service salt-minion start
  查看进程
  ps aux |grep salt
  配置认证
  一下操作都是在122上
  salt-key -a web2.bbs.com
  此时在client的/etc/salt/pki/minion命令下面会多出一个minion—_master.pub文件
  可以使用salt-key命令查看到已经签名的客户端
  salt-key可以使用-A签名所有主机,也可以使用-d删除制定主机的key
  远程执行命令
  示例1 salt '*' test.ping 这里的*表示所有已经签名的客户端,也可以制定其中一个 比如web2.bbs.com
  示例2 salt '*' cmd.run 'df -h'
  说明这里的*是在master上已经被接受过的客户端,可以通过salt-key查到,通常是已经设定的id值,关于这部分内容,它支持通配,列表以及正则。比如两台可以端web2 web3 ,那么可以写成salt ’web*' salt 'web1[01]' sakt -L 'web2,web3' salt -E 'web(10|11)等形式,使用列表,即多个机器用逗号分隔,而且需要加-L,使用正则必须要带-E选项> . 他还支持grains,加-G选项,pillar-l选项,下面会介绍到
  [root@web1 puppet]# salt '*' test.ping
  web2.bbs.com:
  True
  web1.bbs.com:
  True
  [root@web1 puppet]# salt '*' cmd.run 'df -h'
  web1.bbs.com:
  Filesystem      Size  Used Avail Use% Mounted on
  /dev/sda3        18G  2.5G   15G  15% /
  tmpfs           491M   16K  491M   1% /dev/shm
  /dev/sda1       190M   27M  154M  15% /boot
  web2.bbs.com:
  Filesystem      Size  Used Avail Use% Mounted on
  /dev/sda3        18G  1.2G   16G   8% /
  tmpfs           238M   12K  238M   1% /dev/shm
  /dev/sda1       190M   27M  154M  15% /boot
  [root@web1 puppet]# salt '*' cmd.run 'hostname'
  web2.bbs.com:
  web2.bbs.com
  web1.bbs.com:
  web1.bbs.com
  [root@web1 puppet]# salt '*' cmd.run 'w'
  web1.bbs.com:
  11:17:25 up  2:20,  1 user,  load average: 0.21, 0.13, 0.09

  USER     TTY      FROM              LOGIN@  >  root     pts/0    192.168.1.104    16:58    1.00s  1.59s  0.75s /usr/bin/python
  web2.bbs.com:
  11:17:25 up  2:20,  1 user,  load average: 0.48, 0.51, 0.46

  USER     TTY      FROM              LOGIN@  >  root     pts/0    192.168.1.104    08Jan16 16:34   0.32s  0.32s -bas
  单个执行命令
  [root@web1 puppet]# salt 'web2.bbs.com' cmd.run 'w'
  web2.bbs.com:
  11:18:34 up  2:21,  1 user,  load average: 0.52, 0.51, 0.46

  USER     TTY      FROM              LOGIN@  >  root     pts/0    192.168.1.104    08Jan16 17:43   0.32s  0.32s -bas
  正则
  salt -E 'web(1|2).bbs.com' cmd.run 'w'
  列表
  salt -L 'web1.bbs.com,web2.bbs.com' cmd.run 'w'
  grains
  grains是在minion启动时收集到的一些信息,比如操作系统类型,网卡ip,内核版本,CPU架构等。
  salt 'web2.bbs.com' grains.ls 列出所有的grains项目名字
  salt 'web2.bbs.com' grains.items 列出所有grains项目以及值
  grains的信息并不是动态的,并不会实时变更,他只是在minion启动时收集到的 不能变化
  可以根据grains收集到的一些信息,做配置管理工作
  grains支持自定义信息
  自定义grains
  124上
  vim /etc/salt/grains 添加
  role: nginx
  env:test
  重启minion服务
  service salt-minion restart
  122上
  获取grains:
  salt '*' grains.item role env
  可以借助grains的一些属性信息来执行
  salt -G role:nginx cmd.run 'hostname'
  pillar
  pillar和grains不一样,实在master上定义的,并且针对minion定义的一些信息,像一些比较重要的数据(密码)可以存在pillar里,还可以定义变量等
  配置自定义pillar
  vim /etc/salt/mster
  找到如下配置
  pillar_roots:
  base:
  - /srv/pillar
  去掉前面的警号
  mkdir /srv/pillar
  vim /srv/pillar/test.sls
  conf: /etc/123.conf
  vim /srv/pillar/top.sls 作为总入口配置文件 不定义它test.sls不生效
  base:
  'web2.bbs.com':
  - test
  重启master
  /etc/init.d/salt-master restart
  salt 'web2.bbs.com' pillar.items
  salt '*' pillar.item conf
  当更改玩pillar配置文件后,可以通过刷新pillar配置来获取新的pillar状态:
  salt '*' saltutil.refresh_pillar
  验证: salt '*' pillar.items test
  pillar 同样可以用来作为salt的匹配对象 比如salt -l 'conf:/etc/123.conf test.ping
  在添加模块
  在 cd pillar/
  vim aaa.sls
  system: Centos
  vim top.sls
  base:
  'web2.bbs.com':
  - test
  - aaa
  salt '*' saltutil.refresh_pillar
  [root@web1 pillar]# salt -I system:Centos cmd.run 'w'
  web2.bbs.com:
  13:36:51 up  4:39,  1 user,  load average: 0.60, 0.52, 0.46

  USER     TTY      FROM              LOGIN@  >  root     pts/0    192.168.1.104    08Jan16 18:22   0.35s  0.35s -bash
  配置管理安装Apache
  122上 vim /etc/salt/master 找到file_roots
  打开如下内容的注释
  file_roots:
  base:
  - /srv/salt
  mkdir /srv/salt ; cd /srv/salt
  vim /srv/salt/top.sls 加入以下内容
  base:
  '*':
  - apache
  意思是。在所有的客户端上执行Apache模块
  重启/etc/init.d/salt-master restart
  vim apache.sls
  apache-service:
  pkg.installed:
  - names:  这里如果只有一个服务,那么就可以写成 -name:httpd 不用在换行了
  - httpd
  - httpd-devel
  service.running:
  - name: httpd
  - enables: True
  说明 Apache-service是id的名字 自定义的 pkg.installed为包安装函数,下面是要安装的包的名字 service.running也是一个函数,来保证制定的服务启动 ,enable开机启动
  执行salt 'web2.bbs.com' state.highstate
  管理管理文件
  /srv/salt
  vim filetest.sls
  file_test:
  file.managed:
  - name: /tmp/12.conf
  - source: salt://test/123/1.txt
  - user: root
  - group: root
  - mode: 644
  说明:第一行的file_test为自定义名字,表示该配置段的名字,可以在别的配置段中引用它,source指定文件从哪里拷贝,这里的test相当于是/srv/salt/test
  salt://==/srv/salt
  /srv/salt
  [root@web1 salt]# mkdir test
  [root@web1 salt]# mkdir test/123
  vim test/123/1.txt
  执行salt 'web2.bbs.com' state.highstate
  管理目录
  [root@web1 salt]# vim dirtest.sls
  file_dir:
  file.recurse:
  - name: /tmp/testdir
  - source: salt://test/123
  - user: root
  - file_mode: 644
  - dir_mode: 755
  - mkdir: True
  - clean: True
  [root@web1 salt]# touch test/123/111111.txt
  [root@web1 salt]# salt 'web2.bbs.com' state.highstate
  配置管理远程命令
  cmd_test:
  cmd.run:
  - onlyif: test -f /tmp/111.txt
  - name:
  - touch /tmp/111.txt
  - mkdir /tmp/1233
  - user: root
  配置管理远程脚本
  vim shelltest.sls
  shell_test:
  cmd.script:
  - source: salt://test/1.sh
  - user: root
  vim /srv/salt/test/1.sh
  #!/bin/bash
  touch /tmp/111111.txt
  if [ -d /tmp/123333 ]
  then
  rm -rf /tmp/123333
  fi
  [root@web1 salt]# vim top.sls
  base:
  'web2.bbs.com':
  - shelltest
  salt 'web2.bbs.com' state.highstate
  配置管理任务计划
  cron.absent:表示删除
  cron_test:
  cron.present:
  - name: /bin/touch /tmp/1.ttt
  - user: root
  - minute: '*'
  - hour: 20
  - daymonth: '*'
  - month: '*'
  - dayweek: '*'
  vim top.sls
  base:
  'web2.bbs.com':
  - shelltest
  - crontest
  salt 'web2.bbs.com' state.highstate
  可能会用到的命令
  cp.get_file 拷贝master上的文件到客户端
  [root@web1 salt]# salt 'web2.bbs.com' cp.get_file salt://apache.sls /tmp/apeda
  web2.bbs.com:
  /tmp/apeda
  cp.get_dir拷贝目录
  salt '*' cp.get_dir salt://test/conf /tmp/ 会自动在客户端创建conf目录,所以后面不要加conf, 如果写成/tmp/conf/则会在/tmp/conf/目录下又创建conf
  [root@web1 salt]# salt 'web2.bbs.com' cp.get_dir salt://test /tmp/
  web2.bbs.com:
  - /tmp//test/1.sh
  - /tmp//test/123/1.txt
  - /tmp//test/123/111111.txt
  salt-run manage.up 显示存活的minion
  salt '*' cmd.script salt://test/1.sh 命令下执行master上的shell脚本

运维网声明 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-544217-1-1.html 上篇帖子: saltstack常用的命令组合整理(持续更新中....) 下篇帖子: saltstack(2.2-3.0)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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