How to create a new partition with Ansible
By default, Ansible executes /bin/sh
shell.
For example, if /bin/sh
is linked to dash
, it's built echo
is different to the one in bash
or GNU echo
; so you end up with -e
characters fed into fdisk.
Try:
- name: partition new disk
shell: echo -e "n\np\n1\n\n\nw" | sudo fdisk /dev/sdb
args:
executable: /bin/bash
Or:
- name: partition new disk
shell: /bin/echo -e "n\np\n1\n\n\nw" | sudo fdisk /dev/sdb
With Ansible 2.3 and above, you can use parted
module to create partitions from a block device.
For example:
- parted:
device: /dev/sdb
number: 1
flags: [ lvm ]
state: present
To format the partition just use filesystem
module as shown below:
- filesystem:
fstype: ext2
dev: /dev/sdb1
To mount the partition to, let's say, /work
folder just use mount
module as shown below:
- mount:
fstype: ext2
src: /dev/sdb1
path: /work
state: mounted