用ansible写一个批量格式化系统磁盘的脚本
时间: 2023-12-07 17:05:28 浏览: 30
好的,这是一个技术问题,我可以回答。以下是一个样例的ansible playbook脚本:
```
---
- name: Format disks on remote servers
hosts: all
gather_facts: false
become: true
vars:
disk_to_format: /dev/sdb
tasks:
- name: Format disk
command: bash -c "echo -e 'n\np\n1\n\n\nw' | fdisk {{ disk_to_format }} && mkfs.ext4 {{ disk_to_format }}1"
```
请注意,在上面的脚本中,您需要将`disk_to_format`变量设置为需要格式化的磁盘路径。此外,为了确保脚本能够成功运行,您需要在在目标主机上安装fdisk和mkfs.ext4这两个程序。
相关问题
利用ansible检测未挂载的磁盘并批量格式化、挂载
可以使用ansible的disk module来检测未挂载的磁盘,并使用mount和filesystem modules来格式化和挂载磁盘。以下是一个基本的ansible playbook示例:
```
- name: Check and format new disks
hosts: all
tasks:
- name: Get list of disks
shell: "lsblk -lpd -n -o NAME,TYPE | awk '$2 == \"disk\" {print $1}'"
register: disk_list
- name: Check if disks are mounted
mount:
path: "{{ item }}"
state: mounted
register: mounted_disks
with_items: "{{ disk_list.stdout_lines }}"
- name: Format disks
filesystem:
fstype: ext4
dev: "{{ item }}"
with_items: "{{ disk_list.stdout_lines }}"
when: item not in mounted_disks.mounted | map(attribute='path') | list
- name: Mount disks
mount:
path: "/mnt/{{ item.split('/')[-1] }}"
src: "{{ item }}"
fstype: ext4
state: mounted
with_items: "{{ disk_list.stdout_lines }}"
when: item not in mounted_disks.mounted | map(attribute='path') | list
```
这个playbook会在所有的主机上执行。它首先使用lsblk命令获取所有磁盘的列表,然后使用mount module检查哪些磁盘已经挂载。接着,使用filesystem module格式化未挂载的磁盘,并使用mount module将其挂载到/mnt目录下。注意,为了避免重复格式化或挂载,我们使用when条件语句来检查磁盘是否已经挂载。
写一个ansible脚本,自动识别linux操作系统内核
我不了解写ansible脚本,但是可以提供一些帮助,比如使用uname命令来检测Linux操作系统内核版本,使用cat /proc/version文件来查看内核版本,使用/etc/issue文件来查看操作系统发行版等。