web-dev-qa-db-ja.com

Ansibleで新しいパーティションを作成する方法

これをコマンドラインで実行すると、正常に動作します。

 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が必要なことを実行しないことを確認しました。

何かアドバイス?

11
warhansen

デフォルトでは、Ansibleは/bin/shシェルを実行します。
たとえば、/bin/shdashにリンクされている場合、ビルドされますechobashまたは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
12

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
28
Jerald Sabu M