天天看点

2.1 salt 模块

用途

Saltstack目前最主要的三大主要功能

·  远程执行

·  配置管理

·  云管理

实际

通过Saltstack批量执行系统命令,包括系统重启,查看系统负载,添加/删除用户等等

salt

Saltstack的三种运行方式

·  Local

·  Master/Minion

·  Salt SSH

Saltstack最传统的运行方式还是C/S模式,需要在被管理节点上安装Minion客户端;其实Saltstack也支持SSH方式,无需安装Agent,通过SSH实现管理

复习上次的东西

1.想查看saltstack具体进程,可以安装一个python-setproctitle库

2.salt-key -a saltstack-node1.lichengbing.com # -a认证参数

3.远程执行

salt '*' cmd.run 'w'

远程命令执行(cmd模块),格式:salt  'client配置的id' 模块.方法  '命令参数'           (其中'*'表示所有的client)

4.分组

nodegroups:

     mysql: 'cm1'

5.salt key相关命令总结

salt-key list   查看已经认证或未认证的客户端id,Accepted Keys为已认证清单,Unaccepted Keys为未认证的清单,Rejected Keys为拒绝的清单。

salt-key -a id  认证单个主机id证书请求。

salt-key -A     认证所有主机id证书请求。

salt-key -d id  删除单个主机id证书。

salt-key -D     删除所有认证主机id证书。

6.远程批量传输文件(salt-cp命令)

salt-cp '*' /mnt/aa /opt/

7.操作目标

-E:--pcre      通过正则表达式进行匹配

salt -E '^minion-192-168*' test.ping

-L:--list        以主机id名列表的形式进行过滤,格式与Python的列表相似,即不同主机id名称使用逗号分隔

salt -L 'minion-192-168-1-102,minion-192-168-1-118' grains.item osfullname

-G:--grain     根据被控主机的grains信息(grains是saltstack重要组件之一,重要作用是收集被控主机的基本系统信息)进行匹配过滤,格式为'<grain value>:<glob expression>'

salt -G 'osrelease:6.8' cmd.run 'python -V'

-I:--pillar       根据被控主机的pillar(作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用)信息进行过滤匹配,格式为'对象名称:对象值',比如过滤所有具备'apache:httpd' pillar值的主机。

salt -I 'nginx:root:/data' test.ping

-N:--nodegroup       根据主控端master配置文件中的分组名称进行过滤。

  web1group: 'L@minion-192-168-1-102,minion-192-168-1-118'          //前面空两格,冒号后面空一格

  web2group: 'L@minion-192-168-1-102'

其中:

L@    表示后面的主机id格式为列表,即主机id以逗号隔开;

G@   表示以grain格式描述;

S@   表示以ip子网或地址格式描述

f)-C:--compound        根据条件运算符not、and、or去匹配不同规则的主机信息

salt -C 'E@^minion-192-168* and G@os:Centos' test.ping

g)-S:--ipcidr        根据被控主机的ip地址或ip子网进行匹配

salt -S 192.168.0.0/16 test.ping

Saltstack常用模块及API

https://docs.saltstack.com/en/latest/ref/modules/all/index.html

salt '*' sys.list_modules

import salt.client  

client = salt.client.LocalClient()

ret = client.cmd('*','test.ping')

print ret

a)Archive模块

salt '*' archive.gunzip /tmp/wangshibo.gz

解压默认放到被控制机的当前用户家目录(即/root)路径下

salt '*' archive.tar zxf /mnt/nginx-1.9.7.tar.gz

将被控制机的/mnt/huihui打包到/opt下的huihui.tar.bz2

[root@linux-node1 ~]# salt '*' archive.tar jcf /opt/test.huihui.bz2 /mnt/huihui

自动化运维Saltstack系列(二)之远程执行和常用模块

saltstack自带模块参考:https://www.unixhot.com/docs/saltstack/contents.html

sys.doc = man

salt 'saltstack-node1*' sys.list_functions cmd

salt 'saltstack-node1*' sys.doc cmd.run

将master file_roots下的目录拷贝到minion

salt 'saltstack-node1*' cp.get_dir salt://base/ minion/dest

salt 'saltstack-node2*' cp.get_url http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm /tmp/1

salt '*' cron.raw_cron root

salt '*' cron.set_job root '*' '*' '*' '*' 1 /usr/local/weekly

salt '*' cron.rm_job root '*' '*' '*' '*' 1 /usr/local/weekly

salt '*' file.chown /etc/passwd root root

salt '*' file.directory_exists /etc

salt '*' file.stats /etc/passwd

salt '*' file.get_mode /etc/passwd

salt '*' file.mkdir /opt/test

salt '*' file.remove /opt/test

salt '*' file.touch /tmp/test.txt

salt '*' file.append /tmp/test.txt "10000"

salt '*' file.sed /tmp/test.txt "10000" "1"

salt '*' file.get_sum /etc/passwd md5

有文件,文件夹,定时任务,拷贝,网络,pkg模块,service模块

还有以下

user(系统用户模块)

group(系统组模块)

partition(系统分区模块)

puppet(puppet管理模块)

system(系统重启、关机模块)

timezone(时区管理模块)

nginx(Nginx管理模块)

iptables(被控主机iptables支持模块)

mount(文件系统挂载模块) 等等...

自定义模块

vim /etc/salt/master

file_roots:

  base:

    - /srv/salt/base

mkdir /srv/salt/base/_modules

vim my_disk.py

def list():

  cmd = 'df -h'

  ret = __salt__['cmd.run'](cmd)

  return ret

salt '*' saltutil.sync_modules 

salt '*' my_disk.list

本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1914622,如需转载请自行联系原作者