-
Notifications
You must be signed in to change notification settings - Fork 1
/
disk-playbook.yml
94 lines (78 loc) · 3.9 KB
/
disk-playbook.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
---
- hosts: localhost
become: true
vars:
vg_korp_name: vg_korp
lv_korp_name: lv_korp
free_disks: []
korp_disk: ""
# criação de LVM:
# https://www.linuxbuzz.com/create-lvm-partition-in-linux/
# remoção de LVM:
# https://www.looklinux.com/how-to-remove-volume-group-and-physical-volume-on-lvm/
tasks:
- name: Verificação de configuração de LVM
ansible.builtin.stat:
path: "/dev/{{ vg_korp_name }}/{{ lv_korp_name }}"
register: lvm_config
- name: Mapeamento, criação e configuração de partição 'dados_korp'
block:
- name: Mapeamento de discos
block:
- name: Mapeamento de discos livres
ansible.builtin.set_fact:
free_disks: "{{ free_disks | union([item]) }}"
when: ansible_devices[item].partitions | list | length==0
with_items: "{{ ansible_devices.keys() | map('regex_search', 'sd.*') | select('string') | list }}"
- name: Checagem de discos
ansible.builtin.fail:
msg:
- "FALHA: '{{ free_disks | length }}' discos livres foram detectados, o número esperado é '1'."
- "Caso o número de discos seja maior que um, especifique o disco usando 'disk=\"<sdx>\"', onde '<sdx>' é o nome do disco."
when: free_disks | length != 1
- name: Definição de disco a ser usado
ansible.builtin.set_fact:
korp_disk: "{{ free_disks[0] }}"
when: korp_disk == ""
- name: Checagem de tamanho de discos
block:
- name: Checagem de espaço total Disco Root
ansible.builtin.fail:
msg:
- "Falha O espaço do dispositivo de boot é menor do que o espaço mínimo requisitado. "
# selecionamos o dispositivo que está montado em '/' (root), e # pegamos o tamanho desse dispositivo
# o tamanho retornado está em bites, por isso fazemos 3 divisões de 1024, transformando o valor para GB
# após isso é feito um comparativo de 90% do minímo necessario com a variavel root_disk_minimum_size
when : ((ansible_mounts|json_query('[?mount == `/`].size_total'))[0] /1024/1024/1024 | int ) < (0.85 * root_disk_minimum_size | int )
- name: Checagem de espaço total no dispositivo de dados
ansible.builtin.fail:
msg:
- "Falha O espaço do disco de dados é menor do que o espaço mínimo requisitado. "
# seleciona o tamanho do disk korp e é feito uma formatação # utilizando regex para remover caracteres especiais e
# convertendo para inteiro, após isso é feito um comparador # do minimo necessario com a varivavel korp_data_disk_minimum_size
when: (ansible_devices[korp_disk].size | regex_replace('[^0-9^.]','') | int) < korp_data_disk_minimum_size
- name: Criação de 'grupo de volume'
community.general.lvg:
vg: "{{ vg_korp_name }}"
pvs: "/dev/{{ korp_disk }}"
- name: Criação de 'volume lógico'
community.general.lvol:
vg: "{{ vg_korp_name }}"
lv: "{{ lv_korp_name }}"
size: 100%FREE
- name: Criação de ext4 no volume lógico
community.general.filesystem:
fstype: ext4
dev: "/dev/{{ vg_korp_name }}/{{ lv_korp_name }}"
- name: Criação de diretório padrão korp
ansible.builtin.file:
path: "{{ korp_dir_path }}"
state: directory
mode: '0755'
- name: Montagem de partição no dispositivo
ansible.posix.mount:
path: "{{ korp_dir_path }}"
src: "/dev/{{ vg_korp_name }}/{{ lv_korp_name }}"
fstype: ext4
state: mounted
when: not lvm_config.stat.exists