博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
56. Python saltstack 二次开发(1)
阅读量:6433 次
发布时间:2019-06-23

本文共 4493 字,大约阅读时间需要 14 分钟。

Saltstack简介

Salt 是:

一个配置管理系统,能够维护预定义状态的远程节点(比如,确保指定的报被安装,指定的服务在运行);

一个分布式远程执行系统,用来在远程节点(可以是单个节点,也可以是任意规则挑选出来的节点)上执行命令和查询数据;

开发其的目的是为远程执行提供最好的解决方案,并使远程执行变得更好,更快,更简单。

Saltstack(中国用户组 www.saltstack.cn )基于python开发,c/s架构,支持多平台,比puppet轻量,在远程执行命令时非常快捷,配置和使用比puppet容易,能实现puppet几乎所有的功能。

Saltstack的优势:

有master端和minion端,执行的信息比较稳定,不容易丢失信息,或者出现失联主机的情况

有封装好的http-api,我们可以直接启动salt-api就可以通过http协议进行调用。不需要自己进行第二次的封装

基于centos6和centos7的差异,在两个不同的操作系统中安装saltstack也是不一样的。

参考网址:

Centos6需要先安装扩展源,然后在进行安装:

Master端

1
2
yum 
install 
–y salt-master
yum 
install 
–y salt-api

Minion端:

1
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 id命名的 public key,然后master就能对minion发送指令了。

1
2
3
4
5
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通

配置文件详解:

Saltstack的几种模块介绍

在二次开发中开发的模块有2个,如下(Runner、Module):

Runner 模块     在master端执行的  salt-run

Module 模块    通过master同步到minion端, 在minion执行

1
2
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端

1
2
salt-call saltutil.refresh_pillar
salt ‘*’ saltutil.refresh_pillar

1. cmd模块

1
salt  ‘*’ cmd.run “
df 
-h”

2. ping模块

1
salt ‘*’ 
test
.
ping 
-t 5     
#-t 超时时间,秒

3. cp 模块

1
2
3
file_roots:
base:
/export/salt/root

salt根目录:

    在master中file_roots定义的路径

    salt://test.txt 相当于 /export/salt/root/test.txt

用法:

1
salt  
'172.17.23.11'  
cp
.get_file  salt:
//nscd
.conf   
/tmp/xiang
.txt   (拷贝文件)

4. cron模块:

1
2
3
salt 
'*' 
cron
.raw_cron root     (查看定时任务)
salt 
'*' 
cron
.set_job root 
'*' 
'*' 
'*' 
'*' 
/export/scripts/rm_log
.sh (设定定时任务)
salt 
'*' 
cron
.rm_job root 
/export/scripts/rm_log
.sh   (删除定时任务,写全没效果)

5.dnsutil模块

1
2
salt 
'*' 
dnsutil.hosts_append 
/etc/hosts 
127.0.0.1 xiang.com
salt 
'*' 
dnsutil.hosts_remove 
/etc/hosts 
xiang.com

6.file模块:

1
2
3
4
5
6
7
8
9
10
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模块:

1
2
3
salt 
'*' 
network.
dig 
www.qq.com
salt 
'*' 
network.
ping 
www.qq.com
salt 
'*' 
network.ip_addrs

8.pkg包管理模块:

管理yum, apt-get等

1
2
3
salt 
'*' 
pkg.
install 
php(安装应用)
salt 
'*' 
pkg.remove php(移除应用)
salt 
'*' 
pkg.upgrade    (升级所有的软件包)

9.service模块(centos6)

1
2
3
salt 
'*' 
service.
enable 
nginx
salt 
'*' 
service.disable nginx
salt 
'*' 
service.restart nginx

Grains

自定义grians(是在minion上定义的)

记录的是客户端上的

grains是在minion启动时搜集一些信息,如操作系统类型,网卡,内核版本,cpu架构等

1
2
3
4
salt 
"*" 
grains.
ls                    
列出所有grains项目名字
salt 
"*app.*" 
grains.items          列出所有grains项目以及值
salt 
"*" 
grans.item serialnumber 查看服务器的sn码
(其他以此类推)

grains的信息并不是动态的,并不会实时变化,它只是在minion启动时收集到的

我们可以根据grains收集到的一些信息,做一些配置管理工作

在minion上:

1
2
3
vim 
/etc/salt/grains
role: nginx
env
test

重启

1
service salt-minion restart

获取grians:

1
salt 
"*" 
grains.item role 
env

或者:

1
2
salt -G 
"*" 
role:nginx cmd.run "
hostname
salt ‘*’grains.items

(虽然也挺好用,但是很少用,要用也是用pillar)

Pillar

(记录的是服务端上的信息)

pillar(在master上定义)

(yaml语法)

在配置文件中找pillar的文件路劲:创建目录

1
mkdir  
/export/salt/pillar

在目录内定义文件:

1
2
3
4
vim 
top
.sls
base:
"*"
:
test

1
2
vim 
test
.sls
conf: xiang

然后

刷新pillar:

1
salt 
'*' 
saltutil.refresh_pillar

验证:

1
salt 
'*' 
pillar.items conf

或者:

1
salt -I  
'conf:xiang' 
test
.
ping
本文转自 听丶飞鸟说 51CTO博客,原文链接:http://blog.51cto.com/286577399/2067460

转载地址:http://fjaga.baihongyu.com/

你可能感兴趣的文章
从事互联网行业,怎样才能快速掌握一门编程语言呢?
查看>>
React native 第三方组件 React native swiper
查看>>
接口幂等设计
查看>>
编程入门指南
查看>>
移动端的自适应方案—REM
查看>>
你真的懂volatile吗
查看>>
Android 编译时注解-提升
查看>>
说说 Spring AOP 中 @Aspect 的高级用法
查看>>
Workbox CLI中文版
查看>>
贝聊亿级数据库分库分表实践
查看>>
同时连接gitlab和github
查看>>
vuex源码分析
查看>>
tornado+datatables分页
查看>>
集成 Kubernetes 与 Cloud Foundry,IBM自有一套
查看>>
php 中英文字符分割
查看>>
No module named yum
查看>>
Shell处理用户输入参数----getopts
查看>>
【函数】06、装饰器的应用
查看>>
v$sysstat
查看>>
剑指offer 66通关纪念
查看>>