• salt之grains组件


    grains是saltstack最重要的组件之一,作用是收集被控主机的基本信息,这些信息通常都是一些静态类的数据,包括CPU、内核、操作系统、虚拟化等,在服务器端可以根据这些信息进行灵活定制,管理员可以利用这些信息对不同业务进行个性化配置。----其实类似于Ansible的Facts

    grains常用操作命令:

    salt '*' grains.ls   #获取主机的grains项信息(列出grains相关模块信息)

    salt '*' grains.items   #获取主机的所有grains信息

    salt '*' grains.item os  #获取主机单项grains数据

    定义grains数据

    方法有两种,其中一种为在被控主机定制配置文件,另一种是通过主控端扩展模块API实现,区别是模块更灵活,可以通过Python编程动态定义,而配置文件只适合相对固定的键与值。

    1、被控端主机定制grains数据

    ssh登录一台被控机,配置文件定制的路径为/etc/salt/minion,参数为default_include:minion.d/*.conf,具体操作如下:

    vim /etc/salt/minion.d/hostinfo.conf

    grains:

      roles:

        - webserver

        - memcache

      deployment: datacenter3

      cabinet: 13

    重启被控主机salt-minion服务,使之生效。验证结果在主控端主机运行:salt 'myhost' grains.item roles deployment cabinet 查看结果应该如上。

    2、主控端扩展模块定制grains数据

    首先在主控端编写Python代码,然后将Python文件同步到被控主机即可生效。在主控端base目录/srv/salt下生成_grains目录,执行 install -d /srv/salt/_grains 开始编写代码,实现获取被控主机允许最大打开文件数的grains数据。

    #vim /srv/salt/_grains/grains_openfile.py

    import os,sys,commands
    def grains_openfile():
        grains = {}
        _open_file=65533
        try:
            getulimit=commands.getstatusoutput('source /etc/profile;ulimit -n')
        except Exception,e:
            pass
        if getulimit[0]==0:
           _open_file=int(getulimit[1])
        grains['max_open_file'] = _open_file
        return grains
    • grains_openfile()定义一个获取最大打开文件数的函数,函数名称没有要求,符合Python函数命名规则即可。
    • grains={} 初始化一个grains字典,变量名一定要用grains,以便saltstack识别
    • grains['max_open_file']=_open_file 将获取的Linux ulimit -n的结果值赋予grains['max_open_file'],其中"max_open_file"就是grains的项,_open_file就是grains的值。

    在主控端同步模块:salt 'myhost' saltutil.sync_grains 或 salt 'myhost' saltutil.sync_all,此时文件已经同步到被控端主机以下目录中,如下:

    /var/cache/salt/minion/extmods/grains/grains_openfile.py和grains_openfile.pyc

    /var/cache/salt/minion/files/base/_grains/grains_openfile.py

    /var/cache/salt/minion/extmods/grains/    为扩展模块文件最终存放位置,刷新模块后将在同路径下生成字节码pyc ;

    /var/cache/salt/minion/files/base/_grains/ 为临时存放位置

    在主控端进行校验,执行salt 'myhost' grains.item max_open_file

     ------------------------------------------------------------------

    1、执行命令时,查找minion目标(targeting)常用有三种方式:

     salt ‘bash’ command         #根据bash形式匹配主机(如host1、host2)

     例:# salt 'host*' test.ping       

     salt –E ‘RE’ command          #--pcre,使用正则表达式匹配主机  

     例:# salt -E '(web|mysql)' test.ping  

     salt –N group command           #--nodegroup,使用分组匹配,前提已经做好分组

     例:# salt -N web test.ping

     salt –L ‘host1,host2’ command     #--list,根据主机名

     例:# salt -L 'host1,host2' test.ping

     salt -G 'os:CentOS' command        #--grains,根据grains获取的信息来查

    参考文档:http://lizhenliang.blog.51cto.com/7876557/1638581

  • 相关阅读:
    HTTP基础及telnet简单命令
    【详解】并查集高级技巧:加权并查集、扩展域并查集
    二叉树中两节点的最近公共父节点(360的c++一面问题)
    (用POJ 1160puls来讲解)四边形不等式——区间dp的常见优化方法
    详细讲解Codeforces Round #625 (Div. 2)E
    详细讲解Codeforces Round #625 (Div. 2) D. Navigation System
    详细讲解Codeforces Round #624 (Div. 3) F. Moving Points
    详细讲解Codeforces Round #624 (Div. 3) E. Construct the Binary Tree(构造二叉树)
    POJ
    新手建站前需要做哪些准备?
  • 原文地址:https://www.cnblogs.com/wjoyxt/p/5088032.html
Copyright © 2020-2023  润新知