【问题标题】:How to create a new partition with Ansible如何使用 Ansible 创建新分区
【发布时间】:2017-07-09 22:35:08
【问题描述】:

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

 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


    【解决方案1】:

    使用 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
    

    【讨论】:

      【解决方案2】:

      默认情况下,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 中将所有空闲空间分配给新分区并添加到 LVM

        • 如果您使用的是 LVM,请查看此内容!

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

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

        使用以下方法在/dev/sda的空闲空间中创建一个分区/dev/sda2,然后将新分区添加到现有的{{ 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"
         
        

        【讨论】:

          【解决方案4】:

          在我的系统上有助于加倍“n”

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-07-09
            • 2014-05-15
            • 1970-01-01
            • 2013-10-18
            • 2021-02-22
            相关资源
            最近更新 更多