在SaltStack上可以执行:
salt -G 'os:CentOS' test.version
-G
表示使用grains过滤受管节点。 SaltStack 的 Grains 相当于 Ansible 的 facts。 SaltStack 在控制器上缓存grain,所以这个功能不是问题。 Ansible 也有一些事实缓存,但看起来没有太多用处。 Ansible 可以实现类似的功能吗?
我知道这可以使用自定义动态库存模块或通过在剧本中嵌入一些代码来完成,但我正在寻找更临时的东西。
问:“Ansible 可以实现类似的功能吗?”
稍微根据行为就有可能得到结果。如果启用了缓存事实,则可以将它们用于条件临时命令。
ansible test --ask-pass --ask-become-pass --become --module-name shell --args '{% if ansible_facts.distribution == "RedHat" %}cat /etc/redhat-release{% else%}exit 0{% endif %}'
SSH password:
BECOME password[defaults to SSH password]:
redhat.example.com | CHANGED | rc=0 >>
Red Hat Enterprise Linux release 8.10 (Ootpa)
centos.example.com | CHANGED | rc=0 >>