Search code examples
bashansibledisk-partitioning

How to create a new partition with Ansible


When I run this on the command line it works fine:

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

But in Ansible it does not want to run in shell:

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

It does not come back with an error, but it does not create the partition either.

I checked that Ansible and LVM will not do what I need.

Any advice?


Solution

  • 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