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