【问题标题】:Ansible : How to get a specific vars on a nested varsAnsible:如何在嵌套变量上获取特定变量
【发布时间】:2020-09-22 05:40:46
【问题描述】:

我试图弄清楚如何仅获取特定 var 并在嵌套/复杂 var 中获取其值

我的 ansible 角色有这个 sn-p default/main.yml

disk_additional_disks:
   - disk: "/dev/sdb"
     fstype: xfs
     mount_options: rw,nodev,noatime,nobarrier,inode64
     mount: "{{ gp_data_mount_point }}"
     vgname: "{{gp_lvm_vg_name }}"

   - disk: "/dev/sdc"
     fstype: xfs
     mount_options: rw,nodev,noatime,nobarrier,inode64
     mount: "{{ gp_data_mount_point }}"
     vgname: "{{gp_lvm_vg_name }}"

   - disk: "/dev/sdd"
     fstype: xfs
     mount_options: rw,nodev,noatime,nobarrier,inode64
     mount: "{{ gp_data_mount_point }}"    
     vgname: "{{gp_lvm_vg_name }}"

我试图只获取disk 的值,即/dev/sdb/dev/sdc/dev/sdd

并创建了一个打印成一行的剧本

- name: Show  disk
  debug:
     msg: "{{ item| json_query('[].disk') }}" 
  with_items: "{{ disk_additional_disks }}"    

假设输出为:

'/dev/sdb','/dev/sdd','/dev/sdc'

/dev/sdb,/dev/sdd,/dev/sdc

任何人都可以帮助我,因为我真的很难解决这个问题。

我也看过类似的问题,但我想用剧本来实现它

【问题讨论】:

  • 发布变量disk_additional_disks 的匿名版本将有助于回答您的问题。

标签: ansible


【解决方案1】:

您可以查看嵌套变量循环的 ansible 文档here

默认情况下,角色不会向 playbook 公开默认变量。您可以查看这些线程以获取更多信息:thread1thread2

正如@VladimirBotka 指出的,您可以使用public: true 参数和include_role 来公开它们。

但是,如果您想对其进行硬编码,您可以使用include_vars 将它们明确地包含在您的剧本中。这是documentation

- hosts: localhost
  tasks:
    - include_vars: "roles/your-role/defaults/main.yml"
    - name: Show  disk
      debug:
        msg: "{{ disk_additional_disks|subelements('disk') }}" 

【讨论】:

  • 引用:“角色不向剧本公开默认变量”。默认情况下,它们不会。这是可选的。见public
  • @VladimirBotka 谢谢!我没见过。
【解决方案2】:

使用 mapjson_query。下面的两个任务给出相同的结果

    - debug:
        msg: "{{ disk_additional_disks|
                 map(attribute='disk')|
                 list }}"
    - debug:
        msg: "{{ disk_additional_disks|
                 json_query('[].disk') }}"

(json_query需要安装JMESPATH)。

【讨论】:

    猜你喜欢
    • 2020-12-09
    • 2015-08-10
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多