services:deployvm
Différences
Ci-dessous, les différences entre deux révisions de la page.
— | services:deployvm [2018/01/22 23:35] (Version actuelle) – créée - modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Installation automatique VM ====== | ||
+ | **/!\ Ceci est un draft /!\** | ||
+ | |||
+ | Le but est de pouvoir automatiser l' | ||
+ | |||
+ | Le script est écrit en Bash avec du Curl et de JQ pour l' | ||
+ | |||
+ | [[services: | ||
+ | |||
+ | Les scripts sont pour le moment sur un GIT privé, ils seront rendu public lorsque qu'ils seront secs. | ||
+ | |||
+ | Licence : https:// | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== Ingrédients ===== | ||
+ | |||
+ | * Installation d'une VM de déploiement | ||
+ | * Récupération du paramétrage Proxmox | ||
+ | * Récupération du paramétrage IP | ||
+ | * Création VM Proxmox | ||
+ | * PXE / DHCP | ||
+ | * Post installation | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== Cuisine ===== | ||
+ | |||
+ | Maintenant que l'on a défini tout cela, on va scripter le tout pour créer une VM à notre adhérent. | ||
+ | |||
+ | ==== Installation d'une VM de déploiement ==== | ||
+ | |||
+ | Nous partons sur une Debian. Une installation classique en mode Net-Install. | ||
+ | Avec simplement ssh d' | ||
+ | |||
+ | === Binaire supplémentaire === | ||
+ | |||
+ | Pour le DHCP : | ||
+ | |||
+ | * DnsMasq | ||
+ | * Netboot Debian | ||
+ | * ( à compléter ) | ||
+ | |||
+ | Pour la les API | ||
+ | |||
+ | * jq : pour interpréter les retours des API de Proxmox et PhpIpam | ||
+ | * curl : qui n'est pas installé dans une Debian minimal. | ||
+ | * mkpasswd : dans le package //wois// (?) | ||
+ | |||
+ | === Réseau === | ||
+ | |||
+ | La VM devra accéder à l' | ||
+ | |||
+ | Deux interfaces réseaux sont nécessaires, | ||
+ | |||
+ | * VMBR dans Vlan Admin | ||
+ | |||
+ | Pour accéder à l' | ||
+ | Et récupérer la prochaine IPv4 et le pool IPv6 disponible. | ||
+ | |||
+ | * VMBR pour PXE/DHCP | ||
+ | |||
+ | On ajoute une interface pour séparer le service DHCP des autres réseaux. Il ne sera utiliser que pour l' | ||
+ | |||
+ | ---- | ||
+ | |||
+ | === API Ipam === | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | Morceau de l'API : | ||
+ | |||
+ | * Constantes : | ||
+ | |||
+ | # API | ||
+ | USERAPI=USERdeLapi | ||
+ | PASSWORD=LeMotdePasseDeLapi | ||
+ | SUBNETID_VMIPv4=numIDipv4 | ||
+ | SUBNETID_VMIPv6=numIDipv6 | ||
+ | URLAPI=" | ||
+ | |||
+ | * cURL | ||
+ | |||
+ | # Curl | ||
+ | CURL=" | ||
+ | HEADERHTTP=' | ||
+ | |||
+ | * Obtenir un Token | ||
+ | |||
+ | # Get Token | ||
+ | APITOKEN=$(${CURL} POST --user ${USERAPI}: | ||
+ | ${URLAPI}/ | ||
+ | |||
+ | * Obtenir les IP | ||
+ | |||
+ | # Get last IP | ||
+ | # IPv4 | ||
+ | LAST_VM_V4=$(${CURL} POST --header " | ||
+ | ${URLAPI}/ | ||
+ | --data " | ||
+ | echo $LAST_VM_V4 | ||
+ | |||
+ | # IPv6 | ||
+ | LAST_VM_V6=$(${CURL} POST --header " | ||
+ | ${URLAPI}/ | ||
+ | --data " | ||
+ | --data ' | ||
+ | echo $LAST_VM_V6 | ||
+ | FIRST_IPv6=" | ||
+ | echo $FIRST_IPv6 | ||
+ | |||
+ | ---- | ||
+ | |||
+ | === API proxmox === | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | Dans la suite jq va être important. Il va permettre de mettre en forme le retour en Json des commandes proxmox. | ||
+ | |||
+ | * Créer un compte pour l'API | ||
+ | |||
+ | * Constantes : | ||
+ | |||
+ | USERAPIPXM=' | ||
+ | PASSAPIPXM=' | ||
+ | ADDPORTIPPXM=' | ||
+ | NODEPXM=' | ||
+ | |||
+ | * Obtenir le cookie et le token proxmox | ||
+ | |||
+ | DATA=" | ||
+ | COOKIE=" | ||
+ | TOKEN=" | ||
+ | |||
+ | * Voir le statu du node | ||
+ | |||
+ | curl --insecure -b " | ||
+ | |||
+ | * Voir le le prochaine ID sur le cluster : | ||
+ | |||
+ | VMID=$(curl --insecure -b " | ||
+ | https:// | ||
+ | |||
+ | * Créer une VM via l'API | ||
+ | |||
+ | NAMEVMADH=' | ||
+ | POOLADH=' | ||
+ | NUMSOCKET=1 | ||
+ | MEMVMAD=512 | ||
+ | HDDSIZE=4 | ||
+ | | ||
+ | curl --insecure -b " | ||
+ | https:// | ||
+ | --data vmid=${VMID} --data name=${NAMEVMADH} \ | ||
+ | --data ostype=l26 --data pool=${POOLADH} \ | ||
+ | --data sockets=${NUMSOCKET} --data memory=${MEMVMAD} \ | ||
+ | --data-urlencode net0=" | ||
+ | --data-urlencode virtio0=" | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== Récupération du paramétrage Proxmox ==== | ||
+ | |||
+ | Récupérer l'ID disponible sur le cluster : | ||
+ | |||
+ | pvesh get / | ||
+ | |||
+ | ==== Création VM Proxmox ==== | ||
+ | |||
+ | Commande de création VM : | ||
+ | |||
+ | qm create 101 --name vmtest --onboot no --sockets 1 --net0 virtio, | ||
+ | |||
+ | ==== Configuration DHCP / PXE ==== | ||
+ | |||
+ | |||
+ | |||
+ | === Fichier de configuration === | ||
+ | |||
+ | # vim / | ||
+ | |||
+ | |||
+ | === Configuration === | ||
+ | |||
+ | |||
+ | |||
+ | ==== PXE ==== | ||
+ | |||
+ | Les fichiers preseed et de post-installation seront placer de le domaine public tellement les sources ont été diverses. | ||
+ | |||
+ | |||
+ | === Fichier Preseed Debian === | ||
+ | |||
+ | Le fichier preseed mérite une page a lui tout seul. | ||
+ | |||
+ | === Post installation === | ||
+ | |||
+ | La post installation ou plutôt le fichier de post-install est appeler à la fin du fichier preseed pour personnaliser un certain nombre de paramètre de la VM. | ||
+ | |||
+ | Dans le désordre : | ||
+ | |||
+ | * Ajout d'une clé SSH public | ||
+ | * Paramétrage IP v4 et v6 | ||
+ | * du mot de passe de la VM | ||
+ | * Ajout de soft complémentaire. | ||
+ | * (A compléter) | ||
+ | |||
+ | |||
+ | ===== Dégustation ===== | ||
+ | |||
+ | Pour savourer, on quitte la cuisine pour aller dans le salon : [[services: |
services/deployvm.txt · Dernière modification : 2018/01/22 23:35 de 127.0.0.1