2017-02-20 61 views
2

一个新的分区工作正常:如何当我在命令行其上运行此创建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不会做我需要的。

有什么建议吗?

回答

6

默认情况下,Ansible执行/bin/sh shell。
例如,如果/bin/sh链接到dash,则它的内置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 
3

随着Ansible 2.3及以上版本,你可以使用parted module从块设备上创建分区。 例如:

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

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

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