使用 ad-hoc 命令的 Ansible 过滤器

标签 ansible

如何使用 ad-hoc 命令过滤 nocache block 或 free block ?我尝试了 ansible centos1 -m setup -a 'filter=ansible_memory_mb.nocache' 但没有将其过滤掉。

ansible centos1 -m setup -a 'filter=ansible_memory_mb'
centos1 | SUCCESS => {
    "ansible_facts": {
        "ansible_memory_mb": {
            "nocache": {
                "free": 11808,
                "used": 926
            },
            "real": {
                "free": 10686,
                "total": 12734,
                "used": 2048
            },
            "swap": {
                "cached": 0,
                "free": 4096,
                "total": 4096,
                "used": 0
            }
        },
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false
}

最佳答案

如果你想尝试使用ansible命令,你必须与grep和head混合使用:

ansible centos -m setup -a 'filter=ansible_memory_mb' | grep -Eo [0-9]+ | head -1

但您应该使用 playbook:var 结果将包含所需的值。

- name: test
  hosts: centos1
  
  tasks:
    - name: set vars
      set_fact: result="{{ ansible_memory_mb.nocache.free}}" 
    - name: show
      debug:
        var: result

结果:

TASK [show] ***********************************************************************************************************************************************************************
ok: [localhost] => {
    "result": "712"
}

关于使用 ad-hoc 命令的 Ansible 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69594223/

相关文章:

Ansible 查找过滤器仅在 hashmap 中有多个项目时才起作用

ansible - 任务跳过 "Conditional result was False"

ansible - 在哪里可以获得 Ansible 预定义变量的列表?

Ansible 不允许剧本级别的环境

windows - 使用 Ansible 在 Windows 客户机上映射网络驱动器

elasticsearch - Elasticsearch Beats的Jinja模板

Ansible - 如何使用 or 运算符

loops - 在 Ansible 中跳过整个循环

ruby-on-rails - 如何使用 Ansible 检查文件中是否存在行?

ansible - 使用 Ansible 升级 APT 包的正确方法是什么?