如何当我在命令行其上运行此创建Ansible
问题描述:
一个新的分区工作正常:如何当我在命令行其上运行此创建Ansible
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