Ansible get变量,键中带点

时间:2018-09-17 15:49:15

标签: ansible

如果要激活内核中的用户名称空间(CentOS),我希望Ansible读出。 当我运行时,相应的值可见

- debug:
    msg: "{{ ansible_cmdline }}"

这给了我输出:

 "msg": {
    "BOOT_IMAGE": "/vmlinuz-...",
    "LANG": "...",
    "crashkernel": "...",
    "namespace.unpriv_enable": "...",
    "quiet": ...,
    "rd.lvm.lv": "...",
    "rhgb": ...,
    "ro": ...,
    "root": "...",
    "user_namespace.enable": "1"
}

但是,我无法直接查询子项:

- debug:
    msg: "{{ ansible_cmdline.user_namespace.enable }}"

Ansible将.enable解释为另一个子项: The task includes an option with an undefined variable. The error was: 'dict object' has no attribute 'user_namespace'

如何访问密钥"user_namespace.enable"

1 个答案:

答案 0 :(得分:0)

自己解决:

要用点寻址键,请使用带单引号的数组符号代替点符号,即:

- debug:
    msg: "{{ ansible_cmdline['user_namespace.enable'] }}"

这将返回值。

cf .: Ansible FAQ