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

[经验分享] saltstack知道这些就很好用了

[复制链接]

尚未签到

发表于 2018-7-31 12:50:10 | 显示全部楼层 |阅读模式
  [salt 安装和查看版本]
  
  安装 省略
  查看版本: salt --versions-report
  
  【salt的目录结构】
  环境是有默认的,不过可以更改配置/etc/salt/master文件中file_roots
  file_roots:
  base:
  - /data1/salt/base/
  db:
  - /data1/salt/db/
  dev:
  - /data1/salt/dev/
  prod:
  - /data1/salt/prod/
DSC0000.jpg

  【先掌握saltstack的SLS文件命名空间问题】
  遵照以下规则:

  •   sls是扩展名
  •   .sls是被省略的(如 zabbix.sls使用的时候 为 zabbix)
  •   存在包的时候 如:执行包1/xxx.sls ,用包1.xxx的方式表示
  •   如果包目录创建一个init.sls的文件,引用的时候仅指定该目录即可 (例如 包1/init.sls 可以简称为 包1)
  •   如果一个目录下同时存在包1.sls 和 包1/init.sls,那么包1/init.sls 将被忽略,SLS文件引用的包1将只引用包1.sls
  【从以下三个执行方式就可以理解以上说的了】
salt "dev-mysql001" state.highstate  -v test=true  highstate意思就是从base环境(默认是执行base环境)目录下的top.sls开始执行
  所以你的top.sls就可能写成以下这个样子
  base:
  '*':
  - init         # the system init
  - users        # add users three user one pubkey
  - sudoer        # config sudoer
  - yum          # repos config file
  - hosts         # sync host and resolve
  - ssh          # ssh-client,ssh-server config
  - ntpd         # service ntpd
  - syslog        # log server config
  - monitor       # zabbix,salt-minion config
  - vim          # vim,vimconfig vimcolor
salt 'dev-mysql001' state.sls monitor -v test=true  state.sls的意思是执行指定的一个.sls文件。 monitor更具sls命名规则的第4条规则,执行包1下面的init.sls
  可能monitor包下面的sls文件就这样写的了
  # cat monitor/init.sls
  include:
  - .zabbix
  # cat monitor/zabbix.sls
  zabbix-agent:
  pkg:
  - installed
  - names:
  - zabbix-agent
