Ansible(模块文件系统):找不到设备项

Ansible (module filesystem): Device item not found

尝试使用 Ansible 模块 "filesystem" 创建文件系统列表时,我遇到了以下错误消息:

failed: [host] (item=/dev/sdb) => {"failed": true, "item": "/dev/sdb", "msg": "Device item not found."}

我已验证 /dev/sdb 存在于目标 "host" 上,所以我不明白 Ansible 错误消息:

[~]# ls -l /dev/sdb
brw-rw---- 1 root disk 8, 16 Mar  1 09:06 /dev/sdb

这是我的任务定义:

- name: Create /grid* filesystems using "hadoop" options defined in /etc/mke2fs.conf
  filesystem:
    fstype: ext4
    dev: item
    opts: -T hadoop
  with_items: "{{ grid_block_devices }}"
[~]# cat roles/mke2fs/vars/main.yml 
---
grid_block_devices: [ '/dev/sdb','/dev/sdc','/dev/sdd','/dev/sde','/dev/sdf','/dev/sdg','/dev/sdh','/dev/sdi','/dev/sdj','/dev/sdk','/dev/sdl','/dev/sdm','/dev/sdn','/dev/sdo','/dev/sdp' ]

有人知道问题出在哪里吗?

您需要使用 Jinja2 表达式来引用变量值,否则您将字符串 item 分配给 dev 参数。错误信息是:

Device item not found.

找不到名为 item 的设备。

这样修正:

- name: Create /grid* filesystems using "hadoop" options defined in /etc/mke2fs.conf
  filesystem:
    fstype: ext4
    dev: "{{ item }}"
    opts: -T hadoop
  with_items: "{{ grid_block_devices }}"