如何使用Ansible创建新分区

问题描述 投票:8回答:2

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

 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不会做我需要的。

有什么建议?

bash ansible disk-partitioning
2个回答
10
投票

默认情况下,Ansible执行/bin/sh shell。 例如,如果/bin/shdash相关联,那么它构建的echobash或GNU echo中的不同;所以你最终将-e字符输入fdisk。

尝试:

- 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

23
投票

使用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
© www.soinside.com 2019 - 2024. All rights reserved.