Ansible Parted, запускать только при отсутствии разделов

Я хочу запускать операцию parted только в том случае, если на этом устройстве в настоящее время нет разделов. Указанные части могли быть сделаны ранее или вручную вне ansible в прошлом, и в этом случае их не следует изменять и пропускать задачу.

name: "Add Disk" ## this needs amending to skip if any partition is already present on that device
    become: true
    parted:
      device: /dev/xvdf
      number: 1
      state: present
      flags: [ lvm ]
      label: gpt
      name: primary

Однако в настоящее время при запуске этого, даже если раздел уже существует, вносятся изменения, и башня печатает ошибку, подобную приведенной ниже, предполагая, что она вносит изменения (после перезагрузки система перестала загружаться)

"_ansible_no_log": false,
    "err": "Error: Partition(s) 1 on /dev/xvdf have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use.  As a result, the old partition(s) will remain in use.  You should reboot now before making further changes.\n",

Я надеялся, что это может быть достигнуто с помощью условия when, получающего ansible_fact, подобное приведенному ниже?

when: ansible_facts.device.xvdf is not defined

но я не могу найти правильный факт или синтаксис для этой идеи?

из документации я надеялся, что модуль parted был достаточно идемпотентным, чтобы распознать, существует ли уже раздел и не измениться, но я думаю, что если указанная конфигурация в любом случае отличается, он пытается ее применить

Целевая система — это AWS EC2 с RHEL7, а подключенный диск — это вторичный (без полномочий root) зашифрованный том EBS.

красная шапка

1 ответ
1

Попробуйте поиграть с этим, чтобы увидеть, что это поможет вам:

  tasks:
  - name: Debug
    debug:
      msg: "No xvdf1"
    when: ansible_devices.xvdf.partitions.xvdf1 is not defined

Крис Ванденберг

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *