0755mx 发表于 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

  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命令查看关系
  

# cd /etc/salt/pki/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
  

# 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-开头的认证主机
  

  

  

# salt-key -a master-*  
The following keys are going to be accepted:
  
Unaccepted Keys:
  
master-node-01
  
Proceed? y
  
Key for minion master-node-01 accepted.
  

  

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

salt-key -L  

  


  4.在利用tree查看关系

  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模块下的一个方法

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


配置管理

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

vim /etc/salt/master  

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

  

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

2.配置安装httpd模板文件

  在/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
  执行结果如下图:


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

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

  

  执行高级状态
  

salt '*' state.highstate  

  

  效果如下:

  什么东西放在base环境?
  所有机器都要执行的状态,应该放在base环境,例如 所有机器都要调整内核参数等等
页: [1]
查看完整版本: 车到山前没有路,扔了骑车去跑步