SaltStack三大功能:

1. 远程执行

2. 配置管理  (状态)

3.云管理

运维三板斧:监控、执行、配置

四种运行方式:

1.Local

2. Minion/Master   C/S架构

3. Syndic    - zabbix proxy

4. Salt SSH

安装saltStack repository和Key

rpm --import https://repo.saltproject.io/py3/redhat/8/x86_64/3004/SALTSTACK-GPG-KEY.pub
curl -fsSL https://repo.saltproject.io/py3/redhat/8/x86_64/3004.repo | sudo tee /etc/yum.repos.d/salt.repo

运行命令
yum clean expire-cache

安装salt-minion, salt-master,或者其他的salt组件。
  • sudo yum install salt-master
  • sudo yum install salt-minion
  • sudo yum install salt-ssh
  • sudo yum install salt-syndic
  • sudo yum install salt-cloud
  • sudo yum install salt-api

配置:

minion:

/etc/salt/minion中重要的两个配置:master, id,例如

id: hadoop-rm-cnsz17pl1791 master: - cnsz17pl2429 - cnsz17pl2552 - cnsz17pl2551 - cnsz17pl2550 - cnsz17pl2549

启动:systemctl start salt-minion
pki目录是minion第一次启动时创建的
[root@CNSZ17PL1791 salt]# tree pki
pki
├── minion
│   ├── minion_master.pub
│   ├── minion.pem
│   └── minion.pub
└── minion_bak
├── minion_master.pub
├── minion.pem
└── minion.pub

master:
tree pki
pki
├── master
│   ├── master.pem
│   ├── master.pub
│   ├── minions
│   │   ├── 1a02vla3341mast
│   │   ├── 1a02vla3342mast
│   │   ├── zk-plat-1a02vlb4135dsvc
│   │   └── zk-plat-1a02vlb4136dsvc
│   ├── minions_autosign
│   ├── minions_denied
│   ├── minions_pre //未认证的minion放在此目录
│   └── minions_rejected
└── minion
├── minion_master.pub
├── minion.pem
└── minion.pub
认证:
salt-key
Denied Keys:
Unaccepted Keys:
xxxx
yyyy
Rejected Keys:

认证key:
salt-key -a xxx(也可以使用通配符)
salt-key -A (同意所有)

经典案例:
1. 远程执行:
salt '*' test.ping #'*'代表所有主机 ,* 在shell里面也有含义,所以要用''/""引起来,test是模块,ping是模块的一个方法
salt 'linux-node1*' test.ping
salt 'linux-node-old.com' test.ping
salt 'xxx' cmd.run "w"
salt 'xxx' cmd.run 'mkdir /tmp/hehe'
salt 'xxx' cmd.run 'systemctl restart zabbix-agent'

2. 配置管理:
使用State状态模块来识别状态,需要写一个文件描述服务的状态,格式:YAML, 后缀.sls
YAML(Yet Another Markupo Language)
YAML三板斧:
1. 缩进:2个空格,不能使用Tab键
2. 冒号:表示键值对时,后面要有一个空格,key:value
3. 短横线:表示列表,后面要有一个空格
[root@cnsz17pl2551 web]# cat apache.sls
apache-install:
pkg.installed:
- names:
- httpd
- httpd-devel apache-service:
service.running:
- name: httpd
- enable: True
[root@cnsz17pl2551 web]# cat apache.sls
apache-install:
pkg.installed:
- names:
- httpd
- httpd-devel apache-service:
service.running:
- name: httpd
- enable: True

salt '*' state.sls web.apache

master执行状态的时候,状态文件放在/var/cache/salt/minon/files/base/web/apache.sls下
state_top: top.sls

saltStack数据系统:
Grains: 静态数据,当Minion启动时候收集的Minion本地的相关信息(操作系统版本,内核版本,CPU,内存,硬盘,设备型号,序列号),只收集一次,不重启不会再收集。
      1. 资产管理,信息查询。 salt "目标地址" grains.items
      2. 用于目标选择。     salt -G 'os:CentOs' cmd.run 'echo.hehe'
      3. 配管理中使用。
在base设置的目录下,创建 _grains目录,放置用python写的grains文件
vim my_grains.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def my_grains():
#初始化一个grains字典
  grains = []
  #设置字典中的key-value
  grains['iaas'] = 'openstack'
  grains['edu'] = 'oldboyedu'
  #返回这个字典
  return grains

grains是minoin收集的,在master写的收集grains的脚本需要下发到minoin,
salt '*' saltutil.sync_grains
同步之后放在minoins的/var/cache/salt/minion/extmods/grains

Grains优先级:
1. 系统自带
2. grains文件写的
3. minion配置文件写的
4. 自己写的

