Lorsque je lance cela sur la ligne de commande, cela fonctionne bien:
echo -e "n\np\n1\n\n\nw" | Sudo fdisk /dev/sdb
Mais dans Ansible, il ne veut pas s'exécuter dans Shell:
- 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 non plus la partition.
J'ai vérifié qu'Ansible et LVM ne feront pas ce dont j'ai besoin.
Aucun conseil?
Par défaut, Ansible exécute /bin/sh
Coquille.
Par exemple, si /bin/sh
est lié à dash
, il est construit echo
est différent de celui de bash
ou GNU echo
; vous vous retrouvez donc avec -e
caractères introduits dans fdisk.
Essayer:
- 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
Avec Ansible 2.3 et supérieur, 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, utilisez simplement filesystem
module comme indiqué ci-dessous:
- filesystem:
fstype: ext2
dev: /dev/sdb1
Pour monter la partition sur, disons, /work
dossier utilisez simplement mount
module comme indiqué ci-dessous:
- mount:
fstype: ext2
src: /dev/sdb1
path: /work
state: mounted