web-dev-qa-db-fra.com

Comment créer une nouvelle partition avec Ansible

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?

11
warhansen

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
12
Konstantin Suvorov

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