通过yaml渲染salt配置

说明

yaml模块类似xml的标记语言,一般用在配置文件中,比如salt

实例

yaml文件(salt配置文件为例):

[root@salt-master ~]# cat master
file_roots:
  base:
    - /srv/salt/base
    - /srv/salt/base1
  prod:
    - /srv/salt/prod
pillar_roots:
  base:
    - /srv/pillar/base
  prod:
    - /srv/pillar/prod

要在配置文件中添加主机组:

[root@salt-master ~]# cat salt-conf.py
#!/usr/bin/env python
#coding=utf8

import yaml


with open("master") as f:

    salt_conf = yaml.load(f)

    salt_conf["nodegroups"] = {'web-app':"L@salt-node1,salt-node2","db-mysql":"salt-node1","redis":"salt-node2"}


with open("salt.conf","w") as f:

    yaml.dump(salt_conf,f,default_flow_style=False)

生成的salt.conf配置文件:

file_roots:
  base:
  - /srv/salt/base
  - /srv/salt/base1
  prod:
  - /srv/salt/prod
nodegroups:
  db-mysql: salt-node1
  redis: salt-node2
  web-app: L@salt-node1,salt-node2
pillar_roots:
  base:
  - /srv/pillar/base
  prod:
  - /srv/pillar/prod

代码解释

  • yaml.load: 将yaml配置文件加载成一个字典对象
  • salt_conf["nodegroups"] = xxxx:添加需要增加的配置项到生成的字典对象中
  • yaml.dump(salt_conf,f,default_flow_style=False):将新增后的字典对象dump成配置文件

注意:yaml.dump方法中添加default_flow_style=False,如果没有该参数,则dump成配置文件后,yaml文件不会解析列表,如下:

file_roots:
  base: [/srv/salt/base, /srv/salt/base1]
  prod: [/srv/salt/prod]
pillar_roots:
  base: [/srv/pillar/base]
  prod: [/srv/pillar/prod]

扩展:在运维平台中,salt rest api tgt参数只能指定一台机器和salt主机组,不能指定具体主机列表,所以要使用salt,可以根据cmdb中的分组来获取主机列表,然后渲染到salt配置文件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,828评论 19 139
  • 学习地址[http://tech.mainwise.cn/?p=438] 更新于 3.25 23:16 salt简...
    J书越来越垃圾了阅读 31,072评论 9 36
  • 说明本次redis集群安装在rhel6.8 64位机器上,redis版本为3.2.8,redis的gem文件版本为...
    读或写阅读 15,424评论 3 9
  • 一.ansible (1) ansible: ansible是一款新出现的自动化运维系统,基于python开发并集...
    楠人帮阅读 6,028评论 0 8
  • “我与你,恰似半夏风,一场相遇如一场梦。 而后啊,你也不过是一枕黄粱。 如月光照过昨夜的湖面。 各自皎洁,各自珍重...
    ONERR阅读 1,468评论 0 0

友情链接更多精彩内容