Pillar: 配置管理。Pillar是动态的,给特定的minion指定特定的数据。只有指定的Minion自己能看到自己的数据。top file
可以用在定义用户密码等。
salt '*' pillar.items
pillar_roots:
base:
- /srv/pillar/
master配置文件里
{% if grains['os'] == 'CentOS' %}
apache: httpd
{%elif grains['os'] == 'Debian' %}
apache: apache2
{% endif %}

1. 写pillar sls
2. 写top file
top.sls
base:
'linux-node2.oldboyedu.com':
- web.apache
salt '*' saltutil.refresh.pillar
salt '*' pillar.items apache

hehe:
{% if grains['os'] == 'CentOS' %}
apache: httpd
{%elif grains['os'] == 'Debian' %}
apache: apache2
{% endif %}
pillar使用场景:
1. 目标选择: salt -I 'appache:httpd' test.ping

Grains VS Pillar
       类型        数据采集方式           应用场景              定义位置
Grains 静态       minion启动时收集     数据查询/目标选择/配置管理         minion
Pillar   动态        master自定义      目标选择/配置管理/敏感数据         master

深入学习saltstack远程执行:
salt '*' cmd.run 'w'
命令:salt
目标:'*'
模块:cmd.run ,salt自带150+模块。可以自己写模块
返回:执行后结果的返回,Returners

目标:Targe:
  两种 :一种和Minion ID有关:1)通配符 2)列表 3) 正则表达式 4) 所有匹配目标的方式 ,都可以用到top file里面来指定目标
通配符:salt 'linux-node?.oldboyd' test.ping , salt 'inux-node[1-2].oldboyedu.com' test.ping , salt 'linux-node[!2].oldboyedu.com' test.ping
        列表 :salt -L 'linux-node1oldboyedu.com,linux-node2.oldboyedu.com' test.ping
       正则表达式:salt -E 'linux-(node1|node2)*' test.ping
       一种和Minion ID无关:子网和IP地址,nodegroups,混合匹配,批处理
       salt -S 192.168.56.11 test.ping
       salt -S 192.168.56.0/24 test.ping
nodegroups:在master配置文件里配置
        nodegroups:
         web: 'L@Linux-node1.oldboyedu.com,linux-node2.oldboyedu.com'
systemctl restart salt-master
       salt -N web test.ping
       批处理: salt '*' -b 10 test.ping ; salt -G 'os:CentOS' --batch-size 25% apache.signal restart

主机名设置文案:
1. IP地址
2. 根据业务来进行设置

模块:
https://www.unixhot.com/docs/saltstack/topics/execution/remote_execution.html

返回程序:(minoin直接返回,不用返回给master)
salt '*' test.ping --return mysql #需要在minion上配置mysql信息,用户名密码等

如何编写一个状态模块:
1. 放在哪里,base路径的下面创建一个_modules
2. 命名,文件名就是模块名,例如
vim my_disk.py
def list():
  cmd = 'df -h'
  ret = __salt__['cmd.run](cmd)
  return ret
3. 刷新
salt '*' saltutil.sync modules
salt '*' my_disk.list

最新文章

  1. windows配置php开发环境
  2. docker 会这些也够
  3. asp接收jquery post 中文乱码问题!
  4. 使用 CUDA 进行计算优化的两种思路
  5. 初试体验java多线程
  6. 安卓 开发 The connection to adb is down, and a severe error has occured.
  7. Javascript操作表格隔行变色
  8. [改善Java代码]优先使用整型池
  9. redis基础知识
  10. 使用XStream是实现XML与Java对象的转换(6)--持久化
  11. '假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入:PROG ABCDEFGH IJKL<回车>,则输出结果为( ). void main( int argc, char *argv[]) { while(--argc>0) cout<<argv[argc]; cout<<"\n"; }
  12. 引擎设计跟踪(九.14.3.1) deferred shading: Depthstencil as GBuffer depth
  13. java设置字符串编码、转码
  14. Binary Space Partitioning
  15. Codeforces Round #440 (Div. 2) A,B,C
  16. sap component 中各个组件的关系
  17. php $_FILES上传失败 error返回值说明
  18. Java语法基础(四)----循环结构语句
  19. distill 来自google,openai,deepmind,YC research
  20. .net正在终止线程异常

热门文章

  1. svn 中如何checkout出单个文件
  2. 基于Sobel算子的图像边缘检测
  3. Java高级助教工作总结
  4. 第14周 预习、实验与作业:Java数据库编程
  5. 看K线学炒股(8.9)
  6. Ubuntu网络重置
  7. 工程师突击:SAP ABAP实用程序开发攻略.pdf
  8. Unity Shader-反射效果(CubeMap,Reflection Probe,Planar Reflection,Screen Space Reflection)
  9. dendrogram
  10. PHP 中的类-什么叫类