1、salt grains

常用命令

salt saltminion grains.items salt saltminion grains.items sanitize=True

(sanitize=True清理,添加该参数,将DOMAINNAME替换为主机名)

salt saltminion02 grains.item roles #获取指定的值

salt saltminion02 saltutil.sync_grains # 同步grains的值(用于文件添加的grains)

salt saltminion sys.list_functions grains # 列出grains 或者其他模块支持的方法

​ salt saltminion sys.list_functions fc7 # 列出自定义的模块

salt saltminion sys.doc grains # 查看grains的使用文档

​ salt saltminion sys.doc hosts.add_host # 查看某个模块的用法

grains设置(grains.get 使用)

添加grains文件,(/etc/salt/minion.d/中的conf文件,需修改minion配置文件,并同步值)

sls文件,grains模块可以设置,(/etc/salt/grains,自动同步,可直接取用)

*自定义grains优先级:*

  minion配置文件定义 > master端自定义grains脚本 > master端grains模块定义。

salt '*' grains.setval key "{'sub-key': 'val', 'sub-key2': 'val2'}" # 设置key 值

salt '*' grains.setvals "{'key1': 'val13', 'key2': 'val23'}"

salt '*' grains.get key:sub-key

salt '*' grains.set 'apps:myApp4' '{port0: 2300 ,port5: 2305}'

salt '*' grains.set 'apps:myApp2' '{port0: 2300}'

salt saltminion grains.append baseenv java # 添加一个列表

grains在sls文件中调用,判断

列表

查看baseuser值
salt '*' grains.get baseuser
saltminion02:
    - logstash
    - redis

sls文件实例
cat testfor.sls
{% for user in grains['baseuser'] %}

{{ user }}:
  user.present:
    - home: /home/{{ user }}
    - shell: /bin/bash
{% endfor %}

非列表

[root@salttest judge]# cat testlist.sls
{% set pythonpath = salt['grains.get']('pythonpath') %}
addfile:
  file.managed:
    - name: /tmp/test.txt
    - contents:
      - This is line 1
      - This is line 2
      - {{ pythonpath }}
[root@salttest judge]#