ansible – centos-home があったら処理を中止する

DRBD の構成を作る際、ディスク構成が LVM で /home パーティションがある(= /dev/mapper/centos-home がある)場合事前に root パーティションにマージしたいが、 さりとて ansible 内で自動マージするのは(できるかもしれないけど)危険な香りがするので、一旦中止するためのしくみ。

- name: パーティションの構成を検査
# 以下、failed_when を成立させるためのデバッグ用:
# command: echo 'AAAAA centos-home BBBBB'
  command: mount
# command で mount を使うと「mount モジュールでやれないか検討しる」
# という警告が出てうざいので抑止する。
  args:
    warn: no
  register: mount

# - debug: var=mount

- name: /dev/mapper/centos-home がある場合は処理中断
  command: echo "LVM の centos-home は手動でマージしてください。"
  failed_when: "'centos-home' in mount.stdout"

in を使った条件の書き方にちょっと癖がある。まず failed_when の条件全体をクオートする必要がある。さらに、in の対象となる文字列全体(今回の場合は ‘centos-home’ )を明示的ににクオートしてやる必要があるみたい。

別解

fail を使ったほうがスマートみたい。また df でチェックすれば警告の対応も不要なのでベター。

- name: drbd 用パーティション検査
  shell: df -h | grep mapper | wc -l
# shell: echo 2
  register: count_of_mapper

- name: 本番構成の確認
  fail:
    msg: 本番環境における LV 作成等は高リスクにつき未実装
  when: count_of_mapper.stdout|int > 1

タイトルとURLをコピーしました