Cette procédure va permettre de créer un template de VM Oraclelinux 9 pour Proxmox avec Cloud-Init.
L'intérêt sera de cloner ce template, puis de pouvoir se connecter directement en ssh au 1er démarrage de la VM. Le nom d'hôte, l'adressage ip, la(es) clef(s) ssh seront configurés à l'initialisation de la VM grâce à cloud-init.
Ce template pourra éventuellement être utilisé par la suite avec une solution telle que Terraform / OpenTofu.
Création du template
- Se connecter sur un shell
root
de l'hôte Proxmoxpvehost
:
ssh root@pvehost
- Télécharger la dernière image cloud d'Oracle Linux :
wget https://yum.oracle.com/templates/OracleLinux/OL9/u4/x86_64/OL9U4_x86_64-kvm-b234.qcow2
- Installer
libguestfs-tools
si nécessaire et ajouterqemu-guest-agent
à l'image cloud précédemment téléchargée :
apt install -y libguestfs-tools
virt-customize -a OL9U4_x86_64-kvm-b234.qcow2 --install qemu-guest-agent
- Créer une VM avec l'ID 666 qui sera le template :
qm create 666 --name oraclelinux9-cloudinit --net0 virtio,bridge=vmbr1 --scsihw virtio-scsi-single
virtio-scsi-single
va permettre d'activer le paramètre "iothread" pour une meilleure gestion des inputs ouputs dans ce cas.
Elle sera nommée oraclelinux9-cloudinit
et la 1ère carte réseau sera rattachée au vmbr1
du serveur Proxmox.
- Ajouter un nouveau disque dur importé depuis l'image cloud :
qm set 666 --scsi0 local:0,iothread=1,backup=off,format=qcow2,import-from=/root/OL9U4_x86_64-kvm-b234.qcow2
- Définir le disque dur en 1er boot sur la VM :
qm set 666 --boot order=scsi0
- Définir le nombre de coeurs et la mémoire RAM de la VM :
qm set 666 --cpu host --cores 2 --memory 4096
- Attacher un disque Cloud-Init à la VM :
qm set 666 --ide2 local:cloudinit
qm set 666 --agent enabled=1
- Ajuster les paramètres dans les options
Cloud-Init
qui figureront dans le template (si nécessaire) :
Ces options sont disponibles dans la WebUI du serveur Proxmox au niveau de la VM.
Plus de détails ici https://pve.proxmox.com/wiki/Cloud-Init_Support sur les différents paramétrages.
- Convertir la VM en template :
qm template 666
Utilisation du template
- Cloner entièrement le template en VM.
-
Ajuster les paramètres
Cloud-Init
de la VM si nécessaire. - Démarrer la VM et récupérer l'IP (si nécessaire) :
- Se connecter en SSH sur la VM avec la clef ssh renseignée dans cloud-init :
julien@mypc:~$ ssh -i .ssh/demo admin@172.16.20.23
...
[admin@ol9-cloudinit ~]$ sudo -l
Matching Defaults entries for admin on ol9-cloudinit:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY
HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User admin may run the following commands on ol9-cloudinit:
(ALL) NOPASSWD: ALL