2017-02-20 8 views
2

で新しいパーティションを作成するには:どのように私は、コマンドラインでこれを実行すると、それが正常に動作します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が私の必要としないことを確認しました。

アドバイスはありますか?

答えて

6

デフォルトでは、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 

または:上記Ansible 2.3として

- name: partition new disk 
    shell: /bin/echo -e "n\np\n1\n\n\nw" | sudo fdisk /dev/sdb 
3

、あなたはブロックデバイスからパーティションを作成するparted moduleを使用することができます。例えば :

- parted: 
    device: /dev/sdb 
    number: 1 
    flags: [ lvm ] 
    state: present 

ちょうどfilesystem moduleを使用するパーティションをフォーマットするには、以下に示すとおり

- filesystem: 
    fstype: ext2 
    dev: /dev/sdb1 
関連する問題