salt "dev-mysql001" state.sls  saltenv='prod'  nginx.stock  指定的是prod环境,而不是默认的base环境
  【关于其他的嘛,知道一下几点就可以了】
  1 懂得如何-v test=true 去验证 (cmd.rum 执行命令这个是没用的哦记住哦,别犯傻)
  2 salt "dev-mysql001" cmd.run  "you command"
  注意"you command " 和 'you command' 的区别,双引号中可以使用变量如
    for i in dev-app001.novalocal; do salt "$i" cmd.run "hostname `echo $i| sed 's#\.novalocal##g'` " ;done  3 slat "dev-mysql001" test.ping
  4 知道如何tail -f /var/log/salt/minion 查看(master执行的会在minion中生成日志)
  5 知道如何调整minion配置文件中log_level = debug这个调整在排查的时候很有作用(默认是#log_level: warning)
  6 观察执行结果中的绿色 黄色  红色代表啥意思~~·
  黄色是即将要更改的(test=true模式中)
  蓝色是更改了的
  绿色为更改
  红色更改失败
  7 获取静态minion端的静态变量
salt "dev-mysql001" grains.items  

  
salt "dev-mysql001" grains.ls
  

  
salt "mysql001" grains.item fqdn
  【关于如何写.sls文件,如果理解一上的,百度百度就知道如何写了】
  【关于自带的模块】
  1 拷贝文件
salt "shnh-db001*" cp.get_file salt://monitor/file/db.conf /data1/env/zabbix30/etc/zabbix_agentd.d/db.conf  salt:// 对应的根目录是 master 配置文件中的 file_roots 的 base 项。
  问题:
  1 权限不能同步,不如x权限不能同步的想cp -p一样保持。
  解决方法:cmd.run 'chmod +x xxx.file'
  2 只能是相对salt目录
  【自定义grains的方法】

  •   可以在minion端写,并且重启salt-minion
  •   在master端写.py脚本,然后同步到指定的或者所有的minion端
  方法1:
  参考:http://blog.csdn.net/hnhuangyiyang/article/details/50410709
  步骤
  在minion.d下创建test.conf文件定义grains
  grains:   #这是一个标签

  >  - hhe
  - nice
  user: cuizhiliang
  重启/etc/init.d/salt-minion restart
  minion端获取验证:

  [root@dev-vhost012 minion.d]# salt-call -l error grains.item>  local:
  ----------

  >  - hhe
  - nice
  注意: 删除这个静态变量,删除文件重启salt-minion即可。
  方法二(不需要重启minion客户端)
  在master端书写.py文件,然后同步到指定的minion端jike
  参考:http://blog.csdn.net/hnhuangyiyang/article/details/50410709
  在file_roots目录下(默认是/srv/salt/),如果更改就是base目录的那个file_roots下面。
  1. 在此目录下创建_grains目录(/data1/salt/base/_grains),在建立你的py文件,且py文件中返回值要是一个字典形式,且脚本一定要有执行权限。
  2. 写wlink.py文件
  [root@dev-mon001 _grains]# cat wlink.py
def wlink():  
    wlink={}
  
    wlink['wlink']='yes'
  
    return wlink
  3.增加可执行权限
  chmod +x wlink.py
  4 同步到指定的minion
  [root@dev-xxx001 _grains]# salt  "localhost.localdomain.a.pa.com"  saltutil.sync_grains
  localhost.localdomain.a.pa.com:
  - grains.wlink
  5 验证获取
  [root@dev-xxx001 _grains]# salt  "localhost.localdomain.a.pa.com"  grains.item wlink
  localhost.localdomain.a.pa.com:
  ----------
  wlink:
  yes
  注:删除这个grains,删出文件,在同一一次即可。
  【pillar】
  1 master 端定义
  2 master配置文件中找到pillar_roots (默认/srv/pillar)
  3 确定pillar_opts: True 这个参数,表示master配置文件都将当做pillar的key/value
  4 pillar如何定义,如何使用
  像写sls文见一样
  如:
  [root@dev-vhost012 pillar]# cat top.sls
  base:
  "*":
  - data
  - users
  [root@dev-vhost012 pillar]# cat users/init.sls
  users:
  user1: 4000
  user2: 4001
  user3: 4002
  user4: 4004
  user5: 4005
  pillar写完后,是不需要重启master的。
  验证:
salt "*" pillar.items  立刻同步到minion当中,(也可以不做,如果未生效可以使用一下  刷新pillar)
salt ‘*’ saltutil.refresh_pillar  salt shzr* saltutil.refresh_pillar
  5 用途:
  1 salt -I "key/value"  过滤出对已的客户端 (不常用)
  2 使用咋模板当中(常用)
  如:
  [root@dev-vhost012 base]# pwd
  /data1/salt/base
  [root@dev-vhost012 base]# cat top.sls
  base:
  "*":
  - users
  [root@dev-vhost012 base]# cat users/init.sls
  {% for user, uid in pillar.get('users',{}).items() %}
  `user`:
  user.present:
  - uid: `uid`
  {% endfor %}
  【pillar中查看nodegroups】
  查看nodegroups的方法
  1 cat /etc/salt/master 文件或者 cat /etc/salt/master.d/ 配置文件
  2 pillar.items查看
  salt "dev-db001.a.pa.com" pillar.items |grep -A10 nodegroups
  salt "dev-db001.a.pa.com" pillar.item master
  [salt的job 相关遇见]
  master端显示正在运行的job
  salt-run jobs.active
  结束指定的jobs
  salt '*' saltutil.term_job 20141230094047407913
  salt "10.20.101.97" saltutil.kill_job 20160728144218830252
  slave端可以查看正在cache的job
  /var/cache/salt/minion/proc/20160728144218830252
  [salt-run命令]
  一般在master端进行执行
  salt-run [options] [runner.func]
  salt-run manage.status   ##查看所有minion状态
  salt-run manage.down     ##查看所有没在线minion
  salt-run manged.up       ##查看所有在线minion
  ###########################  salt 报错解决 ##########################
  salt 报错解决:
  If you are confident that you are connecting to a valid Salt Master, then remove the master public key and restart the Salt Minion.
  The master public key can be found at:
  /etc/salt/pki/minion/minion_master.pub
  解决:
  master 端删除key
  salt -d app001.a.pa.com -y
  client 端 删除salt-master的key缓存
  rm /etc/salt/pki/minion/minion_master.pub
  重启salt-minion
  /etc/init.d/salt-minion restart
  master端 接收
  salt-key -a app001.a.pa.com -y
  clinet 这个而被重新生成
  /etc/salt/pki/minion/minion_master.pub

运维网声明 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.iyunv.com/thread-544170-1-1.html 上篇帖子: saltstack批量修改root密码 下篇帖子: SaltStack部署及使用实践
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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