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

[经验分享] 56. Python saltstack 二次开发(1)

[复制链接]

尚未签到

发表于 2018-7-31 07:20:31 | 显示全部楼层 |阅读模式
  Saltstack简介
  Salt 是:
  一个配置管理系统,能够维护预定义状态的远程节点(比如,确保指定的报被安装,指定的服务在运行);
  一个分布式远程执行系统,用来在远程节点(可以是单个节点,也可以是任意规则挑选出来的节点)上执行命令和查询数据;
  开发其的目的是为远程执行提供最好的解决方案,并使远程执行变得更好,更快,更简单。
  Saltstack(中国用户组 www.saltstack.cn )基于python开发,c/s架构,支持多平台,比puppet轻量,在远程执行命令时非常快捷,配置和使用比puppet容易,能实现puppet几乎所有的功能。
  Saltstack的优势:
  有master端和minion端,执行的信息比较稳定,不容易丢失信息,或者出现失联主机的情况
  有封装好的http-api,我们可以直接启动salt-api就可以通过http协议进行调用。不需要自己进行第二次的封装
  基于centos6和centos7的差异,在两个不同的操作系统中安装saltstack也是不一样的。
  参考网址:
  https://docs.saltstack.com/en/latest/topics/installation/rhel.html
  Centos6需要先安装扩展源,然后在进行安装:
  Master端
yum install –y salt-master  
yum install –y salt-api
  Minion端:
yum install  -y salt-minion  Saltstack的秘钥安装
  Master与Minion认证:

  minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和 minion.pub(public key),然后将 minion.pub发送给master。master在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion>salt-key -L 或者salt-key #显示所有的key  
salt-key -D #删除所有认证主机id证书
  
salt-key -d keys_values -y
  
salt-key -A#接收所有id证书请求
  
salt-key -a id #接受单个id证书请求
  1.-E, --pcre,通过正则表达式进行匹配:
  salt -E 'web(9|10)*' test.ping -t 1
  2. -L, --list, 主机id进行过滤:
  salt -L "*app*" cmd.run "df -h"
  3. -G, --grain, 根据被控主机的grains信息进行过滤
  salt -G 'role:nginx' cmd.run "ls /export"
  4. -I, --pillar, 根据被控主机的pillar信息进行过滤
  salt -I 'myname:xiang' test.ping -t 5
  5. -S, --ipcidr, 根据minion的ip地址进行匹配
  salt -S 192.168.1.1 test.ping
  salt -S 192.168.1.0/24 test.ping
  salt -S 192.168.0.0/16 test.ping
  salt -S 192.0.0.0/8 test.ping
  6.检查客户端是否挂掉:
  salt-run manage.status |head
  salt-run manage.down
  Saltstack配置文件详解
  Saltstack占用两个端口4505和4506
  1. 确保master端的4505和4506端口开通
  2. Minion的key确实别master接受
  3. 通过test.ping 模块,双方都可以ping通
  配置文件详解:
  http://note.youdao.com/noteshare?id=ef288d8d0abb8f3e8bf6aa5b87bfabd3&sub=wcp1478526434731795
  Saltstack的几种模块介绍
  在二次开发中开发的模块有2个,如下(Runner、Module):
  Runner 模块     在master端执行的  salt-run
  Module 模块    通过master同步到minion端, 在minion执行
salt-call saltutil.sync_modules  
salt-call saltutil.sync_all
  包括:
  beacons:
  clouds:engines:grains:log_handlers:modules:
  output:proxymodules:renderers:returners:sdb:
  states:utils:
  Grins 模块记录minion的属性key:value
  Pillar模块记录所有minion通用的属性,然后同步到minion端
salt-call saltutil.refresh_pillar  
salt ‘*’ saltutil.refresh_pillar
  1. cmd模块
salt  ‘*’ cmd.run “df -h”  2. ping模块
salt ‘*’ test.ping -t 5#-t 超时时间,秒  3. cp 模块
file_roots:  
base:
  
- /export/salt/root
  salt根目录:
  在master中file_roots定义的路径
  salt://test.txt 相当于 /export/salt/root/test.txt
  用法:
salt  '172.17.23.11'  cp.get_file  salt://nscd.conf   /tmp/xiang.txt(拷贝文件)  4. cron模块:
salt '*' cron.raw_cron root     (查看定时任务)  
salt '*' cron.set_job root '*' '*' '*' '*' 1 /export/scripts/rm_log.sh (设定定时任务)
  
salt '*' cron.rm_job root /export/scripts/rm_log.sh   (删除定时任务,写全没效果)
  5.dnsutil模块
salt '*' dnsutil.hosts_append /etc/hosts 127.0.0.1 xiang.com  
salt '*' dnsutil.hosts_remove /etc/hosts xiang.com
  6.file模块:
salt '*' file.chown /etc/passwd root root  
salt '*' file.copy /path/to/src /path/to/dst
  
salt '*' file.file_exists /etc/hosts
  
salt '*' file.directory_exists /etc/
  
salt '*' file.get_mod /etc/passwd
  
salt '*' file.set_mod /etc/passwd 0644
  
salt '*' file.mkdir /tmp/test
  
salt '*' file.sed /export/servers/nginx/conf/nginx.conf 'debug' 'warn'
  
salt '*' file.append /tmp/test.txt "welcome xiang"
  
salt '*' file.remove /tmp/1.txt
  7.network模块:
salt '*' network.dig www.qq.com  
salt '*' network.ping www.qq.com
  
salt '*' network.ip_addrs
  8.pkg包管理模块:
  管理yum, apt-get等
salt '*' pkg.install php(安装应用)  
salt '*' pkg.remove php(移除应用)
  
salt '*' pkg.upgrade    (升级所有的软件包)
  9.service模块(centos6)
salt '*' service.enable nginx  
salt '*' service.disable nginx
  
salt '*' service.restart nginx
  Grains
  自定义grians(是在minion上定义的)
  记录的是客户端上的
  grains是在minion启动时搜集一些信息,如操作系统类型,网卡,内核版本,cpu架构等
salt "*" grains.ls    列出所有grains项目名字  
salt "*app.*" grains.items  列出所有grains项目以及值
  
salt "*" grans.item serialnumber查看服务器的sn码
  
(其他以此类推)
  grains的信息并不是动态的,并不会实时变化,它只是在minion启动时收集到的
  我们可以根据grains收集到的一些信息,做一些配置管理工作
  在minion上:
vim /etc/salt/grains  
role: nginx
  
env: test
  重启
service salt-minion restart  获取grians:
salt "*" grains.item role env  或者:
salt -G "*" role:nginx cmd.run "hostname“  
salt ‘*’grains.items
  (虽然也挺好用,但是很少用,要用也是用pillar)
  Pillar
  (记录的是服务端上的信息)
  pillar(在master上定义)
  (yaml语法)
  在配置文件中找pillar的文件路劲:创建目录
mkdir  /export/salt/pillar  在目录内定义文件:
vim top.sls  
base:
  
"*":
  
- test
vim test.sls  
conf: xiang
  然后
  刷新pillar:
salt '*' saltutil.refresh_pillar  验证:
salt '*' pillar.items conf  或者:
salt -I  'conf:xiang' test.ping

运维网声明 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-543794-1-1.html 上篇帖子: saltstack 任务管理和集群(三) 下篇帖子: Saltstack自动化运维工具 实战与部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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