GCE / Ansible:如何使用ansible在GCE实例的新磁盘上创建文件系统

时间:2017-05-17 08:36:08

标签: linux ansible google-compute-engine

我需要使用Ansible

向现有GCE实例添加额外的磁盘

使用gce_pd模块创建磁盘:

- name : Add new disk
  local_action:
    module: gce_pd
    instance_name: "{{ ansible_host }}"
    project_id: "{{ project_id }}"
    service_account_email: "{{ service_account_email }}"
    credentials_file: "{{ credentials_file }}"
    zone: "{{ my_zone }}"
    size_gb: 5
    mode: READ_WRITE
    name: "{{ ansible_host }}-data-disk"
  register: gce_pd
  tags:
    - add_disk

此任务成功。

然后我尝试在新磁盘上创建一个ext4文件系统:

#============================================================
- name : Create filesystem {{ google_disk_name }}
  filesystem:
    fstype: ext4
    # TODO : improve this
    dev: /dev/sdb
    opts: "-F -E lazy_itable_init=0,lazy_journal_init=0,discard -L {{ volume_label }} /dev/disk/by-id/{{ google_disk_name }}"
    force: yes
  become: true
  tags:
    - add_disk
    - format_disk

此任务失败:

  

失败! => {"更改":false,"错误":" mke2fs 1.42.12   (2014年8月29日)\ nmkfs.ext4:无效的块' / dev / sdb'在设备上   ' / dev / disk / by-id / google-my-instance-data-disk' \ n","":true,   " msg":"在设备上创建文件系统ext4' / dev / sdb'失败"," rc":   1}

我做错了什么?文件系统的选项与GCE doc https://cloud.google.com/compute/docs/disks/add-persistent-disk

中建议的选项相同

如果我手动执行此命令,则文件系统的创建成功!

mkfs.ext4 -F -E lazy_itable_init = 0,lazy_journal_init = 0,discard / dev / disk / by-id / google-my-instance-data-disk

解决方法是使用命令模块运行mkfs.ext4而不是使用文件系统模块,但我想了解我使用模块时出了什么问题。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

感谢Konstatin Suvorov在opts中发现我的错误:参数:

使用dev:parameter

/ dev / disk / by-id / {{google_disk_name}}是多余的

所以固定的任务是:

#============================================================
- name : Format disk {{ google_disk_name }}
  filesystem:
    fstype: ext4
    # TODO : improve this
    dev: /dev/sdb
    opts: "-F -E lazy_itable_init=0,lazy_journal_init=0,discard -L {{ volume_label }}"
    # TODO : to be discussed, useful for tests
    force: yes
  become: true
  tags:
    - add_disk
    - format_disk