Changement de format du fichier de variables pour améliorer la gestion des disques et volumes lvm
This commit is contained in:
parent
ea3725c524
commit
79eaea94a9
48
README.md
48
README.md
|
@ -1,19 +1,16 @@
|
||||||
proxmox-vm-tools
|
# proxmox-vm-tools
|
||||||
================
|
|
||||||
|
|
||||||
Gestion de vms kvm en environnement proxmox
|
Gestion de vms kvm en environnement proxmox
|
||||||
|
|
||||||
|
|
||||||
Prerequis
|
## Prerequis
|
||||||
---------
|
|
||||||
|
|
||||||
- un compte de service dans le cluster proxmox
|
- un compte de service dans le cluster proxmox
|
||||||
- un api token pour ce compte de service
|
- un api token pour ce compte de service
|
||||||
- les droits PVEVMAdmin et PVEDatastoreUser associés au token
|
- les droits PVEVMAdmin et PVEDatastoreUser associés au token
|
||||||
|
|
||||||
|
|
||||||
Variables
|
# Variables
|
||||||
---------
|
|
||||||
|
|
||||||
Exemple de variables pour setup_vm.yml
|
Exemple de variables pour setup_vm.yml
|
||||||
|
|
||||||
|
@ -34,16 +31,28 @@ pvmt_vm_cores: 2
|
||||||
pvmt_vm_storage: local-lvm
|
pvmt_vm_storage: local-lvm
|
||||||
pvmt_vm_ciuser: svc-ansible
|
pvmt_vm_ciuser: svc-ansible
|
||||||
pvmt_vm_sshkeys: 'ssh-rsa AAA [...] 06Rnk= user@machine'
|
pvmt_vm_sshkeys: 'ssh-rsa AAA [...] 06Rnk= user@machine'
|
||||||
pvmt_vm_disk_grow:
|
pvmt_vm_disk:
|
||||||
- disk: scsi1
|
- disk: scsi1
|
||||||
size: 1G
|
size: 1G
|
||||||
partition: /
|
pvuuid: uCbfU7-SI8m-ixnk-vMKJ-gpoQ-LgIh-58whLX
|
||||||
- disk: scsi1
|
encrypted: "false"
|
||||||
size: 1G
|
|
||||||
partition: /var
|
|
||||||
- disk: scsi2
|
- disk: scsi2
|
||||||
size: 2G
|
size: 2G
|
||||||
partition: /data1
|
pvuuid: 34azET-vMKJ-gpoQ-3Vm4-jiY9-3yAl-62r7i3
|
||||||
|
encrypted: "true"
|
||||||
|
pvmt_vm_lvm_volumes:
|
||||||
|
- name: root
|
||||||
|
size: 6G
|
||||||
|
vg: system
|
||||||
|
- name: swap
|
||||||
|
size: 1G
|
||||||
|
vg: system
|
||||||
|
- name: data1
|
||||||
|
size: 10G
|
||||||
|
vg: luksdata
|
||||||
|
- name: data2
|
||||||
|
size: 10G
|
||||||
|
vg: luksdata
|
||||||
|
|
||||||
# vlan vars
|
# vlan vars
|
||||||
nom_du_vlan:
|
nom_du_vlan:
|
||||||
|
@ -54,17 +63,18 @@ nom_du_vlan:
|
||||||
searchdomain: domaine.local
|
searchdomain: domaine.local
|
||||||
```
|
```
|
||||||
|
|
||||||
Dependences
|
|
||||||
-----------
|
|
||||||
|
|
||||||
|
|
||||||
Exemple de playbook
|
## Exemple d'utilisation
|
||||||
--------------------
|
|
||||||
|
|
||||||
|
|
||||||
License
|
|
||||||
-------
|
|
||||||
|
|
||||||
https://www.gnu.org/licenses/gpl-3.0.fr.html
|
## Gestion des disques
|
||||||
|
|
||||||
|
- Si nécessaire les nouveaux volume groups sont à créer manuellement avant de pouvoir être référencés, par exemple :
|
||||||
|
|
||||||
|
`vgcreate luksdata /dev/mapper/mondisque`
|
||||||
|
|
||||||
|
- Si de nouveaux volumes lvm sont créés, ils ne sont pour autant ni formatés ni montés quelque part et doivent être définis dans fstab
|
||||||
|
|
||||||
|
- Si un volume est agrandi, le système de fichiers du volume l'est aussi
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
- name: Agrandit le disque {{ item.disk }} de {{ item.size }}
|
||||||
|
uri:
|
||||||
|
url: "https://{{ pvmt_api_host }}:8006/api2/json/nodes/{{ pvmt_node }}/qemu/{{ pvmt_vm_id }}/resize"
|
||||||
|
validate_certs: no
|
||||||
|
method: PUT
|
||||||
|
headers:
|
||||||
|
Authorization: PVEAPIToken={{ pvmt_api_user }}!{{ pvmt_api_token_id }}={{ pvmt_api_token_secret }}
|
||||||
|
body_format: form-urlencoded
|
||||||
|
body:
|
||||||
|
disk: "{{ item.disk }}"
|
||||||
|
size: "{{ item.size }}"
|
||||||
|
|
||||||
|
- name: Attend l'application du changement
|
||||||
|
wait_for:
|
||||||
|
timeout: 2
|
||||||
|
|
||||||
|
- name: Agrandit le PV {{ item.pvuuid }}
|
||||||
|
shell: |
|
||||||
|
set -x
|
||||||
|
# detection de la nouvelle taille des disques
|
||||||
|
for i in `ls /sys/class/block/*/device/rescan`; do echo 1 > $i; done
|
||||||
|
|
||||||
|
PV=$(pvs -v | grep {{ item.pvuuid }} | awk '{ print $1 }')
|
||||||
|
|
||||||
|
if [ '{{ item.encrypted }}' = 'true' ]
|
||||||
|
then
|
||||||
|
echo "$PV est chiffre, agrandissement du disque chiffre"
|
||||||
|
cryptsetup resize $PV
|
||||||
|
fi
|
||||||
|
echo "Agrandissement du PV"
|
||||||
|
pvresize $PV
|
||||||
|
register: _shell_result
|
||||||
|
delegate_to: "{{ pvmt_vm_ip }}"
|
||||||
|
|
||||||
|
- debug:
|
||||||
|
var: _shell_result.stdout_lines
|
||||||
|
|
||||||
|
- debug:
|
||||||
|
var: _shell_result.stderr_lines
|
||||||
|
|
|
@ -1,57 +0,0 @@
|
||||||
- name: Agrandit le disque {{ item.disk }} de {{ item.size }}
|
|
||||||
uri:
|
|
||||||
url: "https://{{ pvmt_api_host }}:8006/api2/json/nodes/{{ pvmt_node }}/qemu/{{ pvmt_vm_id }}/resize"
|
|
||||||
validate_certs: no
|
|
||||||
method: PUT
|
|
||||||
headers:
|
|
||||||
Authorization: PVEAPIToken={{ pvmt_api_user }}!{{ pvmt_api_token_id }}={{ pvmt_api_token_secret }}
|
|
||||||
body_format: form-urlencoded
|
|
||||||
body:
|
|
||||||
disk: "{{ item.disk }}"
|
|
||||||
size: "{{ item.size }}"
|
|
||||||
|
|
||||||
- name: Attend l'application du changement
|
|
||||||
wait_for:
|
|
||||||
timeout: 2
|
|
||||||
|
|
||||||
- name: Agrandit la partition {{ item.partition }}
|
|
||||||
shell: |
|
|
||||||
set -x
|
|
||||||
# detection de la nouvelle taille des disques
|
|
||||||
for i in `ls /sys/class/block/*/device/rescan`; do echo 1 > $i; done
|
|
||||||
|
|
||||||
# teste si partition LVM
|
|
||||||
dev=$(mount | grep "\s{{ item.partition }}\s" | cut -d ' ' -f 1)
|
|
||||||
lvdisplay $dev
|
|
||||||
if [ $? -eq 0 ]
|
|
||||||
then
|
|
||||||
# identification du PV
|
|
||||||
echo "$dev est un LV"
|
|
||||||
vg=$(lvdisplay -C -o vg_name $dev | tail -n -1 | awk '{print $1}')
|
|
||||||
echo "$dev est dans le VG $vg"
|
|
||||||
pv=$(pvdisplay -C -o pv_name -S vg_name=$vg | tail -n -1 | awk '{ print $1 }')
|
|
||||||
echo "$vg est dans le PV $pv"
|
|
||||||
|
|
||||||
lsblk -pP $pv | grep $pv | grep 'TYPE="crypt"'
|
|
||||||
if [ $? -eq 0 ]
|
|
||||||
then
|
|
||||||
echo "$pv est chiffre, agrandissement du disque chiffre"
|
|
||||||
cryptsetup resize $pv
|
|
||||||
fi
|
|
||||||
echo "Agrandissement du PV"
|
|
||||||
pvresize $pv
|
|
||||||
echo "Agrandissement d'une partition LVM"
|
|
||||||
lvextend -l +100%FREE $dev
|
|
||||||
fi
|
|
||||||
|
|
||||||
# agrandissement du systeme de fichiers
|
|
||||||
xfs_growfs {{ item.partition }}
|
|
||||||
register: _shell_result
|
|
||||||
delegate_to: "{{ pvmt_vm_ip }}"
|
|
||||||
|
|
||||||
- debug:
|
|
||||||
var: _shell_result.stdout_lines
|
|
||||||
|
|
||||||
- debug:
|
|
||||||
var: _shell_result.stderr_lines
|
|
||||||
|
|
|
@ -67,8 +67,19 @@
|
||||||
|
|
||||||
- local_action: wait_for port=22 host="{{ pvmt_vm_ip }}" search_regex=OpenSSH
|
- local_action: wait_for port=22 host="{{ pvmt_vm_ip }}" search_regex=OpenSSH
|
||||||
|
|
||||||
- name: Agrandit la partition {{ item.partition }}
|
- name: Agrandit le disque
|
||||||
include_tasks: resize_partition.yml
|
include_tasks: resize_disk.yml
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ pvmt_vm_disk_grow }}"
|
- "{{ pvmt_vm_disk }}"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Definit logical volume
|
||||||
|
lvol:
|
||||||
|
vg: "{{ item.vg }}"
|
||||||
|
lv: "{{ item.name }}"
|
||||||
|
size: "{{ item.size }}"
|
||||||
|
resizefs: true
|
||||||
|
delegate_to: "{{ pvmt_vm_ip }}"
|
||||||
|
with_items:
|
||||||
|
- "{{ pvmt_vm_lvm_volumes }}"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue