• saltstack pillar


    piller组件定义与客户端相关的任何数据(定义在master端),定义好的数据可以被其他组件调用(如state,api)

     说通俗了,一句话,就是ansible vars里定义的变量,可以在整个playbook中引用,只不过pillar中只有指定的minion自己能看到自己的数据。

    启用piller功能并查看

    [root@k8s_master ~]# cat /etc/salt/master |grep -v '^#|^$'
    cachedir: /var/cache/salt/master
    auto_accept: True
    file_recv: True
    file_roots:
      base:
        - /root
    pillar_opts: True        #开启pillar功能 pillar_roots: base: - /srv/pillar nodegroups: master1: 'L@k8s_master' agents: 'L@k8s_node1,k8s_node2' [root@k8s_master ~]# systemctl restart salt-master

    效果如下

    [root@k8s_master ~]# salt 'k8s_master' pillar.data
    k8s_master:
        ----------
        master:
            ----------
            __role:
                master
            auth_mode:
                1
            auto_accept:
                True
            cache_sreqs:
                True
            cachedir:
                /var/cache/salt/master
            cli_summary:
                False
            client_acl:
                ----------
            client_acl_blacklist:
                ----------
            cluster_masters:
            cluster_mode:
                paranoid
            con_cache:
                False
            conf_file:
                /etc/salt/master
            config_dir:
                /etc/salt
            cython_enable:
                False
            daemon:
                False
            default_include:
                master.d/*.conf
            enable_gpu_grains:
                False
            enforce_mine_cache:
                False
            enumerate_proxy_minions:
                False
            environment:
                None
            event_return:
            event_return_blacklist:
            event_return_queue:
                0
            event_return_whitelist:
            ext_job_cache:
            ext_pillar:
            extension_modules:
                /var/cache/salt/extmods
            external_auth:
                ----------
            failhard:
                False
            file_buffer_size:
                1048576
            file_client:
                local
            file_ignore_glob:
                None
            file_ignore_regex:
                None
            file_recv:
                True
            file_recv_max_size:
                100
            file_roots:
                ----------
                base:
                    - /root
            fileserver_backend:
                - roots
            fileserver_followsymlinks:
                True
            fileserver_ignoresymlinks:
                False
            fileserver_limit_traversal:
                False
            gather_job_timeout:
                10
            gitfs_base:
                master
            gitfs_env_blacklist:
            gitfs_env_whitelist:
            gitfs_insecure_auth:
                False
            gitfs_mountpoint:
            gitfs_passphrase:
            gitfs_password:
            gitfs_privkey:
            gitfs_pubkey:
            gitfs_remotes:
            gitfs_root:
            gitfs_user:
            hash_type:
                md5
            hgfs_base:
                default
            hgfs_branch_method:
                branches
            hgfs_env_blacklist:
            hgfs_env_whitelist:
            hgfs_mountpoint:
            hgfs_remotes:
            hgfs_root:
            id:
                k8s_master
            interface:
                0.0.0.0
            ioflo_console_logdir:
            ioflo_period:
                0.01
            ioflo_realtime:
                True
            ioflo_verbose:
                0
            ipv6:
                False
            jinja_lstrip_blocks:
                False
            jinja_trim_blocks:
                False
            job_cache:
                True
            keep_jobs:
                24
            key_logfile:
                /var/log/salt/key
            keysize:
                2048
            log_datefmt:
                %H:%M:%S
            log_datefmt_logfile:
                %Y-%m-%d %H:%M:%S
            log_file:
                /var/log/salt/master
            log_fmt_console:
                [%(levelname)-8s] %(message)s
            log_fmt_logfile:
                %(asctime)s,%(msecs)03.0f [%(name)-17s][%(levelname)-8s][%(process)d] %(message)s
            log_granular_levels:
                ----------
            log_level:
                warning
            loop_interval:
                60
            maintenance_floscript:
                /usr/lib/python2.7/site-packages/salt/daemons/flo/maint.flo
            master_floscript:
                /usr/lib/python2.7/site-packages/salt/daemons/flo/master.flo
            master_job_cache:
                local_cache
            master_pubkey_signature:
                master_pubkey_signature
            master_roots:
                ----------
                base:
                    - /srv/salt-master
            master_sign_key_name:
                master_sign
            master_sign_pubkey:
                False
            master_tops:
                ----------
            master_use_pubkey_signature:
                False
            max_event_size:
                1048576
            max_minions:
                0
            max_open_files:
                100000
            minion_data_cache:
                True
            minionfs_blacklist:
            minionfs_env:
                base
            minionfs_mountpoint:
            minionfs_whitelist:
            nodegroups:
                ----------
                agents:
                    L@k8s_node1,k8s_node2
                master1:
                    L@k8s_master
            open_mode:
                False
            order_masters:
                False
            outputter_dirs:
            peer:
                ----------
            permissive_pki_access:
                False
            pidfile:
                /var/run/salt-master.pid
            pillar_opts:
                True
            pillar_roots:
                ----------
                base:
                    - /srv/pillar
            pillar_safe_render_error:
                True
            pillar_source_merging_strategy:
                smart
            pillar_version:
                2
            pillarenv:
                None
            ping_on_rotate:
                False
            pki_dir:
                /etc/salt/pki/master
            preserve_minion_cache:
                False
            pub_hwm:
                1000
            publish_port:
                4505
            publish_session:
                86400
            queue_dirs:
            raet_alt_port:
                4511
            raet_clear_remotes:
                False
            raet_main:
                True
            raet_mutable:
                False
            raet_port:
                4506
            range_server:
                range:80
            reactor:
            reactor_refresh_interval:
                60
            reactor_worker_hwm:
                10000
            reactor_worker_threads:
                10
            renderer:
                yaml_jinja
            ret_port:
                4506
            root_dir:
                /
            rotate_aes_key:
                True
            runner_dirs:
            saltversion:
                2015.5.10
            search:
            search_index_interval:
                3600
            serial:
                msgpack
            show_jid:
                False
            show_timeout:
                True
            sign_pub_messages:
                False
            sock_dir:
                /var/run/salt/master
            sqlite_queue_dir:
                /var/cache/salt/master/queues
            ssh_passwd:
            ssh_port:
                22
            ssh_scan_ports:
                22
            ssh_scan_timeout:
                0.01
            ssh_sudo:
                False
            ssh_timeout:
                60
            ssh_user:
                root
            state_aggregate:
                False
            state_auto_order:
                True
            state_events:
                False
            state_output:
                full
            state_top:
                salt://top.sls
            state_top_saltenv:
                None
            state_verbose:
                True
            sudo_acl:
                False
            svnfs_branches:
                branches
            svnfs_env_blacklist:
            svnfs_env_whitelist:
            svnfs_mountpoint:
            svnfs_remotes:
            svnfs_root:
            svnfs_tags:
                tags
            svnfs_trunk:
                trunk
            syndic_dir:
                /var/cache/salt/master/syndics
            syndic_event_forward_timeout:
                0.5
            syndic_jid_forward_cache_hwm:
                100
            syndic_master:
            syndic_max_event_process_time:
                0.5
            syndic_wait:
                5
            timeout:
                5
            token_dir:
                /var/cache/salt/master/tokens
            token_expire:
                43200
            transport:
                zeromq
            user:
                root
            verify_env:
                True
            win_gitrepos:
                - https://github.com/saltstack/salt-winrepo.git
            win_repo:
                /srv/salt/win/repo
            win_repo_mastercachefile:
                /srv/salt/win/repo/winrepo.p
            worker_floscript:
                /usr/lib/python2.7/site-packages/salt/daemons/flo/worker.flo
            worker_threads:
                5
            zmq_filtering:
                False
    View Code

    pillar 在sls中的使用

    (1)定义pillar的主目录

    [root@k8s_master ~]# cat /etc/salt/master |grep -v '^#|^$'
    file_roots:
      base:
        - /rootpillar_opts: True        #开启pillar功能
    pillar_roots:                 #主目录
      base:
        - /srv/pillar
    [root@k8s_master ~]# systemctl restart salt-master
    #创建pillar目录
    [root@k8s_master ~]# install -d /srv/pillar
    其他参数

    (1
    )pillar 源,salt支持引入pillar外部资源,例如从数据库导入pillar值,默认是关闭的 ext_pillar_first: False
    (
    2)开启pillar gitgs ssl验证
    pillar_gitfs_ssl_verify: True
    (3)开启pillar render 错误信息
    pillar_safe_render_error: True
    (4)设置pillar配置合并策略
    pillar_source_merging_strategy: smart

    (2)定义入口文件top.sls及要引用的变量文件

    即定义pillar的数据覆盖被控主机的范围(要执行的主机),'*'代表所有主机,及储存变量的文件(data.sls)

    示例及测试:

    [root@k8s_master pillar]# pwd
    /srv/pillar
    [root@k8s_master pillar]# ls
    data.sls top.sls
    [root@k8s_master pillar]# cat top.sls 
    base:
      '*':
        - data
    [root@k8s_master pillar]# cat data.sls 
    appname: master1
    flow:
      maxconn: 30000
      maxmem: 1G
    
    #测试
    [root@k8s_master pillar]
    # salt 'k8s_master' pillar.data appname flow k8s_master: ---------- appname: master1 flow: ---------- maxconn: 30000 maxmem: 1G

    如果显示不出结果,可用salt 'k8s_master' saltutil.refresh_pillar(saltutil.sync_all) 刷新pillar数据

      [root@k8s_master pillar]# salt -I 'appname:master1' test.ping
       k8s_master:
          True

    测试得出的结果可在state/模板等文件引用,引用方式如下:

    格式:
    {{ pillar变量 }}
    #获取appname的值

    {{ pillar['appname'] }} (一级字典)
    #获取maxconn的值 {{ pillar[
    'flow']['maxconn'] }} (二级字典) {{ salt['pillar.get']('flow:maxconn',{})}}(二级字典)

    pillar与jinja和grains的使用示例

    [root@k8s_master pillar]# tree
    .
    ├── data.sls
    ├── package.sls
    ├── top.sls
    └── users
        └── init.sls

    1 directory, 4 files

    [root@k8s_master pillar]# cat users/init.sls
    hdfs:
      namenode: 192.168.122.201
      stadbynode: 192.168.122.202

    hbase:
      master: 192.168.122.201

    [root@k8s_master pillar]# cat top.sls 
    base:
      '*':
        - data
        - package
    - test.test        ##此处表示根目录下test目录下的test.sls文件(即,/srv/pillar/test/test.sls)【详细见saltstack sls随笔】
    - users           #此处表示users目录,top.sls会知己恩引用users 目录下的 init.sls(所有)文件  【详细见saltstack sls随笔】
    [root@k8s_master pillar]
    # cat data.sls appname: master1 flow: maxconn: 30000 maxmem: 1G [root@k8s_master pillar]# cat package.sls pkgs: # 模块名称 {% if grains['os'] == 'CentOS' %} # 使用jinja模板,通过grains筛选主机 apache: httpd # 安装包名称 git: git {% elif grains['os'] == 'SUSE' %} apache: apache2 git: git-core {% endif %}

    查看结果:

    [root@k8s_master pillar]# salt 'k8s_master' saltutil.refresh_pillar    #刷新
    k8s_master:
        True
    [root@k8s_master pillar]# salt 'k8s_master' pillar.items            #获取数据
    k8s_master:
        ----------
        appname:                #data.sls信息
            master1
        flow:
            ----------
            maxconn:
                30000
            maxmem:
                1G
      

       hbase:                  ##users目录信息
         ----------
         master:
             192.168.122.201
       hdfs:
         ----------
         namenode:
            192.168.122.201
         stadbynode:
            192.168.122.202

    
        master:
            ----------
            __role:
                master
            auth_mode:
                .......
         pkgs:              #package.sls信息
            ----------
            apache:
                httpd
            git:
                git

    #以上蓝色字体为自定义的的pillar数据(变量),黑色字体为自带的pillar数据

    Api调用方式

    pillar['flow']['maxconn']
    pillar.get('flow:appname',{})
  • 相关阅读:
    docer run 、docker attach 与 docker exec的区别
    filebeat-kafka:WARN producer/broker/0 maximum request accumulated, waiting for space
    json 格式要求
    词法分析
    CSS3 鲜为人知的属性-webkit-tap-highlight-color的理解
    DOMContentLoaded与load的区别
    用vue的自定义组件写了一个拖拽 组件,局部的 只能在自定义元素内的
    浮动元素遇到标准流元素 会发生转角遇到爱
    柯里化函数
    转载一篇关于toString和valueOf
  • 原文地址:https://www.cnblogs.com/FRESHMANS/p/8289133.html
Copyright © 2020-2023  润新知