ansible - 需要仅使用索引号从第一个寄存器变量引用到第二个变量
问题描述
我有两个寄存器变量,我循环第一个,我需要只使用索引号循环第二个。
我放了这个{{y.results[0].stdout}}
,但当然它只停留在第一个数组上。
我想在与寄存器 x 索引号相同的寄存器 y 上循环。
- shell: |
if [[ $(fdisk -l /dev/{{raw_prefix}}{{item}} | grep '/dev/{{raw_prefix}}{{item}}{{partition}}' | wc -l) = 0 ]]; then fdisk -l /dev/{{raw_prefix}}{{item}} | grep 'Disk /dev' | awk '{print $3}' ; fi
ignore_errors: true
register: x
with_items: "{{letters}}"
- shell: |
if [[ $(fdisk -l /dev/{{raw_prefix}}{{item}} | grep '/dev/{{raw_prefix}}{{item}}{{partition}}' | wc -l) = 0 ]]; then fdisk -l /dev/{{raw_prefix}}{{item}} | grep 'Disk /dev' | awk '{print $4}' ; fi
ignore_errors: true
register: y
with_items: "{{letters}}"
- shell: echo {{item.stdout}} - {{y.results[????].stdout}}
with_items: "{{x.results}}"
例如:
x[0].stdout=10 y[0].stdout=MB
x[1].stdout=5 y[1].stdout=GB
所以输出应该是:
10 - MB 5 - GB
基本上我正在创建一个分区剧本,以便我可以确定一个 10GB 的原始磁盘。
解决方案
我知道,但我想做的是从 sdb 循环到 sdx,你不知道那里有多少磁盘。因此,要捕获所有 10 个(awk $3),您必须使用 fdisk -l(与所有版本的 redhat 兼容),所以我还需要捕获 GB(awk $4)。但我发现这很难。所以我不能用_items循环来做,我要做的就是硬编码它,
外壳:回声 {{x.results[0].item.stdout}} - {{y.results[0].stdout}} >> {{pre_check_logs}}
外壳:回声 {{x.results[1].item.stdout}} - {{y.results[1].stdout}} >> {{pre_check_logs}}
顺便说一下这是github,
推荐阅读
- javascript - css网格系统中的模态定位
- django - 在一个更新视图中保存两个模型实例
- python - Django Rest Framework - 每次创建新模型 A 实例时自动创建新模型 B 实例
- javascript - VanillaJS - 单击按钮时更改具有相同类的特定按钮的样式
- reactjs - 如何使用 Graphql 以正确的方式获得结果
- c# - 我想添加由 Field Asana Api 创建的故事(评论)
- r - 如何(有效地)从访问过的地方列表中构建边缘列表?
- ios - 单击段控制表单元格内的按钮时无法执行 segue
- javascript - 柱形图水平刻度的透明背景
- apache-flink - 共享的检查点非常大