zoukankan      html  css  js  c++  java
  • 2.saltstack笔记之目标,模块,返回写入数据库

    作者:刘耀
    QQ:22102107

    一、目标(targeting Minions)

    1.匹配Minions Id

    匹配所有 (*)

    [root@node1 salt]# salt '*' test.ping
    node2.minion:
    True
    

    匹配后面是.minion的

    [root@node1 salt]# salt '*.minion' test.ping
    node2.minion:
    True
    

    匹配一个(?)

    [root@node1 salt]# salt '*node?.minion' test.ping
    node2.minion:
    True
    

    匹配多个[1-5]

    [root@node1 salt]# salt 'node[1-5].minion' test.ping
    node2.minion:
    True
    

    匹配某个主机和某个

    [root@node1 salt]# salt 'node[2,3].minion' test.ping
    node2.minion:
    True
    

    匹配a-z

    [root@node1 salt]# salt 'node2.minio[n-z]' test.ping
    node2.minion:
    True
    

    2.正则匹配:

    -E

    #匹配node2或者node3后面是.minion的主机
    [root@node1 salt]# salt -E '(node2|node3).minion' test.ping
    node2.minion:
    	True
    
    可以在sls的配置文件里使用
    修改
     vim /etc/salt/states/top.sls
    base:
      #匹配node2或者node3后面是.minion的主机
      '(node2|node3).minion':
          #使用正则
        - match: pcre
        - init.pkg             
    

    -L

    #匹配多个主机,逗号分隔
    [root@node1 states]# salt -L 'node2.minion,node3,minion' test.ping
    node2.minion:
    	True
    

    -S ip地址匹配

    salt -S '0.0.0.0/24' test.ping
    

    二、模块

    1.hosts模块

    #获取IP地址
    [root@node1 states]# salt '*' hosts.get_ip node2
    node2.minion:
    127.0.0.1
    

    2.service模块

    获取minion主机所有服务
    
    
    [root@node1 states]# salt '*' service.get_all
    node2.minion:
        - abrt-ccpp
        - abrt-oops
        - abrtd
        - acpid
        - atd
        - auditd
        - blk-availability
        - control-alt-delete
        - crond
        - cups
        - elasticsearch
        - exim
        - halt
        - htcacheclean
        - httpd
        - init-system-dbus
        - ip6tables
        - ipmi
        - iptables
        - irqbalance
        - kexec-disable
        - killall
        - logstash
        - lvm2-lvmetad
        - lvm2-monitor
        - messagebus
        - netconsole
        - netfs
        - network
        - ntpd
        - ntpdate
        - php-fpm
        - plymouth-shutdown
        - portreserve
        - pptpd
        - prefdm
        - psacct
        - quit-plymouth
        - quota_nld
        - rc
        - rcS
        - rcS-emergency
        - rcS-sulogin
        - rdisc
        - readahead
        - readahead-collector
        - readahead-disable-services
        - restorecond
        - rsyslog
        - salt-minion
        - sandbox
        - saslauthd
        - serial
        - shellinaboxd
        - single
        - smartd
        - snmpd
        - snmptrapd
        - splash-manager
        - sshd
        - start-ttys
        - svnserve
        - sysstat
        - tty
        - ttyS0
        - udev-post
        - zabbix-agent
        - zabbix-agentd
        - zabbix_agentd
        - zabbix_server
    
    
    查看服务运行状态
    
    [root@node1 states]# salt '*' service.status sshd
    node2.minion:
    True
    
    重启某个服务
    
    [root@node1 states]# salt '*' service.reload sshd
    node2.minion:
    True
    

    3.salt-cp

    root@node1 minions]# salt-cp '*' /etc/passwd /tmp/passwd
    {'node2.minion': {'/tmp/passwd': True}}
    [root@node1 minions]# 
    

    返回写入数据库

    returners.mysql

    默认情况下,发送给salt minion的命令执行结果将返回给salt master.
    Saltstack Returner的接口允许将结果发送给任意系统

    1.master端安装mysql

    第一种:
    
    源码包安装步骤省略
    
    第二种:
    
    yum install mysql-server -y
    
    启动mysql服务
    

    2.minion端部署MySQL-python

    yum install MySQL-python
    
    原理是minion把数据直接推到master的数据库中
    

    3.在master端创建数据库

    进入数据库
    
    1.创建库名
    
    CREATE DATABASE  `salt`
      DEFAULT CHARACTER SET utf8
      DEFAULT COLLATE utf8_general_ci;
    
    2.创建jid表
    
    USE `salt`;
    
    
    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;
    
    
    3.创建return表 存放返回的数据
    
    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;
    
    
    4.创建事件表
    
    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;
    	
    5.授权访问
    
    grant all on salt.* to salt@'%' identified by 'salt';
    
    注:%不包括localhosts
    

    4.在master里修改配置文件

    # vi /etc/salt/master
    在配置文件后面追加以下内容
    	
    mysql.host: '115.29.51.8'
    mysql.user: 'salt'
    mysql.pass: 'salt'
    mysql.db: 'salt'
    mysql.port: 3306
    

    5.在minion里修改配置文件

    # vi /etc/salt/minion
    在配置文件后面追加以下内容
    
    mysql.host: '115.29.51.8'
    mysql.user: 'salt'
    mysql.pass: 'salt'
    mysql.db: 'salt'
    mysql.port: 3306
    

    6.master和minion端都重启服务

    master端:
    
    # service salt-master restart
    
    minion端:
    
    # /etc/init.d/salt-minion restart
    

    7.测试

    #salt '*' test.ping --return mysql
    node2.minion:
        True
    
    # salt '*' cmd.run 'df -TH' --return=mysql
    node2.minion:
    	Filesystem     Type  Size  Used Avail Use% Mounted on
    	/dev/vda1      ext3  8.5G  4.3G  3.8G  54% /
    

    在数据库里查看

    方法2:

    如果每次执行不加--return=mysql
    由master端将返回的数据写入数据库
    

    1.修改master配置文件

    # vi /etc/salt/master
    在配置文件后面追加以下内容
    
    master_job_cache: mysql
    

    2.重启master

    # service salt-master restart
    

    3.测试

    过程略
  • 相关阅读:
    VMware ESXi 和 VMware Server 有区别
    安装源与清除缓存
    pip install --upgrade pip
    Linux/Centos查看进程占用内存大小的几种方法总结
    top命令经常用来监控linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令。 按 q 退出
    Centos 查看 CPU 核数 和 型号 和 主频
    Docker 运行ELK日志监测系统,汉化Kibana界面
    elasticsearch启动时遇到的错误
    kubernetes 创建超级管理员和密匙
    第七章 AOP(待续)
  • 原文地址:https://www.cnblogs.com/liu-yao/p/5644916.html
Copyright © 2011-2022 走看看