• 03 深入远程执行:target目标、模块modules、返回returns


    0、学习目的

    http://docs.saltstack.cn/topics/execution/index.html  官方文档

    0.1 命令解释

     

    [root@host-192-168-23-39 ~]# salt '*' cmd.run 'w'
    salt 命令
    * 指定目标
    cmd 模块
    run 模块的方法
    w 模块的参数

    0.2 学习目的

    1、目标Target

    Targets也可以使用正则表达式:
    salt -E 'virtmach[0-9]' test.ping
    
    Targets也可以指定列表:
    salt -L 'foo,bar,baz,quo' test.ping

     

     

     # Ip地址

     

    或者在一个命令中混合使用多target类型:

    2、模块Module

    http://docs.saltstack.cn/ref/modules/all/index.html#all-salt-modules

    2.1 network模块

    # 活动的tcp

    # 查看arp

    # 查看网卡接口

    # 测试连接性

    salt '*' network.connect archlinux.org 80
    salt '*' network.connect baidu.com 80

    2.2 service

    salt '*' service.get_all
    salt '*' service.get_all |grep sshd

     # 服务开启着

     

    # 获取所有服务

    # 服务是否关闭

    # 重新加载,重启,状态

    # 停止服务

    2.3 state模块

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

    2.4 file模块

    批量文件分发

    # cp文件目录
    [root@linux-node1 salt]# salt-cp '*' /etc/passwd /tmp/hehe
    {'linux-node1.example.com': {'/tmp/hehe': True},
     'linux-node2.example.com': {'/tmp/hehe': True}}
    
    # ls
    [root@linux-node1 salt]# salt * cmd.run 'ls /tmp/hehe'
    linux-node1.example.com:
        /tmp/hehe
    linux-node2.example.com:
        /tmp/hehe

    2.5 模块用户访问控制

    http://docs.saltstack.cn/topics/eauth/access_control.html

    1. 要求:redhat用户只能用这两个模块

    2.[root@master ~]# vim /etc/salt/master

    重启master服务

    3.PERMISSION授权

    [root@master ~]# chmod 775 /var/cache/salt /var/cache/salt/master /var/cache/salt/master/jobs /var/run/salt /var/run/salt/master

    4. 创建redhat用户,切换用户,执行命令

    [root@linux-node1 ~]# useradd redhat
    [root@linux-node1 ~]# passwd redhat

     

    5. 只在某个机器执行

        

    6.问题:

    错误,表明用户没有写log权限,

     

    解决方式:

    test用户加到root用户组,

    并对root用户组赋予/var/log/salt/master 文件的写权限

    3、返回returners

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

    https://docs.saltstack.com/en/latest/ref/returners/all/salt.returners.mysql.html

    返回到Mysql

    返回时minion返回的,返回命令,直接写入MySQL

    1.minion端配置

    (1)每个Minion都需要装MySQL

    [root@linux-node1 ~]# salt * cmd.run 'yum install -y MySQL-python'
    
    Pkg模块
    [root@linux-node1 ~]# salt * pkg.install MySql-python

     (2)master端安装数据库,创建表结构

    [root@linux-node1 ~]# yum install mariadb-server
    [root@linux-node1 ~]# systemctl restart mariadb
    [root@linux-node1 ~]# mysql

    创建表结构

    CREATE DATABASE  `salt`
      DEFAULT CHARACTER SET utf8
      DEFAULT COLLATE utf8_general_ci;
    
    USE `salt`;
    
    --
    -- 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;
    View Code

     查看表

     

    授权

    MariaDB [salt]> grant all on salt.* to salt@'%' identified by 'salt';
    Query OK, 0 rows affected (0.00 sec)

    (3)minion端,修改配置文件

    [root@linux-node2 ~]# vim /etc/salt/minion

    mysql.host: '192.168.194.131'
    mysql.user: 'salt'
    mysql.pass: 'salt'
    mysql.db: 'salt'
    mysql.port: 3306
    View Code

    重启

    [root@linux-node1 ~]# systemctl restart salt-minion

     (4)执行命令查看

    [root@linux-node1 ~]# salt '*' cmd.run 'df -h' --return mysql

    mysql查看

    MariaDB [salt]> show tables;
    MariaDB [salt]> select * from salt_returns;
    MariaDB [salt]> select * from salt_returnsG;

     

    2. job cache机制

    (1)Master配置文件

    [root@linux-node1 ~]# vim /etc/salt/master

    保持24小时

    (2) 重启

    [root@linux-node1 ~]# systemctl restart salt-master

     (3)执行命令,查看

    [root@linux-node1 ~]# salt '*' test.ping

    [root@linux-node1 ~]# salt '*' cmd.run 'uptime' -v

    MariaDB [salt]> select * from salt_returnsG;

     

  • 相关阅读:
    第23条:通过委托与数据源协议进行对象间通信
    第22条:理解NSCopying协议
    第21条:理解Objective-C错误模型
    第20条:为私有方法名加前缀
    《隐藏键盘》《隐藏PickerView控键》如果是xib中 点击空白处隐藏键盘
    《弹出提示》UIAlertView 弹出提示
    MAC 问题。
    小技巧
    控制器的生命周期
    问题。控制器跳转
  • 原文地址:https://www.cnblogs.com/venicid/p/11266817.html
Copyright © 2020-2023  润新知