【发布时间】:2015-08-25 21:37:14
【问题描述】:
我有一堆服务器,上面有四个物理驱动器(/dev/sda、sdb、sdc 和 sdd)。 sda 上安装了操作系统。
我需要格式化除 sda 之外的每个驱动器。我需要检查每个驱动器上是否有数据。如果是这样,那么我不应该格式化它。
# This will get all physical disks (sda, sdb, sdc, etc) and assign them to disk_var
- name: Get disks
set_fact: disk_var="{{hostvars[inventory_hostname]["ansible_devices"].keys()|list}}"
- name: Check if the disk is partitioned and also ignore sda
stat: path=/dev/{{item}}1
with_items: disk_var
when: item != 'sda'
register: base_secondary_partition_{{item}}
- name: Create GPT partition table
command: /sbin/parted -s /dev/{{item}} mklabel gpt
with_items: disk_var
when: item != 'sda' and base_secondary_partition_{{item}}.stat.exists == false
格式化这些驱动器显然涉及更多步骤,但在创建 GPT 分区表时在最后一个任务中失败。
这是它运行时的样子。你会看到它在最后一个任务中失败了:
TASK: [role | Get disks] ******************************************************
ok: [server1.com]
TASK: [role | Check if the disk is partitioned] *******************************
skipping: [server1.com] => (item=sda)
ok: [server1.com] => (item=sdd)
ok: [server1.com] => (item=sdb)
ok: [server1.com] => (item=sdc)
TASK: [role | Create GPT partition table] *************************************
fatal: [server1.com] => error while evaluating conditional: base_secondary_partition_sdd.stat.exists == false
FATAL: all hosts have already failed -- aborting
知道如何检查条件base_secondary_partition_{{item}}.stat.exists 吗?我需要确保如果驱动器上有数据,它不会格式化它。
【问题讨论】:
标签: ansible