一般基础服务部门把一台新的服务器上架、装完系统、配置好网络以后就交付不管了。
到应用管理的手中需要,把未分区的磁盘,分区,并格式化。
数据磁盘少还OK,如果像是hadoop集群中的存储节点。一次都是20块。一个一个手动搞真的要命 。
之前在网上看到有人用ansible调用shell脚本,实现分区。感觉太土。而且很要命。
1、那个脚本里,如果磁盘已经分区过了,不能检测。直接重新再分一次。
2、格式化以后,也不检测,还是再重新格式化。。。
tasks:
- name: u'未分区磁盘'
parted: device=/dev/{{item.key}} number=1 state=present
when: not item.value.partitions
register: status
with_dict: "{{ ansible_devices }}"
- name: u'格式化磁盘'
filesystem: dev=/dev/{{item.item.key}}1 fstype=xfs
when: item.changed != false
with_items: "{{ status.results }}"
首先通过ansible fact检测机器中的磁盘的parttions,如果partitions就是实际磁盘的分区数,分过区的partitions里是有值的,没分过区的磁盘partitions 值未空。依此来判断磁盘是否被分过区。
如果没有分区我们就把这个磁盘分1个区。并把状态记录下来。
格式化的时候,如果上面的分区状态是成功的,那么说明,这个盘是刚分过区的,那么我就执行格式化。
OK ,现在完美了,不用担心初始化机器的时候,把线上的数据给搞了。。
网友评论