zoukankan      html  css  js  c++  java
  • 一、saltstack安装

    1.安装saltstack

    master上安装salt-master:

    yum install salt-master -y
    

    minion 上安装 salt-minion:

    1 yum install salt-minion -y

    2、 配置saltstack

    2.1 master端:

    1 vi /etc/salt/master

    2.2 修改interface监听地址为本机ip:

    修改auto_accept 自动接收minion的key:

    auto_accept: True

    2.3 修改minion文件中的的id为自己的主机名

    [root@client1 ~]# vi /etc/salt/minion  #修改78行
    id: client1
    [root@client2 ~]# vi /etc/salt/minion   #修改78行
    id: client2

    也可以修改

      [root@94 ~]# cat /etc/salt/minion_id
      94.191.91.151

      本文件只有启动minion后才会生成

    2.4 minion端:修改master的服务器ip:

    vi /etc/salt/minion
    
    # Set the location of the salt master server. If the master server cannot be
    # resolved, then the minion will fail to start.
    master: 45.63.88.217

    3 启动saltstack 

    3.1 master端:

    /etc/init.d/salt-master restart
    
    Stopping salt-master daemon: [  OK  ]
    Starting salt-master daemon: [  OK  ]

    chkconfig salt-master #开启自启

    3.2 minion端:

    /etc/init.d/salt-minion restart 
    
    Stopping salt-minion daemon:  [  OK  ]
    Starting salt-minion daemon:  [  OK  ]
    chkconfig salt-master  #开机自启


    centos 7启动命令:
    [root@saltstack ~]# systemctl enable salt-master   #加入开机启动
    [root@saltstack ~]# systemctl enable salt-minion  #加入开机启动
    [root@saltstack ~]# systemctl start salt-master  #启动服务
    [root@saltstack ~]# systemctl start salt-minion    #启动服务

    4 测试saltstack

    在master端执行:

    [root@vultr ~]# salt-key -L
    Accepted Keys:
    iZ25fb5wrepZ     #客户端主机名
    Denied Keys:
    Unaccepted Keys:
    Rejected Keys:
    cat  /etc/salt/minion_id 
    可以修改客服端主机名

    此时可以看到minion的ip已经获取到了,说明安装成功。

    如果在/etc/salt/master的配置文件中没有配置自动接收key,可以使用以下命令:

    [root@master ~]# salt-key -A
    The key glob '*' does not match any unaccepted keys.

    测试:

    salt 命令:

    #所有监控用户执行命令:
    salt    '*'    cmd.run    "df -h "
    
    #指定一个用户执行命令:
    salt  '用户名或ip'    cmd.run    "命令"

      cmd是模块,run是cmd模块的方法

      cmd命令很好用,但是同时也很危险,因为能直接执行命令意味着就可以删除。后面会说到ACL允许特定的人才能执行

    测试
    salt "zabbix-agent" test.ping
      *表示所有,因为*在shell本地也是有含义的因此我们用引号引起来,不让他在shell中体现它的含义。
      test.ping,其中test是一个模块,而ping是test模块中的一个方法
      这条命令的意思是检测minion是否在干活,这个ping和ICMP的ping不一样,不要搞混了。

     salt-key 命令参数:

    -l                     显示指定状态的key,支持正则表达式
    -L,--list-all          显示所有公钥
    -a,ACCEPT              接受指定等待认证的key,支持正则
    -A,--accept-all        接受所有等待认证的key
    -r REJECT              拒绝等待认证的key,支持正则
    -R REJECT-all          拒绝所有等待认证的key
    --include-all          显示所有状态的key,包括non-pending状态
    -p PRINT               打印指定的公钥,-P打印所有的公钥
    -d DELETE              删除指定的key
    -D --delete-all        删除所有的key
    -f FINGER              显示指定key的指纹信息
    -F --finger-all        显示所有key的指定信息

     salt-cp 命令参数:

    salt-cp   '*'   /var/local/text.txt    /tmp/
    #拷贝/var/local/text.txt 到所有服务器上的/tmp目录下
    

    Salt 文件服务器:

    由于文件服务器是为Salt state system工作的,所以文件服务器也是支持环境的概念的。
    Salt文件服务器/etc/salt/master配置文件中的flie_roots选项管理。
    Salt文件服务器的默认环境为为base环境,base环境必须定义,因为当环境没有明确指定时,文件下载就是从base环境中去找的。其配置如下:
    file_roots:
      base:
        - /srv/salt/base
        - /srv/salt/failover
    

    /srv/salt/base和/srv/salt/failover这些目录是不存在,需要手动创建。这里还需要说明的是下载文件时的搜索顺序。
    文件服务器在给minions传输文件时,是有搜索顺序的。这里用上述配置说明:
    如果文件URL为:salt://httpd/httpd.conf。那么传输文件时,
    首先搜索/srv/salt/base/httpd/httpd.conf,如果找到了,则下载;否则就使用/srv/salt/failover/httpd/httpd.conf

    2. 文件服务器多环境配置

    多环境配置也是更改master配置达成,如下:

    file_roots:
      base:
        - /srv/salt/base
      dev:
        - /srv/salt/dev
        - /srv/salt/base
      prod:
        - /srv/salt/prod
        - /srv/salt/base
    

    在这个配置中,处了base环境外。还有dev环境和prod环境。配置文件修改后,需要重启master才能生效。

    3. cp模块

    cp模块被用于用于Salt state system、salt-cp命令(如上所述)以及可用于Salt文件服务器。

    3.1 cp.get_fle

    cp.get_file用于minion从master下载一个文件,语法:

    文件在base环境下:

    salt    '*'    cp.get_file     salt://testfile    /root/testfile
    

    该命令表示minion从master端下载文件并拷贝到到/root/testfile文件中。注意:salt://表示的base环境。因此,testfille是位于base环境下——即/srv/salt/base目录中。

    文件在base环境的多级目录下:

    salt '*'  cp.get_file  salt://httpd/httpd.conf  /root/httpd.conf
    
    salt://httpd/httpd.conf  表示   /srv/salt/base/httpd/httpf.conf**
    

    cp模块目标路径必须是一个文件,而不是目录。这点有区别去salt-cp命令。

    cp.get_file gzip格式
    对于大文件传输,cp.get_file支持gzip压缩格式。因为gzip是CPU密集型的工具,因此cp.get_file开启gzip是适用于高压缩率的情况下,如JSON或者YAML文件。
    语法:

    salt  '*'  cp.get_file  salt://httpd/httpd.conf  /root/httpd.conf  gzip=5

    gzip后的数字表示压缩比,范围在1-9之间,1表示最小压缩比,9为最大压缩比。换句话说,gzip=1情况下, 消耗的CPU小;gzip=9时,消耗的CPU则更多。

    cp.get_file  makedirs=True
    注意,也就是时候,cp.get_file过程中,如果目录不存在,cp.get_file是不会主动创建目录的,如果要做到这点,可以使用makedirs=True 参数。测试如下:

    [root@master httpd]# salt '*' cp.get_file salt://httpd/httpd.conf /root/test/httpd.conf
    192.168.1.223:
        False
    [root@master httpd]# salt '*' cp.get_file salt://httpd/httpd.conf /root/test/httpd.conf makedirs=True
    192.168.1.223:
        /root/test/httpd.conf
    

    cp.get_dir  

    顾名思义,cp.get_dir就是下载目录,用法基本同cp.get_file一直。直接举个例子吧

    将master端的httpd目录下载到minion端的/root目录下

    [root@master ~]# salt '*' cp.get_dir salt://httpd /root
    192.168.1.223:
        - /root/httpd/httpd.conf
    

    cp.push

    cp.push 模块允许minion上传文件到master端。注意事项:

    cp.push功能默认不开启,需要修改配置文件中的file_recv 环境,默认为False
    上传的文件存放在master端的 /var/cache/salt/master/minions/<minion_id>/files/ 目录下

    修改master配置文件并重启。

    file_recv: True

    更改minion_id步骤

    1.停止salt-minion 如果不停止会一直给master发消息
    2.master上面salt-key 删除老的id   salt-key -d minionid
    3.mininon上删除/etc/salt/minion_id  rm -f /etc/salt/minion_id
    4.删除minion端/etc/salt/pki   rm -rf /etc/salt/pki
    5.minion上配置文件修改id 
    6.启动minion
    7.master重新salt-key加入
  • 相关阅读:
    base64和Blob的相互转换
    限制文件上传的大小和尺寸
    git将本地项目提交到github
    vue-cli3创建项目时报错
    运行项目是node-sass报错的解决方法
    classList的使用
    将数组扁平化并去除其中重复数据,最终得到一个升序且不重复的数组
    移动端的图片放大
    js获取url中的参数
    HTML5-canvas
  • 原文地址:https://www.cnblogs.com/xu743876685/p/8523275.html
Copyright © 2011-2022 走看看