首页 > 解决方案 > 如何将列表中的 Ansible 注册变量存储到单独的变量中

问题描述

我有一本应该在 EC2 实例中创建 LVM 卷的剧本。EC2 实例属于实例类 m5ad.8xlarge,因此 EC2 实例附带两个 600GB 的实例存储。

我正在获取 lsblk 的输出,以将输出范围缩小到实例存储设备,如下所示:-

    shell: "lsblk | grep -v nvme0 | grep -v NAME | awk '{print $1}'"
    register: lvm_out

以上给出: -

{
    "lvm_out.stdout_lines": [
        "nvme1n1",
        "nvme2n1"
    ]
}

现在我需要在两个设备上一起运行 pvcreate,如下所示:-

pvcreate /dev/nvme1n1 /dev/nvme2n1

我想知道是否可以使用“set_fact”,但不知道如何在这里使用它。

你们能帮帮我吗?

标签: ansibleansible-2.xansible-facts

解决方案


例如

    - set_fact:
        cmd: "pvcreate {{ lvm_out.stdout_lines|
                          map('regex_replace', _regex, _replace)|
                          join(' ') }}"
      vars:
        _regex: '(^.*$)'
        _replace: '/dev/\1'

创建字符串

        cmd: pvcreate /dev/nvme1n1 /dev/nvme2n1

推荐阅读