Salt整合reclass测试


reclass基本介绍

reclass安装

reclass配置及测试

reclass与salt整合测试

总结

reclass基本介绍

项目地址: https://github.com/madduck/reclass/tree

手册地址: http://reclass.pantsfullofunix.net/index.html

reclass, 全称Recursive External Node Classification, 可以与自动化管理工具结合, 为其提供ENC服务. reclass作者认为, ENC软件应该提供如下两个功能:


提供组(group)中节点(node)及组关系(group memberships)的信息

提供节点指定的信息, 如变量

对此, reclass定义了如下四种元素:


元素 描述

node 一个节点, 通常是一个计算机

class 一个分类(categroy),tag,特性(feature)或角色(role), 支持嵌套和继承

application 一组行为(behaviour)

parameter 节点指定的变量,可以通过class进行继承

reclass在继承中, 如果parent中变量不存在, 则新增,如果存在同一变量, 类型为字符串, 则会进行覆盖. 如果变量为list类型, 则进行追加


reclass安装

git clone https://github.com/madduck/reclass.git

cd reclass

python setup.py install

reclass配置及测试

测试目标: 通过reclass实现ntp变量的灵活扩展


通用信息, /srv/reclass/classes/ntp-common.yml


parameters:

  ntp:

    ntpserver:

      - 0.asia.pool.ntp.org

      - 1.asia.pool.ntp.org

redhat系统继承ntp-common并进行一些特殊定制, /srv/reclass/classes/ntp-redhat.yml


classes:

  - ntp-common


parameters:

  ntp:

    pkg: ntp

    service: ntpd

    ntpserver:

      - 2.asia.pool.ntp.org

      - 3.asia.pool.ntp.org

配置node, /srv/reclass/nodes/salt-minion-01.yml


classes:

  - ntp-redhat

测试节点分类信息


bc(sourceCode bash). reclass -b /srv/reclass --nodeinfo salt-minion-01


输出结果


__reclass__:

  environment: base

  name: salt-minion-01

  node: salt-minion-01

  timestamp: Mon Feb 17 09:29:53 2014

  uri: yaml_fs:///srv/reclass/nodes/salt-minion-01.yml

applications: []

classes:

- ntp-common

- ntp-redhat

environment: base

parameters:

  ntp:

    ntpserver:

    - 0.asia.pool.ntp.org

    - 1.asia.pool.ntp.org

    - 2.asia.pool.ntp.org

    - 3.asia.pool.ntp.org

    pkg: ntp

    service: ntpd

从输出结果看, 与reclass手册描述一致


reclass与salt整合测试

Salt在0.17版本中,增加了 reclass的支持 .


Salt与reclass元素对应关系


reclass元素 Salt术语

nodes hosts

classes (none)

applications states

parameters pillar

测试目标: 通过reclass为salt minion提供对应的ntp pillar信息


测试环境: Salt Master/Minion结构, 版本0.17.5


配置salt master, /etc/salt/master



......

reclass: &reclass

storage_type: yaml_fs

inventory_base_uri: /srv/reclass


master_tops:

  reclass: *reclass


ext_pillar:

  - reclass: *reclass

重启salt master


service salt-master restart

测试salt-minion-01对应的ntp pillar


salt 'salt-minion-01' pillar.item ntp

输出结果


salt-minion-01:

    ----------

    ntp:

        ----------

        ntpserver:

            - 0.asia.pool.ntp.org

            - 1.asia.pool.ntp.org

            - 2.asia.pool.ntp.org

            - 3.asia.pool.ntp.org

        pkg:

            ntp

        service:

            ntpd

达成测试目标


总结

salt pillar当前较弱, 只支持include, 并不支持extend等更高级的功能. 通过与reclass的整合, 借助reclass灵活的继承功能(支持多级继承), 为Salt提供专业的ENC服务, 弥补了pillar的不足.


当前reclass的功能相对较弱, 不过可以看到的是如Class subdirectories这类实用的功能已经在to-do list中, 期待reclass功能更为强大.