2017-02-20 3 views
2

Quand je lance ceci sur la ligne de commande, il fonctionne très bien:Comment créer une nouvelle partition avec Ansible

echo -e "n\np\n1\n\n\nw" | sudo fdisk /dev/sdb 

Mais Ansible il ne veut pas courir dans la coquille:

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

Il ne revient pas avec une erreur, mais il ne crée pas la partition non plus.

J'ai vérifié que Ansible et LVM ne feraient pas ce dont j'avais besoin.

Un conseil?

Répondre

6

Par défaut, Ansible exécute le shell /bin/sh.
Par exemple, si /bin/sh est lié à dash, il est construit echo est différent de celui de bash ou de GNU echo; donc vous vous retrouvez avec -e caractères introduits dans fdisk.

Essayez:

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

Ou:

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

Avec Ansible 2.3 et au-dessus, vous pouvez utiliser parted module pour créer des partitions à partir d'un périphérique bloc. Par exemple:

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

Pour formater la partition il suffit d'utiliser filesystem module comme indiqué ci-dessous:

- filesystem: 
    fstype: ext2 
    dev: /dev/sdb1