salt manage grains

salt 管理对象属性

  1. salt grains组件

    1
    2
    3
    Grains是SaltStack组件中非常重要的组件之一,它是SaltStack记录Minion的一些静态信息的组件,例如:CPU,内存,磁盘,网络信息等.
    Minions的Grains信息是Minions启动的时候采集汇报给Master的,在实际应用环境中我们需要根据自己的业务需求去自定义一些Grains.
    Grains存储的是静态信息,静态信息,静态信息!!!
  2. 查看minion所有grains信息

    1
    salt minion grains.items
  3. 自定义grains方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    方法一: 通过Minion配置文件定义
    1.修改配置文件/etc/salt/minion.d/grains:
    grains:
    roles:
    - webserver
    - memcache
    deployment: datacenter4
    cabinet: 13
    cab_u: 14-15
    2.重启salt-minion
    3.salt-master验证
    salt 'minion' grains.item roles

    方法二: 通过Grains相关模块定义
    1.定义grains
    salt 'minion' grains.append hosttype 'online'
    salt 'minion' grains.item hosttype
    或:
    salt 'minion' grains.setvals "{'idc':'Z1','city':'BJ'}"
    salt 'minion' grains.item idc

    方法三: 通过Python脚本定义
    1.查看file_roots
    [root@salt-master ~]# cat /etc/salt/master
    file_roots:
    base:
    - /mnt/data/salt.repo/salt/base
    2.创建_grains目录
    [root@salt-master ~]# mkdir /mnt/data/salt.repo/salt/base/_grains
    3.创建python脚本
    [root@salt-master ~]# cat /mnt/data/salt.repo/salt/base/_grains/get_time.py
    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    from datetime import datetime
    def get_server_time():
    grains = {}
    grains['server_time'] = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    return grains
    4.使用sync_grains命令同步脚本到minion主机
    [root@salt-master ~]# salt 'salt-minion-187' saltutil.sync_grains
    salt-minion-187:
    - grains.get_time
    5.通过grains.item获取相关信息
    [root@salt-master ~]# salt 'salt-minion-187' grains.item server_time
    salt-minion-187:
    ----------
    server_time:
    2017-11-14 17:05:33
  4. grains优先级

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    grains配置优先级:
    minion端自定义grains配置(/etc/salt/minion.d/grains.conf或/etc/salt/minion) >
    master端自定义grains脚本(minion端/var/cache/salt/minion/extmods/grains目录下) >
    master端Grains模块定义(minion端/etc/salt/grains文件)

    注意: 当同步自定义grains脚本时,最好如下操作
    [root@salt-master ~]# mv /mnt/data/salt.repo/salt/base/{_grains,_grains.bak}
    [root@salt-master ~]# salt 'salt-minion-187' saltutil.sync_grains
    [root@salt-master ~]# mv /mnt/data/salt.repo/salt/base/{_grains.bak,_grains}
    [root@salt-master base]# salt 'salt-minion-187' saltutil.sync_grains
  5. 查看相关grains命令和帮助

    1
    2
    salt minion sys.list_functions grains
    salt minion sys.doc grains