当前位置: 首页 > 工具软件 > Salt > 使用案例 >

salt

倪培
2023-12-01
介绍
    SaltStack是为我们批量管理千万台机器的基础工具,拓展起来也十分方便。SaltStack可以进行动态的编辑,配置管理,远程执行命令等等。
    Saltstack包括master和minion,master是控制端,minion是被管理节点。

安装
    yum install salt-master
    配置文件: /etc/salt/master
    配置文件字段选项介绍: http://docs.saltstack.com/ref/configuration/master.html
    最基本字段: interface (服务端监听端口)
    运行: /etc/init.d/salt-master start
    master默认监听两个端口, 4505(publish_port)为salt的消息发布系统,4506(ret_port)为salt客户端与服务端通信的端口,所以确保客户端能跟服务端的这2个端口通信


    yum install salt-minion
    配置文件: /etc/salt/minion
    配置文件选项介绍: http://docs.saltstack.com/ref/configuration/minion.html
    最基本字段: master: 服务端主机名 id: 客户端主机名(在服务端看到的客户端的名字)
    运行: /etc/init.d/salt-minion start

    注意事项:
        1. minion 默认和主机名salt的主机通信
        2. salt的配置文件均为yaml风格, $key: $value   # 注意冒号后有一个空格

salt minion和master的认证过程:
    minion在第一次启动时,会在/etc/salt/pki/minion/下自动生成minion.pem(private key), minion.pub(public key),然后将minion.pub发送给master
    master 在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的public key, 然后master就能对minion发送指令了


对minion进行分组:
    文档: http://docs.saltstack.com/topics/targeting/nodegroups.html

    在master的配置文件中按如下格式定义:
        nodegroups:
            group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com or bl*.domain.com'
            group2: 'G@os:Debian and foo.domain.com'
    
    在state或者pillar中引用的时候如下:
        base:
            group1:
                - match: nodegroup    
                - webserver
    
    命令使用: salt -N group1 test.ping                #-N指定groupname

常用命令
    服务端查看key: salt-key 
    服务端接受key: salt-key -a minion1,   salt-key -A  接受所有key
    测试某台机器是否联通: salt 'minion1' test.ping
    测试所有机器是否联通: salt '*' test.ping  # 引号中以实现很强大的minion的过滤与匹配技术, 文档:http://docs.saltstack.com/topics/targeting/compound.html
    执行命令: salt '*' cmd.run 'hostname'
    安装app: salt '*' pkg.install ftp 


state.apply 的使用: 
    https://www.jianshu.com/p/90dd9024067c

    /etc/salt/master 配置
        file_roots:
            base:
                - /srv/salt
    

    top.sls:
        base:
            '*':
                - code_rsync
    
    code_rsync.sls:
        calc_sync:
            file.recurse:
                - source: salt://index_center_all/src/index_calculation
                - name: /var/local/index_calculation/  # 这里可能是minion的目标目录
                - user: amcuser
                - group: amcuser
                - dir_mode: 755
                - file_mode: 644
                - makedir: True
                - backup: minion
                - include_empty: True
                - clean: True
        
        /var/local/index_center/index_func_map.py:
            file.managed:
                - source: salt://index_center_all/src/index_func_map.py
                - user: amcuser
                - group: amcuser
                - file_mode: 644


复制新的机器后需要修改的salt内容 
###   minion  ###
/etc/salt/minion
修改 master ip 如果需要
 
删除 /etc/salt/pki/minion/minion_mster.pub
修改 /etc/salt/minion_id 中的host
 
重启 service salt-minion restart
需要的话master上删除 key
salt-key -d  XXXX





























 类似资料: