ansible 初始化系统分区格式化

作者: 张首富
时间: 2021-05-13
wx: y18163201

创建分区并进行格式化

  tasks:
  - name: '未分区磁盘'
    parted: device=/dev/{{item.key}} number=1 state=present
    when: not item.value.partitions
    register: status
    with_dict: "{{ ansible_devices }}"

  - name: '格式化磁盘'
    filesystem: dev=/dev/{{item.item.key}}1 fstype=xfs
    when: item.changed != false
    with_items: "{{ status.results }}"

首先通过ansible fact检测机器中的磁盘的parttions,如果partitions就是实际磁盘的分区数,分过区的partitions里是有值的,没分过区的磁盘partitions 值未空。依此来判断磁盘是否被分过区。

如果没有分区我们就把这个磁盘分1个区。并把状态记录下来。

格式化的时候,如果上面的分区状态是成功的,那么说明,这个盘是刚分过区的,那么我就执行格式化。

格式化之后我们需要指定挂载操作,挂载操作要调用mount模块来实现

ansible mount 模块用法

常用参数

  • path: 挂载点,必须
  • src: 挂载的源分区,必须
  • fstype:磁盘分区格式,必须
  • state:对应的动作是什么

mounted: 主动将设备挂载,并在 /etc/fstab 里面添加永久挂载信息,如果挂载点不存在,挂载点将会被创建

present: 只在 /etc/fstab 里面做记录,并不会挂载

unmounted: 卸载挂载点,但是并不会在 /etc/fstab 里面把永久挂载信息去掉

absent:取消挂载,并在/etc/fstab 对应的记录也删除

remounted:指定设备将被重新挂载

  • opts: 挂载的选项。

挂载

tasks:
- name: "mount device"
    mount:
      path: /data
      src: /dev/sdb1
      fstype: ext4
      state: mounted

卸载

tasks:
- name: 'umount device'
  mount:
    path: /data
    state: umounted