我有一台 Ubuntu 服务器,有 2 个驱动器/dev/sdb
和/dev/sdc
。操作系统安装在 下/dev/sdb
。现在,我正在尝试编写一个 Ansible 剧本,它将识别特定分区是否包含操作系统。我尝试使用命令,lsblk
该命令返回驱动器/dev/sdb
已分区。但 不存在分区表/dev/sdc/
。
有没有关于如何实现这一点的例子?我当前的剧本如下:
- hosts: localhost
tasks:
- name: Get list of mounted hard drives
command: 'lsblk'
register: result
- name: Create variable block_devices
set_fact:
block_devices: "{{ result.stdout_lines }}"
- debug:
var: block_devices
此剧本返回可用的分区。从此输出如何实现操作系统安装检查?
答案1
聚集rootfs
在ansible_facts
并且不需要通过shell来“提取”。
访问方法如下:
# cat play.yml
---
- name: display rootfs partition
hosts: all
become: yes
gather_facts: yes
tasks:
- name: print root partition
shell: echo "{{ ansible_cmdline.root }}" > /tmp/rootfs_part
# ansible-playbook play.yml -i localhost,
PLAY [display rootfs partition] ******************************************************************************************************************************************************************************
TASK [print root partition] **********************************************************************************************************************************************************************************
changed: [localhost]
PLAY RECAP ***************************************************************************************************************************************************************************************************
localhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
# cat /tmp/rootfs_part
/dev/mapper/mirror-root