3.saltstack远程执行(targeting、modulee、returnnres)


    Saltstack远程执行

语法例:salt '*' cmd.run 'w'

 -  命令:salt

 -  目标:'*'

 -  模块:cmd.run,自带150+模块,也可以自己写模块

 -  返回:执行后结果返回,Returnners组件


1、指定目标(targeting)

官网文档:https://docs.saltstack.com/en/latest/topics/targeting/index.html

两种定位方法:一种和minion ID有关,一种和monion ID无关

    1)minion ID有关的方法

  指定具体的minion ID

[root@salt-master ~]# salt 'salt-minion.2018.com' cmd.run 'df -hT'    #指定单台机器
[root@salt-master ~]# salt '*' cmd.run 'df -hT'                       #查看所有机器的信息

 通配符()
[root@salt-master ~]# salt '*' test.ping
[root@salt-master ~]# salt 'salt-minion*' test.ping
[root@salt-master ~]# salt 'salt-minion[1|2].2018.com' test.ping
[root@salt-master ~]# salt 'salt-minion[1-2].2018.com' test.ping
[root@salt-master ~]# salt 'salt-minion[!2].2018.com' test.ping
[root@salt-master ~]# salt 'salt-minion[1].2018.com' test.ping
[root@salt-master ~]# salt 'salt-minion?.2018.com' test.ping

  列表
[root@salt-master ~]# salt -L 'salt-minion.2018.com,salt-master.2018.com' test.ping

  正则表达式
[root@salt-master ~]# salt -E 'salt-(minion|master).2018*' test.ping

备注: 所有匹配目标的方式,都可以用到top file里面来指定目标。

minion ID设置方案:IP地址、根据业务来进行设置
例:
redis-node1-redis04-idc04-h5web.example.com
redis-node1  # redis第一个节点
redis04  # 集群
idc04  # 机房
h5web  # 业务线

    2)minion ID无关的方法

  IP地址、子网

[root@salt-master ~]# salt -S 192.168.91.133 test.ping
[root@salt-master ~]# salt -S 192.168.91.0/24 test.ping

分组,需要配置master文件
[root@salt-master ~]# vi /etc/salt/master       ##nodegroups下添加web此组
#nodegroups:
#  group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com and bl*.domain.com'
#  group2: 'G@os:Debian and foo.domain.com'
nodegroups:
  web: 'L@salt-minion.2018.com,salt-master.2018.com'

重启systemctl restart salt-master
[root@salt-master ~]# salt -N 'web' test.ping

混合匹配

官方文档 https://docs.saltstack.com/en/latest/topics/targeting/compound.html

批处理 ,可用于重启所有主机或进程场景,百分比或固定数量的一点一点重启主机或进程

官方文档 https://docs.saltstack.com/en/latest/topics/targeting/batch.html






2、执行模块

官网文档 https://docs.saltstack.com/en/latest/ref/modules/all/index.html#all-salt-modules

列出salt所有模块,以及如何使用的帮助文档

通过yum默认安装salt所有模块存放路径 /usr/lib/python2.7/site-packages/salt/modules(centos 7)

例:

[root@salt-master ~]salt '*' network.active_tcp  # 列出所有主机运行的tcp连接
[root@salt-master ~]salt '*' network.arp  # 列出所有主机arp
 
[root@salt-master ~]salt '*' service.available sshd  # 列出所有主机sshd
[root@salt-master ~]salt '*' service.get_all  # 列出所有主机的所有运行服务
[root@salt-master ~]salt '*' service.status sshd  # 列出所有主机sshd运行状态
[root@salt-master ~]salt-cp '*' /etc/hosts /tmp/test  # 将master上/etc/hosts文件拷贝到所有主机的/tmp/test
[root@salt-master ~]salt '*' state.show_top  # 查看top
[root@salt-master ~]salt '*' state.single pkg.installed name=lsof  # 所有主机安装lsof


[root@salt-master ~]# vi /etc/salt/master     #让yanyb这个用户只能执行某个模块
client_acl:
  yanyb:
    - test.ping
    - network.*
    
或者
#client_acl_blacklist:                    #黑名单,禁止那个用户执行那个模块
#  users:
#    - root
#    - '^(?!sudo_).*$'   #  all non sudo users
#  modules:
#    - cmd
[root@salt-master ~]# systemctl restart salt-maste

模块一大推,就不一一介绍。不懂可以查看官网


3、返回程序

官方文档 https://docs.saltstack.com/en/latest/ref/returners/index.html

 1)将返回写入mysql库,是由minion直接写入mysql库
注意:返回程序是minion返回的
    

[root@salt-master ~]# yum install MySQL* -y   #(master操作)

所有minion安装python mysql模块

salt '*' state.single pkg.installed name=MySQL-python

salt '*' cmd.run 'yum install MySQL-python -y'


创建salt库(master操作)
CREATE DATABASE  `salt`
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;

USE `salt`;

创建表(master操作)
Table structure for table `jids`

DROP TABLE IF EXISTS `jids`;
CREATE TABLE `jids` (
  `jid` varchar(255) NOT NULL,
  `load` mediumtext NOT NULL,
  UNIQUE KEY `jid` (`jid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE INDEX jid ON jids(jid) USING BTREE;


Table structure for table `salt_returns`

DROP TABLE IF EXISTS `salt_returns`;
CREATE TABLE `salt_returns` (
  `fun` varchar(50) NOT NULL,
  `jid` varchar(255) NOT NULL,
  `return` mediumtext NOT NULL,
  `id` varchar(255) NOT NULL,
  `success` varchar(10) NOT NULL,
  `full_ret` mediumtext NOT NULL,
  `alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  KEY `id` (`id`),
  KEY `jid` (`jid`),
  KEY `fun` (`fun`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Table structure for table `salt_events`

DROP TABLE IF EXISTS `salt_events`;
CREATE TABLE `salt_events` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`tag` varchar(255) NOT NULL,
`data` mediumtext NOT NULL,
`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`master_id` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `tag` (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

授权
grant all on salt.* to salt@'%' identified by 'salt';
FLUSH PRIVILEGES;

exit
mysql -h192.168.91.134 -usalt -psalt salt   (minion操作)
show tables;


配置minion文件

[root@salt-master ~]# vim /etc/salt/minion
mysql.host: '192.168.91.134'          #master的ip
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306

重启 systemctl restart salt-minion

   然后进入数据库 测试













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值