如何使用Ansible创建新分区

时间:2017-02-20 15:14:02

标签: bash ansible disk-partitioning

当我在命令行上运行它时,它可以正常工作:

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

但是在Ansible中它不想在shell中运行:

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

它不会返回错误,但也不会创建分区。

我检查过Ansible和LVM不会做我需要的。

有什么建议吗?

4 个答案:

答案 0 :(得分:22)

使用Ansible 2.3及更高版本,您可以使用parted module从块设备创建分区。 例如:

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

要格式化分区,只需使用filesystem module,如下所示:

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

要将分区挂载,我们说/work文件夹只需使用mount module,如下所示:

- mount:
    fstype: ext2
    src: /dev/sdb1
    path: /work
    state: mounted

答案 1 :(得分:10)

默认情况下,Ansible执行/bin/sh shell 例如,如果dashecho相关联,则其内置bashecho或GNU -e中的- 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 个字符输入fdisk。

尝试:

SELECT col1, col2 FROM tab1;
SELECT colA, colB FROM tab2;
SELECT colTest, colBlah FROM tab3;

或者:

+------+------+------+------+---------+---------+
| col1 | col2 | colA | colB | colTest | colBlah |
+------+------+------+------+---------+---------+
| abc  | def  | Ghi  | JkL  | 12A     | 42BD    |
+------+------+------+------+---------+---------+

答案 2 :(得分:5)

如何将所有可用空间分配到新分区并在Ansible中将其添加到LVM

  • 如果您使用的是LVM,请调查一下!

  • 如果要使用设备的所有可用空间,请查看此内容!

从设备/dev/sda/dev/sda1{{ volumeGroup }}上的现有分区开始。

使用以下方法在/dev/sda2的可用空间中创建分区/dev/sda,然后将新分区添加到现有的{{ volumeGroup }}

- name: "Create partitions on devices"    
  block:   
    - name: install parted
      package:
        name: parted
        state: present 
        
    - name: "Read device information /dev/sda"
      parted: 
        device: "/dev/sda"
        unit: MiB
      register: device_info
    
    - name: "Add new partition /dev/sda2"
      parted: 
        device: "/dev/sda"
        number: "2"
        part_type: primary
        flags: [ lvm ]
        state: present
        part_end: "100%"
        part_start: "{{ device_info.partitions[0].end + 1}}MiB" 
        
    - name: "Add device to exising volume group {{ volumeGroup }}."
      lvg:
        vg: "{{ volumeGroup }}"
        pvs: "/dev/sda1,/dev/sda2"
 

答案 3 :(得分:0)

在我的系统上,可以使“ n”加倍

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