• Saltstack简单使用


    • 安装,官方文档

      1. 配置阿里云的saltstack镜像仓库
      2. 主安装salt-master salt-minion salt-api
      3. 从安装salt-minion
      4. 关闭防火墙 或者打开端口

      firewall

      firewall-cmd --permanent --zone=public --add-port=4505-4506/tcp
      firewall-cmd --reload
      

      or iptables

      -A INPUT -m state --state new -m tcp -p tcp --dport 4505:4506 -j ACCEPT
      
      1. 启动服务
        systemctl start salt-master
        systemctl start salt-minion
        systemctl enable salt-master
        systemctl enable salt-minion
        
    • 配置,官方文档

      • mastermaster配置详解

        1. 配置监听端口

          /etc/salt/master --> interface

        2. 配置accept public keys from minion

          /etc/salt/master --> auto_accept

          或者手动允许minion key

          salt-key  # 查看keys 也可以使用salt-key -L
          salt-key -A  # 通过所有key
          
      • minionminion配置详解

        1. 指定salt-master服务器

          /etc/salt/minion --> master

          可以指定ip或者hostname

    • grains操作

      • 可以手工编写/etc/grains 文件yaml格式,然后使用命令同步grains

        salt '*' saltutil.sync_grains
        
      • 查看grains方法

        salt '*' grains.
        
      • 查看grains

        1. ls

          查看所有grains的key

          salt '*' grains.ls
          
        2. items

          查看所有grains的key和value

          salt '*' grains.items
          
        3. item

          查看一个或者多个key

          salt '*' grains.item os
          salt '*' grains.item os osrelease oscodename
          
        4. get

          salt '*' grains.get pkg:apache
          salt '*' grains.get abc::def|ghi delimiter='|'‘
          
      • 新增grains

        以下操作均会同步grains config file

        1. append

          salt '*' grains.append key val
          
        2. setval

          salt '*' grains.setval key val
          salt '*' grains.setval key "{'sub-key': 'val', 'sub-key2': 'val2'}"
          
        3. setvals 可以传递python字典结构

          salt '*' grains.setvals "{'key1': 'val1', 'key2': 'val2'}"
          salt '*' grains.setvals   "{'A':[{'B1': {'C':'C_value'}},'B2']}"
          # A:
          #- B1:
          #    C: C_value
          #- B2
          
        4. set 可以通过:分隔层级选中key来设置value

          salt '*' grains.set 'apps:myApp:port' 2209
          salt '*' grains.set 'apps:myApp' '{port: 2209}'
          
      • 删除grains

        1. remove

          salt '*' grains.remove key val
          
        2. delval

          salt '*' grains.delval key
          
        3. delkey

          salt '*' grains.delkey key
          
      • 其他方法

        • equals

          确认minion的grains为给定的值

          注意当value为列表时需要给定列表的所有值

          salt '*' grains.equals roles  ['salt-master','k8s-master']
          
        • fetch

          get方法的别名 在salt源代码中 fetch的实现为

          # Provide a jinja function call compatible get aliased as fetch
          fetch = get
          
        • filter_by

          根据给定的字典返回指定的key

          可以传递位置参数也可以键值对传餐

          """
          :param lookup_dict: 给定dict
          :param grain: 指定需要匹配的grains key,默认为'os_family'
          :param merge: 默认为None 联合lookup_dict
          :param default: 默认为'default' 如果在给定的dict中没有匹配到 那就使用defult指定的key
          :param base: 默认为None 配合merge使用
          """
          

          例子中的os_family如果是RedHat会返回给定的列表中的os_family is RedHat

          salt '*' grains.filter_by '{Debian: os_family is Debain,RedHat: os_family is RedHat}' os_family
          salt '*' grains.filter_by '{default: {A: {B: C}, D: E}, F: {A: {B: G}}, H: {D: I}}' 'xxx' '{D: J}' 'F' 'default'
          

          更多的应用在jinja中

          {% set apache = salt['grains.filter_by']({
           'Debian': {'pkg': 'apache2', 'srv': 'apache2'},
           'RedHat': {'pkg': 'httpd', 'srv': 'httpd'},
          }, default='Debian') %}
                  
          myapache:
            pkg.installed:
              - name: {{ apache.pkg }}
            service.running:
              - name: {{ apache.srv }}
          
        • get_or_set_hash

          获取或者生成hash值 例子中的50代表hash的长度

          salt '*' grains.get_or_set_hash 'django:SECRET_KEY' 50
          

          在sls中使用

          some_mysql_user:
              mysql_user:
              	- present
                - host: localhost
                - password: {{ salt['grains.get_or_set_hash']('mysql:some_mysql_user') }}
          
        • has_value

          判断给定的key有没有值

          salt '*' grains.has_value systemd:version
          
    • 列出所有执行模块

      salt '*' sys.list_modules
      
    • 列出所有执行函数

      salt '*' sys.list_functions
      salt '*' sys.list_functions sys
      
    • 查看执行模块文档

      salt '*' sys.doc
      salt '*' sys.doc sys.doc
      salt '*' sys.doc grains
      
    • 查看sys模块的所有函数

      salt '*' sys.list_functions sys
      
    • 查看执行模块的传参要求

      salt '*' sys.argspec <modules_name>
      
  • 相关阅读:
    ADexplorer
    Ldap登陆AD(Active Directory)进行认证的Java示例
    通过LDAP验证Active Directory服务
    APACHE + LDAP 的权限认证配置方法
    How to authenticate a user by uid and password?
    js汉字与拼音互转终极方案,附简单的JS拼音输入法【转】
    给MySQL增加mysql-udf-http和mysql-udf-json自定义函数,让MySQL有调用http接口和查询直接回JSON的能力
    CentOS6.7安装RabbitMQ3.6.5
    CentOS利用inotify+rsync实现文件同步
    CentOS两台服务器利用scp拷贝文件
  • 原文地址:https://www.cnblogs.com/randomlee/p/12585255.html
Copyright © 2020-2023  润新知