当我在命令行上运行它时它工作正常:
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不会做我需要的。
有什么建议?
默认情况下,Ansible执行/bin/sh
shell。
例如,如果/bin/sh
与dash
相关联,那么它构建的echo
与bash
或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
使用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