zoukankan      html  css  js  c++  java
  • saltstack实战3--配置管理之pillar

    数据系统-Pillar

    pillar和grains类似,但是它能给minion指定它想要的数据,安全性较好,另外它是在master端设置的
     
    应用场景:
    grains的特性–每次启动汇报、静态决定了它没有pillar灵活,要知道pillar是随时可变的,只要在master端修改了那一般都会立刻生效的。
    所以grains更适合做一些静态的属性值的采集,例如设备的角色(role),磁盘个数(disk_num)等诸如此类非常固定的属性。
    如果你想定义的属性值是经常变化的,那请采用pillar,如果是很固定、不易变的那请用grains。

    grain和pillar区别
    1.grains存储的是静态、不常变化的内容,pillar则相反
    2.grains是存储在minion本地,而pillar存储在master本地
    3.minion有权限操作自己的grains值,如增加、删除,但minion只能查看自己的pillar,无权修改
     
    查看当前默认的pillar,其实是有的,因为用处不大,默认给关闭了
    [root@master pillar]# salt '*' pillar.items
    minion01:
        ----------
    minion02:
        ----------
    [root@master pillar]# 
    

    vim /etc/salt/master

    第552行

    # The pillar_opts option adds the master configuration file data to a dict in
    # the pillar called "master". This is used to set simple configurations in the
    # master config file that can then be used on minions.
    #pillar_opts: False
    

    取消注释,把False改成True

    # The pillar_opts option adds the master configuration file data to a dict in
    # the pillar called "master". This is used to set simple configurations in the
    # master config file that can then be used on minions.
    pillar_opts: True
    

    重启master服务

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

    查看默认的pillar信息

    [root@master pillar]# salt 'minion01' pillar.items
    minion01:
        ----------
        master:
            ----------
            __role:
                master
            auth_mode:
                1
            auto_accept:
                False
            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:
                True
            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:
                False
            file_recv_max_size:
                100
            file_roots:
                ----------
                base:
                    - /srv/salt
            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:
                minion01
            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:
                debug
            loop_interval:
                60
            maintenance_floscript:
                /usr/lib/python2.6/site-packages/salt/daemons/flo/maint.flo
            master_floscript:
                /usr/lib/python2.6/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:
                ----------
                lamp:
                    L@minion01,minion02
                lnmp:
                    minion02
            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.6/site-packages/salt/daemons/flo/worker.flo
            worker_threads:
                5
            zmq_filtering:
                False
    [root@master pillar]# 
    

    用处不大,关闭即可

    自定义pillar信息,pillar也有自己的file_root

     vim /etc/salt/master

     找到529行,取消这3行的注释

    #####         Pillar settings        #####
    ##########################################
    # Salt Pillars allow for the building of global data that can be made selectively
    # available to different minions based on minion grain filtering. The Salt
    # Pillar is laid out in the same fashion as the file server, with environments,
    # a top file and sls files. However, pillar data does not need to be in the
    # highstate format, and is generally just key/value pairs.
    pillar_roots:
      base:
        - /srv/pillar
    

     重启服务,创建目录

    [root@master pillar]# vim /etc/salt/master
    [root@master pillar]# /etc/init.d/salt-master restart
    Stopping salt-master daemon:                               [  OK  ]
    Starting salt-master daemon:                               [  OK  ]
    [root@master pillar]# mkdir /srv/pillar  -p
    [root@master pillar]# 
    
    另外pillar也有top file
    这个top.sls也可以改名,比如改为hehe.sls
    但是这个文件必须放在pillar的base目录下

    pillar和grains的base目录是两回事不要弄混了,它们都有自己的base目录

    自定义一些pillar信息

    结合jinja语法和grains信息,jinja语法是一种语法格式,具体的可以查看jinja语法这篇笔记,难度不大,容易懂

    操作如下,另外它也有自己的top.sls入口文件,在自己的base目录下

    [root@master ~]# salt '*' pillar.items
    minion02:
        ----------
    minion01:
        ----------
    [root@master ~]# cd /srv/pillar/
    [root@master pillar]# ls
    packages.sls  top.sls
    [root@master pillar]# cat packages.sls 
    {% if grains['os'] == 'CentOS' %}
    apache: httpd
    git: git
    {% elif grains['os'] == 'Debian' %}
    apache: apache2
    git: git-core
    {% endif %}
    [root@master pillar]# cat top.sls 
    base:
      minion02:
        - packages
    [root@master pillar]# 
    

    上面我们设置了,给centos系统设置pillar信息

    让apache的显示httpd

    git显示git

    然后通过top.sls只给minion02执行这个pillar信息

    [root@master pillar]# salt '*' pillar.items
    minion01:
        ----------
    minion02:
        ----------
        apache:
            httpd
        git:
            git
    [root@master pillar]# 
    

     修改下文件,这样下次管理很多minion的时候,安装包时,就可以根据不同系统执行不同的安装操作了

    [root@master pillar]# cat packages.sls 
    {% if grains['os'] == 'CentOS' %}
    apache: httpd
    {% elif grains['os'] == 'Debian' %}
    apache: apache2
    {% endif %}
    [root@master pillar]# cat top.sls 
    base:
      '*':
        - packages
    [root@master pillar]# salt '*' pillar.items
    minion02:
        ----------
        apache:
            httpd
    minion01:
        ----------
        apache:
            httpd
    [root@master pillar]# 
    

    还可以通过pillar信息,然后在命令行远程执行test.ping找出哪些机器是centos系统的

    看到下面minion01是不是无响应,是因为pillar信息是在master上定义的,所以上面执行pillar.items能显示就是因为信息在master上,但是没有刷新到minion上呢

    [root@master pillar]# salt -I 'apache:httpd' test.ping
    minion02:
        True
    minion01:
        Minion did not return. [No response]
    [root@master pillar]# 
    

    所以每次定义完pillar信息,需要先刷新到minion上,再执行命令

    如下刷新方法

    [root@master pillar]# salt  '*'  saltutil.refresh_pillar
    minion02:
        True
    minion01:
        True
    [root@master pillar]# salt -I 'apache:httpd' test.ping
    minion02:
        True
    minion01:
        True
    [root@master pillar]# 
    

      

     

      

     
  • 相关阅读:
    start-stop-daemon 守护进程管理
    Proxmox VE 的安装和简单使用
    查询Linux下文件格式.
    re匹配 [sS][wW]的使用.
    prometheus简单监控Linux,mysql,nginx
    Linux中查看和修改分区的uuid方便挂载使用
    openssl 模块 安装 centso Ubuntu
    python写爬虫遇到需要解码js一些记录
    CSS 文字超出部分显示省略号
    新随笔
  • 原文地址:https://www.cnblogs.com/nmap/p/6241187.html
Copyright © 2011-2022 走看看