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

[经验分享] 车到山前没有路,扔了骑车去跑步

[复制链接]

尚未签到

发表于 2018-1-3 16:59:44 | 显示全部楼层 |阅读模式
SALTSTACK是什么?
  Salt是一种和以往不同的基础设施管理方法,它是建立在大规模系统高速通讯能力可以大幅提升的想法上。这种方法使得Salt成为一个强大的能够解决基础设施中许多特定问题的多任务系统。远程执行引擎是Salt的核心,它能够为多组系统创建高速、安全的双向通讯网络。基于这个通许系统,Salt提供了一个非常快速、灵活并且容易使用的配置管理系统,称之为“Salt States”。通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。

saltstack的三种运行方式:


  • local 本地

  • master/minion   主人批量管理方式

  • salt ssh    ssh方式
  saltstack的特点:


  • 部署简单、方便;
  • 主从集中化管理;
  • 配置简单、功能强大、扩展性强;
  • 主控端(master)和被控端(minion)基于证书认证,安全可靠;
  • 支持API及自定义模块,可通过Python轻松扩展。
  saltstack主要功能:



  • 远程执行命令

  • 配置管理

  • 云管理 支持各种云平台

安装SALT
  测试环境配置

系统版本
IP
主机名
CentOS Linux>  我在centos7.2环境下
  参考:
  https://docs.saltstack.com/en/latest/topics/installation/index.html#quick-install1
  配置好salt源,直接用yum安装
  安装的版本是SALT 2016.11.5
DSC0000.png

  1.安装master
  master-node上安装
  

yum install salt-master  

  

  安装salt-master会自动把salt-minion安装上。
  2.安装minion
  minion-node上安装
  

yum install salt-minion  

  

  3.master-node开机自启master,minion-node开机自启minion
  

systemctl enable salt-master  

  
systemctl enable salt-minion
  

  

  4.启动salt-master和salt-minion
  

master-node主机上执行:  
systemctl start salt-master
  

  

  

  
minion-node上执行
  
systemctl start salt-minion
  

  

  5.做上host解析(测试环境)有dns可以做dns解析
  HOST文件如下
  

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4  
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  
192.168.14.50 master-node-01
  
192.168.14.37 minion-node-01
  

  

  master和minion的hosts文件都是一样
  6.防火墙,(做测试我关掉了 )
  

iptables -I INPUT -m state --state new -m tcp -p tcp --dport 4505 -j ACCEPT  
iptables -I INPUT -m state --state new -m tcp -p tcp --dport 4506 -j ACCEPT
  

  

  master可以有多个,minion一样也是可以有多个
  安装salt-master会默认把salt-minion安装上
  master可以理解为主人,minion可以理解为奴才

修改配置文件
  在master-node和minion-node上都修改/etc/salt/minion中16行的位置
  去掉注释master哪行改为如下内容:
  

master: 192.168.14.50    

  告诉主人是谁,master后面也可以是域名
  修改了配置文件,记得重启服务

认证
  认证一般都是在master上操作,可以简单理解是否管理这太机器
  minion第一启动会产生认证文件,会把公钥发送给master
  认证目录:/etc/salt/pki/minion
  master第一次启动也会产生相应的认证文件
  认证目录:/etc/salt/pki/master
  在master上可以利用tree命令查看关系
  

[iyunv@master-node-01 ~]# cd /etc/salt/pki/master/  
[iyunv@master-node-01 master]# tree
  
.
  
├── master.pem
  
├── master.pub
  
├── minions
  
├── minions_autosign
  
├── minions_denied
  
├── minions_pre
  
│   ├── master-node-01
  
│   └── minion-node-01
  
└── minions_rejected
  

  

  master上操作
  master需要管理那些minion,这时候就需要认证授权,
  1.查看认证信息状态:salt-key
  

[iyunv@master-node-01 master]# salt-key  
Accepted Keys:   #同意的key
  
Denied Keys:
  
Unaccepted Keys:  #未同意的key
  
master-node-01
  
minion-node-01
  
