技术好文:saltstackpillar

简介: 技术好文: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',{})

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Web App开发 Ubuntu 安全
【已解决】ubuntu 16.04安装最新版本google chrome出错, 旧版本chrome浏览器安装流程
【已解决】ubuntu 16.04安装最新版本google chrome出错, 旧版本chrome浏览器安装流程
2230 2
|
6月前
|
消息中间件 Java Kafka
Java 事件驱动架构设计实战与 Kafka 生态系统组件实操全流程指南
本指南详解Java事件驱动架构与Kafka生态实操,涵盖环境搭建、事件模型定义、生产者与消费者实现、事件测试及高级特性,助你快速构建高可扩展分布式系统。
334 7
|
Android开发
autojs下拉刷新
牙叔教程 简单易懂
1212 0
|
前端开发 JavaScript Java
计算机Java项目|图书大厦图书管理系统的设计与实现
计算机Java项目|图书大厦图书管理系统的设计与实现
239 0
|
JavaScript 前端开发 安全
80 行 JS 代码实现页面添加水印:文字水印、多行文字水印、图片水印、文字&图片水印
80 行 JS 代码实现页面添加水印:文字水印、多行文字水印、图片水印、文字&图片水印 1. 信息标识: 水印可以用于标识文档的所有者、保密级别、状态或其他相关信息,帮助用户更好地理解文档内容的属性。 2. 版权保护: 在文档中添加水印可以帮助保护内容的版权,防止他人未经授权地复制、转载或篡改内容。 3. 安全保护: 对于敏感信息或机密文档,添加水印可以帮助防止信息泄露,提高文档的安全性。 4. 提升专业性: 在一些场景下,如商业报告、合同文件等,添加水印可以增加文档的专业性和正式性。 5. 防止截屏或拷贝: 在网页中添加水印可以防止用户通过截屏或复制粘贴等方式非法获取文档内容。
533 1
80 行 JS 代码实现页面添加水印:文字水印、多行文字水印、图片水印、文字&图片水印
|
12月前
|
人工智能 算法
大模型不会推理,为什么也能有思路?有人把原理搞明白了
大模型(LLMs)在推理任务上表现出与人类不同的问题解决思路。最新研究《Procedural Knowledge in Pretraining Drives Reasoning in Large Language Models》发现,大模型通过合成程序性知识来完成推理任务,而非简单检索答案。这为理解其推理能力提供了新视角,并指出了改进方向,如设计更有效的算法和使用更大规模数据。论文链接:https://arxiv.org/abs/2411.12580。
415 3
|
域名解析 弹性计算 应用服务中间件
玩转Linux系统【五】安装Nginx搭建网站
Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 在高连接并发的情况下,Nginx是Apache服务器不错的替代品。
645 0
玩转Linux系统【五】安装Nginx搭建网站
|
存储 分布式计算 Hadoop
ClickHouse(01)什么是ClickHouse,ClickHouse适用于什么场景
ClickHouse是一款高性能的列式存储OLAP数据库,由俄罗斯的Yandex公司开发,用于在线分析处理(OLAP)。它提供秒级大数据查询,适用于商业智能、广告流量等领域。ClickHouse速度快的原因包括列式存储、数据压缩、向量化执行和多线程分布式处理。然而,它不支持事务,不适合OLTP操作。相比Hadoop生态中的查询引擎,ClickHouse在大量数据查询上表现出色。一系列的文章详细介绍了ClickHouse的各个方面,包括安装、表引擎和使用场景。
2586 2
ClickHouse(01)什么是ClickHouse,ClickHouse适用于什么场景
|
Java 数据处理 索引
JAVA中的插入操作:深入解析与实现
JAVA中的插入操作:深入解析与实现
442 1
|
运维 监控 安全
构建高效稳定的云基础设施:自动化运维策略与最佳实践
【5月更文挑战第22天】 随着云计算的日益普及,企业对云基础设施的依赖程度不断提高。有效的自动化运维策略成为确保系统稳定性、提升响应速度和降低人为错误的关键。本文将探讨一系列高效的自动化工具和流程,以及它们在云环境中的最佳实践,旨在为读者提供一套可行的方法论,用于构建和维护一个可靠且灵活的云基础设施。我们将重点讨论自动化部署、监控、故障恢复及安全性管理,并提出相应的建议和解决方案。