Salt Stack - Grains

本文介绍Salt Stack中的Grains概念及应用,包括查看命令、自定义方法及应用场景等,帮助读者理解如何利用Grains进行配置管理和目标匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据系统 - Grains

Grains是Salt的组件,在minion启动时收集信息。

Grains查看命令

salt '*' grains.ls //查看内容
salt '*' grains.items //查看内容和值
salt '*' grains.get name //查看名为name的grains

可以看到grains中包含了minion的配置信息,比如ip地址、操作系统等。

Grains的使用

命令中使用

salt -G os:nginx test.ping

这里使用-G来指定在os值为nginx的target中运行test.ping。由于我们安装的操作系统为ubuntu,所以命令返回为:

No minions matched the target. No command was sent, no jid was assigned.

将os改为Ubuntu:

salt -G os:nginx test.ping

可以得到相应的返回值。

在sls文件中使用

修改top.sls文件为:

base:
    'os:Ubuntu'
        - match: grain
        - nginx

这里使用grains来匹配target,所以必须执行match为grain。

自定义Grains

由于Grains是收集的minion的信息,所以自定义Grains需要在minion在进行。
编辑/etc/salt/minion文件,这里将grains注释去掉

grains:
  roles:
    - webserver
    - memcache

重启salt-minion,并运行salt ‘*’ grains.get roles来查看grains。

Grains应用场景

  • Grains可以在state系统中使用,用于配置管理模块
  • Grains可以在target中使用,用来匹配Minion,比如使用操作系统,使用-G选项
  • Grains可以用于信息查询,Grains保存着收集到的客户端信息。可以将这些信息保存在数据库中并自定义页面
    来管理minion机器。
`stack->data[++stack->top1] = value` 和 `stack->data[stack->top1++] = value` 是两种不同的写法,但在这个特定的情况下,它们实际上是等价的。 假设 `top1` 的初始值为 0,并且执行这两个语句之前,栈 `stack` 已经被正确初始化。那么,这两个语句都将把 `value` 存储到 `stack->data[0]` 中,并将 `top1` 的值增加 1。 下面是对这两个语句的解释和执行过程: 1. `stack->data[++stack->top1] = value`: - `++stack->top1` 表达式会先对 `top1` 的值进行自增操作,然后返回自增后的结果(即先执行 `++stack->top1`,再使用该值)。 - 执行完 `++stack->top1` 后,`top1` 的值变为 1。 - 然后,将 `value` 存储到 `stack->data[1]` 中。 2. `stack->data[stack->top1++] = value`: - `stack->top1++` 表达式会先使用 `top1` 的当前值,然后再对 `top1` 的值进行自增操作。 - 首先,将 `value` 存储到 `stack->data[0]` 中(因为此时 `top1` 的值仍为 0)。 - 然后,执行完 `stack->top1++` 后,`top1` 的值变为 1。 在这个特定的情况下,无论使用哪种写法,最终结果都是将 `value` 存储到 `stack->data[0]` 中,并将 `top1` 的值增加到 1。因此,这两种写法在功能上是等效的。 需要注意的是,这种等效性只在这个特定的语句中成立。在其他上下文中,这两种写法可能会产生不同的结果。因此,在编写代码时,根据具体的语义和需求选择适当的写法是很重要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值