Rejected Keys:   #拒绝的key
  

  

  2.同意认证
  命令有如下:
  

salt-key -A   #同意所有  
salt-key -a   key名(支持通配符)   #同意指定的主机
  
salt-key -a master-*    #同意管理master-开头的认证主机
  

  

  

[iyunv@master-node-01 master]# salt-key -a master-*  
The following keys are going to be accepted:
  
Unaccepted Keys:
  
master-node-01
  
Proceed? [n/Y] y
  
Key for minion master-node-01 accepted.
  

  

  3.查看所管理的主机
  命令:
  

salt-key -L  

  

DSC0001.png

  4.在利用tree查看关系
DSC0002.png

  minion也接收的master上的公钥
  5.更多命令,查看详细的帮组信息
  salt-key --help

master和minion认证过程
  (1)、minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和 minion.pub(public key),然后将 minion.pub发送给master。

  (2)、master在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion>
Master与Minion的连接
  SaltStack master启动后默认监听4505和4506两个端口。4505(publish_port)为saltstack的消息发布系统,4506(ret_port)为saltstack客户端与服务端通信的端口。如果使用lsof 查看4505端口,会发现所有的minion在4505端口持续保持在ESTABLISHED状态。

远程执行
  远程管理主机
  salt  'key名(支持通配符)'  test.ping
  salt命令   引号中间是主机名   test是saltstack的一个模块   ping是test模块下的一个方法
DSC0003.png

  * 表时在所有已管理的minion上执行
  salt '*'  cmd.run  '参数(具体的shell命令)'
DSC0004.png


配置管理

1.简单master配置文件修改
  修改master配置文件,修改内容如下,以及具体修改的行数
  #号是注释,无实际意义
  

vim /etc/salt/master  

  
535  file_roots:   #saltstack状态文件
  
536    base:    #指定一个坏境支持多种坏境(列开发,测试),base前面2个空格,默认必须要有一个base环境
  
537      - /srv/salt/  # -前面4个空格  ,状态文件存放的目录,注意本地是否有这个目录,没有则新建
  

  

  重启master生效
  本地新建目录/srv/salt/

2.配置安装httpd模板文件
DSC0005.png

  在/srv/salt/目录下,新编辑apache.sls  内容如下
  

apache install:  #安装名称  
pkg.installed:  #前面两个空格,pkg是个模块,installed是个方法
  
- names:    #前面4个空格
  
- httpd     #前面6个空格,安装的软件包,会用yum安装
  
- httpd-devel  #开发工具包
  
apache-server:
  
service.running:  #前面两个空格   service是个模块,running也是个方法
  
- name: httpd    # 安装软件包的名称  前面4个空格
  
- enable: True   #前面4个空格   开机自启

  
->  

  


往所有主机上安装apache
  

salt '*'  state.sls apache  

  

  #在所有机器上执行apache这个文件的,apache后面不用写.sls 默认会给加上 这个状态文件所做的功能在所有机器上安装httpd和httpd-devel 以及开机自启
  过程中可以查看是不是用在用yum装apache,       ps aux | grep yum
  执行结果如下图:
DSC0006.png


状态管理
  一个机器肯定有多个状态,用高级状态,会有一个入口文件,来监控哪些机器有哪些状态,默认入口文件名叫top.sls,必须放在base环境 DSC0007.png
  内容如下:
  

base:  #在base环境下  
'*':  #有所有minion机器上,可以写执行的minion的已认证的名字 ,支持通配符,前面连个空格
  
- apache#所有的minion都执行apache这个文件的状态 ,前面四个空格,可以执定那些机器执行相应状态文件
  

  

  执行高级状态
  

salt '*' state.highstate  

  

  效果如下:
DSC0008.png

  什么东西放在base环境?
  所有机器都要执行的状态,应该放在base环境,例如 所有机器都要调整内核参数  等等

运维网声明 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-431234-1-1.html 上篇帖子: SaltStack Char02 组件 下篇帖子: saltstack实现自动化扩容
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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