技术好文:saltstackpillar

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 技术好文:saltstackpillar

阅读目录


Api调用方式


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:


//代码效果参考:http://hnjlyzjd.com/xl/wz_25120.html

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:


1048//代码效果参考:http://hnjlyzjd.com/xl/wz_25118.html

576

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:


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:


-


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',{})

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
5月前
|
存储 编解码 索引
技术好文:StudingDay3
技术好文:StudingDay3
|
5月前
|
API C#
技术好文:xluatips
技术好文:xluatips
23 0
|
5月前
|
前端开发
技术好文:wobble
技术好文:wobble
28 0
|
5月前
|
Python
技术好文:VileGrasshoppers
技术好文:VileGrasshoppers
20 0
|
5月前
|
JSON 程序员 Swift
技术好文:Swit项目
技术好文:Swit项目
24 0
|
5月前
|
前端开发 关系型数据库 MySQL
技术好文:R基础学习(三)
技术好文:R基础学习(三)
26 0
|
6月前
好文推荐
好文推荐
178 2
|
6月前
|
人工智能 Cloud Native 前端开发
2023年度阿里云社区电子书:技术之旅的精彩阅读
作为阿里云开发者社区的忠实粉丝,在2023年亲眼目睹阿里云社区推出了一系列精彩的电子书,带来了100+本精心制作的电子书,这些电子书涵盖了云原生、数据库、上云实践、架构运维等热门领域,为技术爱好者和开发者们提供了丰富的学习资源。那么本文就来简单分享和回顾一下2023年度阿里云社区电子书的丰富内容,并讨论一下读者对于这些电子书的喜好,以及期望在2024年看到的新书类别。
925 3
2023年度阿里云社区电子书:技术之旅的精彩阅读
|
设计模式 架构师 算法
限量!阿里技术官纯手打架构师进阶宝典全网首发,理论+项目齐飞
可能有些人会常常有这样的感觉,同是开发有些人比我工资高却什么代码都不写呢?当我听到这个问题的时候第一次映入脑海的就是:工程师的分类。 大家可以来看看Java工程师在招聘网站上的区分:
限量!阿里技术官纯手打架构师进阶宝典全网首发,理论+项目齐飞
|
消息中间件 安全 Java
全网首发!消息中间件神仙笔记,涵盖阿里十年技术精髓
消息中间件是分布式系统中的重要组件,在实际工作中常用消息中间件进行系统间数据交换,从而解决应用解耦、异步消息、流量削峰等问题,实现高性能、高可用、可伸缩和最终一致性架构。