saltstack远程执行
一、saltstack远程执行
一、saltstack远程执行:目标-targeting
详解见:https://www.cnblogs.com/phennry/p/5416408.html
1、查看认证主机情况
2、具体匹配
Globing : '*', 正则: 指定-E参数,正则表达式匹配多个 List: 指定-L参数,salt -E 'web1-(prod|devel)' test.ping Grains: 指定-G参数,salt -G 'os:CentOS' test.ping pillar: 指定-I参数,salt -I 'apache:httpd' pkg.install httpd node groups: 指定-N参数,salt -N 'web-cluster' test.ping base: web-cluster: - match:nodegroup - webserver 混搭(compound) batch size
3、主机名命名规范
redis-node01-redis03-idc04-soa.example.com
- redis-node1:运行的服务是Redis,这个是第一个节点
- redis03:说明这个Redis是redis集群编号03里面的节点
- idc04:这台服务器运行在编号04的IDC机房中
- soa:这个服务器是给SOA服务使用的
- example.com这台服务器是example.com业务
4、targeting
1、与minion ID有关,需要使用minion ID
- globbing(通配符)
- regex(正则表达式)
- list(列表)
2、和minion ID无关,不涉及到minion ID
- 子网/IP地址
- grains
- pillar
- compound matchers(复合匹配)
- Node groups(节点组)
- Batching execution(批处理执行)
二、saltstack远程执行:常用模块module
官网模块链接地址:state modules
1、network模块
salt.modules.network
2、service模块
salt.modules.service
根据不同的系统执行不同的操作
https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.rh_service.html#module-salt.modules.rh_service解释
salt '*' service.get_all #列出系统中所有的服务
3、state模块
salt.modules.state
4、cp模块
salt.modules.cp
使用salt-cp命令执行也可
# salt-cp '*' /etc/passwd /tmp/passwd_bak ops-k8s-master01.local.com: ---------- /tmp/passwd_bak: True ops-k8s-master02.local.com: ---------- /tmp/passwd_bak: True ops-k8s-master03.local.com: ---------- /tmp/passwd_bak: True
5、cmd模块
salt.states.cmd
6、cron模块
salt.states.cron
7、pkg模块(安装完就没有返回值了)
salt.states.pkg
三、saltstack远程执行returners(minion返回,更改minion配置)
返回到哪,需要安装相关的依赖包(返回支持写入目的地,详见上面文档)
1、返回内容可以写入的位置
详情见官方文档:Returners
1 salt.returners.carbon_return 2 salt.returners.cassandra_cql_return 3 salt.returners.cassandra_return 4 salt.returners.couchbase_return 5 salt.returners.couchdb_return 6 salt.returners.django_return 7 salt.returners.elasticsearch_return 8 salt.returners.etcd_return 9 salt.returners.highstate_return module 10 salt.returners.hipchat_return 11 salt.returners.influxdb_return 12 salt.returners.kafka_return 13 salt.returners.librato_return 14 salt.returners.local 15 salt.returners.local_cache 16 salt.returners.mattermost_returner module 17 salt.returners.memcache_return 18 salt.returners.mongo_future_return 19 salt.returners.mongo_return 20 salt.returners.multi_returner 21 salt.returners.mysql 22 salt.returners.nagios_return 23 salt.returners.odbc 24 salt.returners.pgjsonb 25 salt.returners.postgres 26 salt.returners.postgres_local_cache 27 salt.returners.pushover_returner 28 salt.returners.rawfile_json 29 salt.returners.redis_return 30 salt.returners.sentry_return 31 salt.returners.slack_returner 32 salt.returners.sms_return 33 salt.returners.smtp_return 34 salt.returners.splunk module 35 salt.returners.sqlite3 36 salt.returners.syslog_return 37 salt.returners.telegram_return 38 salt.returners.xmpp_return 39 salt.returners.zabbix_return module
2、返回写入MySQL
salt.returners.mysql
1、每个minion安装MySQL-python
salt '*' cmd.run 'yum install -y MySQL-python' 或使用 salt '*' pkg.install 'MySQL-python'
2、在某台机器安装mariadb
yum install mariadb-server -y systemctl start mariadb systemctl enable mariadb
创建数据库和表键上面的文档(下面是授权)
grant all on salt.* to salt@'10.0.0.%' identified by 'salt';
3、更改minion配置,将返回写入MySQL数据库
vim /etc/salt/minion (或者使用追加到这个文件中)
mysql.host: '10.0.0.10' mysql.user: 'salt' mysql.pass: 'salt' mysql.db: 'salt' mysql.port: 3306
重启服务
systemctl restart salt-minion
测试 (-v会将jid输出,通过“salt-run jobs.lookup_jid id号” 可以调出job) cache默认是一天
#测试 salt '*' test.ping --return mysql -v #查看MySQL里面的数据 MariaDB [salt]> select * from salt_returns\G *************************** 1. row *************************** fun: test.ping jid: 20181122200842736499 return: true id: ops-k8s-master02.local.com success: 1 full_ret: {"fun_args": [], "jid": "20181122200842736499", "return": true, "retcode": 0, "success": true, "fun": "test.ping", "id": "ops-k8s-master02.local.com"} alter_time: 2018-11-22 20:08:42
4、更改master配置(将master的所有的操作写入MySQL)
vim /etc/salt/master(或者使用追加到这个文件中)
master_job_cache: mysql mysql.host: '10.0.0.10' mysql.user: 'salt' mysql.pass: 'salt' mysql.db: 'salt' mysql.port: 3306
重启master
systemctl restart salt-master
测试
salt '*' test.ping #不要加return了
四、job管理
salt.modules.saltutil