我想知道事实的最后一个特征.我的 playbook 看起来像这样:

- name: sf
  set_fact:
    root_dev: "{{ ansible_mounts|json_query('[?mount == `/`].device') }}"

- name: e
  debug:
    msg: "{{ root_dev[:-1] }}"

问题在于本例中的输出总是:

"msg": []

或者如果我使用不带分号的攻略:

  debug:
    msg: "{{ root_dev[-1] }}"

然后,整个分区将成为输出:

"msg": "/dev/sda1"

我也不能引用整个root_dev,因为这是一个事实,我想得到它的价值的最后一个字符.split滤波器在这种情况下也不工作,因为设备可以是/dev/sda/dev/mapper/root_part_0等.在这种情况下,最好的 Select 是什么?

推荐答案

对问题的解释:

你得明白slicing works是怎么回事.给定用于测试的列表l1l2

  l1: [a]
  l2: [a, b, c]

索引[-1]给出最后一项(也是第一项)

  l1[-1]: a

切片[:-1]给出了除最后一项之外的所有项.结果是一个空列表,因为只有一项

l1[:-1]: []

通过切片l2来测试它

 l2[:-1]: [a, b]

解决方案:

root_dev是一个列表

  root_dev: "{{ ansible_mounts | json_query('[?mount == `/`].device') }}"

在你的情况下

  root_dev: ['/dev/sda1']

要获取分区的编号,请为列表中的第一个项目和项目中的最后一个字符编制索引

  root_dev[0][-1]: 1

完整的测试攻略示例

- hosts: localhost

  vars:

    root_dev: "{{ ansible_mounts | json_query('[?mount == `/`].device') }}"

  tasks:

    - setup:
        gather_subset: mounts
    # - debug:
    #     var: ansible_mounts

    - debug:
        var: root_dev
    - debug:
        var: root_dev[0][-1]

Python相关问答推荐

具有多个选项的计数_匹配

大Pandas 胚胎中产生组合

我在使用fill_between()将最大和最小带应用到我的图表中时遇到问题

将jit与numpy linSpace函数一起使用时出错

如何在turtle中不使用write()来绘制填充字母(例如OEG)

实现神经网络代码时的TypeError

如何使用Numpy. stracards重新编写滚动和?

在输入行运行时停止代码

为什么Python内存中的列表大小与文档不匹配?

如果包含特定值,则筛选Groupby

在numpy数组中寻找楼梯状 struct

Python 3试图访问在线程调用中实例化的类的对象

为用户输入的整数查找根/幂整数对的Python练习

Pandas 数据帧中的枚举,不能在枚举列上执行GROUP BY吗?

ModuleNotFoundError:Python中没有名为google的模块''

极点替换值大于组内另一个极点数据帧的最大值

仅取消堆叠最后三列

根据过滤后的牛郎星图表中的数据计算新系列

奇怪的Base64 Python解码

如何在networkx图中提取和绘制直接邻居(以及邻居的邻居)?