美文网首页
通过yaml渲染salt配置

通过yaml渲染salt配置

作者: 梦想做小猿 | 来源:发表于2017-03-16 18:07 被阅读0次

    说明

    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配置文件

    相关文章

      网友评论

          本文标题:通过yaml渲染salt配置

          本文链接:https://www.haomeiwen.com/subject/pabjnttx.html