これをコマンドラインで実行すると、正常に動作します。
echo -e "n\np\n1\n\n\nw" | Sudo fdisk /dev/sdb
しかし、Ansibleではシェルで実行したくありません。
- name: partition new disk
Shell: echo -e "n\np\n1\n\n\nw" | Sudo fdisk /dev/sdb
エラーにはなりませんが、パーティションも作成されません。
AnsibleとLVMが必要なことを実行しないことを確認しました。
何かアドバイス?
デフォルトでは、Ansibleは/bin/sh
シェルを実行します。
たとえば、/bin/sh
がdash
にリンクされている場合、ビルドされますecho
はbash
またはGNU echo
;したがって、fdiskに供給される-e
文字で終了します。
試してください:
- name: partition new disk
Shell: echo -e "n\np\n1\n\n\nw" | Sudo fdisk /dev/sdb
args:
executable: /bin/bash
または:
- name: partition new disk
Shell: /bin/echo -e "n\np\n1\n\n\nw" | Sudo fdisk /dev/sdb
Ansible 2.3以降では、 parted
module を使用してブロックデバイスからパーティションを作成できます。例えば:
- parted:
device: /dev/sdb
number: 1
flags: [ lvm ]
state: present
パーティションをフォーマットするには、次のように filesystem
module を使用します。
- filesystem:
fstype: ext2
dev: /dev/sdb1
パーティションをマウントするには、たとえば、/work
フォルダは mount
module を次のように使用するだけです:
- mount:
fstype: ext2
src: /dev/sdb1
path: /work
state: mounted