2017-02-20 19 views
2

При запуске этого в командной строке она отлично работает:Как создать новый раздел с анзиблем

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

Но в анзибле он не хочет работать в оболочке:

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

It не возвращается с ошибкой, но также не создает раздел.

Я проверил, что Ansible и LVM не будут делать то, что мне нужно.

Любые советы?

ответ

6

По умолчанию Ansible исполняет оболочку /bin/sh.
Например, если /bin/sh связан с dash, он построен echo отличается от bash или GNU echo; поэтому вы получаете -e символов, загруженных в fdisk.

Try:

- 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 
3

С анзиблем 2.3 и выше, вы можете использовать parted module для создания разделов из блочного устройства. Например:

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

для форматирования раздела просто использовать filesystem module, как показано ниже:

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