본문 바로가기

Project

Ansible 파티션 설정

Logical Volume 생성 및 사용

다음 요구 사항에 맞춰 /home/greg/ansible/lv.yml 플레이북을 생성하고, 모든 관리 대상 노드에서 논리 볼륨을 생성 및 구성해 보았습니다.

  • 논리 볼륨의 상태
    • 논리 볼륨은 research 볼륨 그룹에 생성됩니다.
    • 논리 볼륨 이름은 data입니다.
    • 논리 볼륨 크기는 1500 MiB입니다.
  • ext4 파일 시스템으로 논리 볼륨을 포맷합니다.
  • 요청한 논리 볼륨 크기를 생성할 수 없을 경우, 오류 메시지를 표시하고 대신 크기를 800 MiB로 사용합니다.
    Could not create logical volume of that size
  • 만약 볼륨 그룹 research가 존재하지 않으면 오류 메시지를 표시합니다:
    Volume group does not exist
  • 논리 볼륨은 어떤 방법으로도 마운트하지 않습니다.

1. 플레이북 작성

lv.yml 플레이북을 작성하여 논리 볼륨을 생성하고 파일 시스템을 포맷합니다.

# 플레이북 파일 생성
vim /home/greg/ansible/lv.yml

 

다음과 같이 플레이북을 작성합니다.

---
- name: Create LVM
  hosts: all
  tasks:
    - block:
        - name: Create logical volume with 1500M size
          community.general.lvol:
            vg: research
            lv: data
            size: 1500
        - name: Format logical volume with ext4
          community.general.filesystem:
            fstype: ext4
            dev: /dev/research/data
      rescue:
        - name: Handle insufficient space error
          ansible.builtin.debug:
            msg: Could not create logical volume of that size
        - name: Create logical volume with 800M size
          community.general.lvol:
            vg: research
            lv: data
            size: 800
        - name: Format logical volume with ext4
          community.general.filesystem:
            fstype: ext4
            dev: /dev/research/data
      when: ansible_lvm.vgs.research is defined
    - name: Handle missing volume group error
      ansible.builtin.debug:
        msg: Volume group does not exist
      when: ansible_lvm.vgs.research is not defined

2. 플레이북 실행

작성한 플레이북을 실행합니다.

# 플레이북 실행
ansible-navigator run /home/greg/ansible/lv.yml -m stdout

3. 실행 결과

플레이북 실행 결과는 다음과 같습니다.

PLAY [Create LVM] ***************************************************************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************************************************************************************************************************************************************
ok: [node3]
ok: [node5]
ok: [node4]
ok: [node2]
ok: [node1]

TASK [Create logical volume with 1500M size] *****************************************************************************************************************************************************************************************************************************************************************
skipping: [node1]
fatal: [node3]: FAILED! => {"changed": false, "err": "  Volume group \"research\" has insufficient free space (31 extents): 47 required.\n", "msg": "Creating logical volume 'data' failed", "rc": 5}
changed: [node2]
changed: [node5]
changed: [node4]

TASK [Format logical volume with ext4] **************************************************************************************************************************************************************************************************************************************************************
skipping: [node1]
changed: [node5]
changed: [node4]
changed: [node2]

TASK [Handle insufficient space error] *****************************************************************************************************************************************************************************************************************************************************
ok: [node3] => {
    "msg": "Could not create logical volume of that size"
}

TASK [Create logical volume with 800M size] ******************************************************************************************************************************************************************************************************************************************************************
changed: [node3]

TASK [Format logical volume with ext4] **************************************************************************************************************************************************************************************************************************************************************
changed: [node3]

TASK [Handle missing volume group error] ********************************************************************************************************************************************************************************************************************************************************************
skipping: [node2]
skipping: [node5]
ok: [node1] => {
    "msg": "Volume group does not exist"
}
skipping: [node3]
skipping: [node4]

PLAY RECAP **********************************************************************************************************************************************************************************************************************************************************************
node1                      : ok=2    changed=0    unreachable=0    failed=0    skipped=2    rescued=0    ignored=0   
node2                      : ok=3    changed=2    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0   
node3                      : ok=4    changed=2    unreachable=0    failed=0    skipped=1    rescued=1    ignored=0   
node4                      : ok=3    changed=2    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0   
node5                      : ok=3    changed=2    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0   

4. 검증

논리 볼륨 및 파일 시스템 생성 결과를 확인합니다.

# 논리 볼륨 확인
ansible all -m shell -a 'lvs'

# 파일 시스템 확인
ansible all -m shell -a 'blkid /dev/research/data'

'Project' 카테고리의 다른 글

Ansible 하드웨어 보고서 생성하기  (0) 2025.02.25
Ansible 웹서버 구축  (0) 2025.02.25
Ansible 사용자 계정 생성하기  (0) 2025.02.25
Ansible 설치 및 구성  (0) 2025.02.25