• saltstack


    saltstack 服务器批量管理

    1.环境准备

    # 两台服务器
    192.168.16.134  master
    192.168.16.133  minion
    

    修改2台机器的主机名,用于主机名通信,加速salt的命令执行

    hostnamectl set-hostname  master
        # 执行 su 命令 
    hostnamectl set-hostname  minion  
        # 执行 su 命令 
    

    关闭2台机器的iptables防火墙策略,防止端口拒绝

    #清空防火墙规则
    iptables -F 
    
    #关闭防火强服务
    systemctl stop firewalld 
    
    #禁止防火墙开机自启
    systemctl disable firewalld   
    

    分别安装2个软件,还是配置好阿里的yum源

    # 192.168.16.134  master
    yum install salt-master -y 
    
    # 192.168.16.133  minion
    yum install  salt-minion -y 
    

    2.配置文件

    1. /etc/hosts
    2. /etc/salt/master
    3. /etc/salt/minion
    

    master常用配置解析

    # salt运行的用户,影响到salt的执行权限
    user: root
    
    #s alt的运行线程,开的线程越多一般处理的速度越快,但一般不要超过CPU的个数
    worker_threads: 10
    
    # master的管理端口
    publish_port : 4505
    
    # master跟minion的通讯端口,用于文件服务,认证,接受返回结果等
    ret_port : 4506
    
    # 如果这个master运行的salt-syndic连接到了一个更高层级的master,那么这个参数需要配置成连接到的这个高层级master的监听端口
    syndic_master_port : 4506
    
    # 指定pid文件位置
    pidfile: /var/run/salt-master.pid
    
    
    #示例
    
    [root@master ~]# grep -v ^# /etc/salt/master|grep -v ^$
    interface: 0.0.0.0  				#绑定到本地的0.0.0.0地址
    publish_port: 4505  				#管理端口,命令发送
    user: root      				#运行salt进程的用户
    worker_threads: 5  				#salt运行线程数,线程越多处理速度越快,不要超过cpu个数
    ret_port: 4506  					#执行结果返回端口
    pidfile: /var/run/salt-master.pid 	#pid文件位置
    log_file: /var/log/salt/master  	#日志文件地址
    auto_accept: False 					#自动接收minion的key
    auto_accept: True   				#如果对Minion信任,可以配置master自动接受请求
    

    minion常用配置解析

    # minion的识别ID,可以是IP,域名,或是可以通过DNS解析的字符串
    id: minion1
     
    # salt运行的用户权限
    user: root
     
    # master的识别ID,可以是IP,域名,或是可以通过DNS解析的字符串
    master : master
     
    # master通信端口
    master_port: 4506
     
    # 备份模式,minion是本地备份,当进行文件管理时的文件备份模式
    backup_mode: minion
     
    # 执行salt-call时候的输出方式
    output: nested
     
    # minion等待master接受认证的时间
    acceptance_wait_time: 10
     
    # 失败重连次数,0表示无限次,非零会不断尝试到设置值后停止尝试
    acceptance_wait_time_max: 0
     
    # 重新认证延迟时间,可以避免因为master的key改变导致minion需要重新认证的syn风暴
    random_reauth_delay: 60
     
    # 日志文件位置
    log_file: /var/logs/salt_minion.log
    
    
    # 示例
    [root@minion ~]# grep -v ^# /etc/salt/minion|grep -v ^$
    master: master
    master_port: 4506
    user: root
    id: minion1
    acceptance_wait_time: 10
    log_file: /var/log/salt/minion
    

    配置/etc/hosts文件,用于主机名通信

    # 全部需要hosts文件
    192.168.16.133 minion
    192.168.16.134 master
    

    修改salt的master和minion的配置文件

    在master机器上修改  /etc/salt/master文件改为如下
    [root@master ~]# grep -vE "^$|#" /etc/salt/master 
    interface: 0.0.0.0
    publish_port: 4505
    user: root
    worker_threads: 5
    ret_port: 4506
    
    
    修改minion的配置如下
    [root@minion yum.repos.d]# grep -vE "^$|#"  /etc/salt/minion 
    master: master
    master_port: 4506
    user: root
    id: minion1
    

    3.启动salt-master和salt-minion

    [root@master ~]# systemctl start salt-master
    [root@minion ~]# systemctl start salt-minion
    
    # 重启服务
    systemctl restart salt-master
    systemctl restart salt-minion
    
    #检查salt状态
    systemctl status salt-minion
    systemctl status salt-master
    

    4.查看密钥

    在master上输入salt-key -L ,查看是否读取到了minion的信息
    
    [root@master ~]# salt-key L
    Accepted Keys:
    Denied Keys:
    Unaccepted Keys:
    minion1
    Rejected Keys:
    

    分别检查2台机器的密钥信息,是否一致

    在master机器上输入 salt-key -f minion1
    
    [root@master ~]# salt-key -f minion1
    Unaccepted Keys:
    minion1:  eb:b8:a1:c3:6a:29:6b:45:8a:50:16:26:2d:e9:f4:7c
    
    
    在minion机器上输入 salt-call --local key.finger
    
    [root@minion ~]# salt-call --local key.finger
    local:
    	eb:b8:a1:c3:6a:29:6b:45:8a:50:16:26:2d:e9:f4:7c
    

    接收minion1的密钥,管理秘钥

    [root@master ~]# salt-key -a minion1
    The following keys are going to be accepted:
    Unaccepted Keys:
    minion1
    Proceed? [n/Y] y
    Key for minion minion1 accepted.
    [root@master ~]# salt-key L
    Accepted Keys:
    minion1
    Denied Keys:
    Unaccepted Keys:
    Rejected Keys:
    

    对于密钥管理的命令如下

    # 只有Master接受了Minion Key后,才能进行管理
    
    salt-key  参数如下
    -L  #查看KEY状态
    -A  #允许所有
    -D  #删除所有
    -a  #认证指定的key
    -d  #删除指定的key
    -r  #注销掉指定key(该状态为未被认证)
    
    salt-key -d  密钥名  #删除密钥
    

    5. rmp命令

    #master端
    
    [root@master  ~]$rpm -ql salt-master
    /etc/salt/master      # salt master主配置文件
    /usr/bin/salt           #salt master 核心操作命令
    /usr/bin/salt-cp       #salt 文件传输命令
    /usr/bin/salt-key    #salt证书管理
    /usr/bin/salt-master    #salt master 服务命令
    /usr/bin/salt-run          #salt master runner命令
    
    
    #slave端
    
    [root@minion  ~]$rpm -ql salt-minion
    /etc/salt/minion     #minion配置文件
    /usr/bin/salt-call    #拉取命令
    /usr/bin/salt-minion   #minion服务命令
    /usr/lib/systemd/system/salt-minion.service   #minion启动脚本
    

    6.salt:核心管理命令

    # salt --help #即可查看salt帮助
    [root@master ~]$salt --help
    Usage: salt [options] '<target>' <function> [arguments]
    
    salt命令 参数 目标 salt模块的函数 远程执行的参数
    
    # 使用salt的第一个命令,测试服务器是否存活
    
    salt '*'  test.ping  #发送命令接口,ping一下被管理的机器,是否存货,返回true活着,负责挂掉了,或者salt-minion服务器宕机了
    
    "*"  目标匹配 
    test.ping  是test模块下的一个功能函数 
    

    test模块

    [root@master ~]# salt '*' sys.list_functions test
    minion1:
    	- test.arg
    	- test.arg_repr
    	- test.arg_type
    	- test.assertion
    	- test.attr_call
    	- test.collatz
    	- test.conf_test
    	- test.cross_test
    	- test.echo
    	- test.exception
    	- test.fib
    	- test.get_opts
    	- test.kwarg
    	- test.module_report
    	- test.not_loaded
    	- test.opts_pkg
    	- test.outputter
    	- test.ping
    	- test.provider
    	- test.providers
    	- test.rand_sleep
    	- test.rand_str
    	- test.retcode
    	- test.sleep
    	- test.stack
    	- test.try_
    	- test.tty
    	- test.version
    	- test.versions_information
    	- test.versions_report
    

    cmd.run命令

    # 远程安装nginx,以及启动nginx
    salt '*'  cmd.run  "systemctl status nginx"
    salt 'minion1'  cmd.run  "yum install nginx -y"
    salt '*'  cmd.run  "systemctl status nginx"
    salt '*'  cmd.run  "netstat -tunlp|grep 80"
    salt '*' cmd.run  "yum install  net-tools -y"
    salt '*'  cmd.run  "netstat -tunlp|grep 80"
    salt '*'  cmd.run  "netstat -tunlp|grep 80"
    salt '*'  cmd.run  "systemctl stop nginx"
    

    pkg命令

    #salt提供的软件安装模块,其实页是在远程调用yum命令而已
    [root@master  ~]$salt '*' pkg.install "nginx"
    
    #卸载minion上的nginx
    [root@master  ~]$salt '*' pkg.remove "nginx"
    
    #检查pkg包的版本
    [root@master  ~]$salt '*' pkg.version "nginx"
    

    service命令

    # salt提供的服务信息模块其实调用的是 systemctl 命令
    [root@master ~]# salt '*' service.start "redis"
    minion1:
    	True
    [root@master ~]# salt '*' service.status "redis"
    minion1:
    	True
    

    7.yaml

    # 输出json格式的数据,以及yaml格式的数据
    [root@master ~]# salt '*' service.status "redis" --out=json
    {
    	"minion1": false
    }
     
    [root@master ~]# salt '*' service.start "redis" --out=json
    {
    	"minion1": true
    }
    
    
    # 在线yaml网站http://www.bejson.com/validators/yaml_editor/  
    
    # 输出yaml格式的数据
    [root@master ~]# salt --out=yaml '*' cmd.run_all 'hostname'
    minion1:
      pid: 3649
      retcode: 0
      stderr: ''
      stdout: minion
    

    8.salt采集服务器静态信息之grains模块,其实就是用python写的一个超大的字典

    [root@master ~]# salt '*' grains.item fqdn_ip4 --out=json
    {
    	"minion1": {
    		"fqdn_ip4": [
    			"192.168.16.133"
    		]
    	}
    }
    希望你眼眸有星辰,心中有山海,从此以梦为马,不负韶华
  • 相关阅读:
    APP设计资源
    browsersync实现网页实时刷新(修改LESS,JS,HTML时)
    Browsersync + Gulp.js
    用原生js对表格排序
    js深复制
    c++刷题(43/100)矩阵旋转打印
    将本地的mongodb迁移到阿里云
    c++刷题(39/100)笔试题3
    c++刷题(37/100)笔试题2
    c++刷题(33/100)笔试题1
  • 原文地址:https://www.cnblogs.com/daviddd/p/12104370.html
Copyright © 2020-2023  润新知