Создание ВМ в proxmox через браузер/SSH локально используя ansible. Задача - установить anisble, написать плейбук в котором описать создание ВМ, ее хостнйм, айпи, шлюз и днс. Все это сделать локально.
Все что требуется это публичный ключ ssh, ссылка на образ диска qcow2 ну и прочие настройки по типу локального хранилища и тд.
Подключаемся к proxmox в моем случае это браузер.
Комментируем данные строки:
root@pve:~# cat /etc/apt/sources.list.d/ceph.list
#deb https://enterprise.proxmox.com/debian/ceph-quincy bookworm enterprise
root@pve:~# cat /etc/apt/sources.list.d/pve-enterprise.list
#deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise
Далее обновляем пакеты и устанавливаем ansible:
root@pve:~# apt-get update && apt-get install ansible -y
Создаем директорию где у нас будет находится плейбук и прочие настройки(group_vars и тд если будет)
root@pve:~# mkdir /etc/ansible
Переходим туда и редактируем плейбук:
root@pve:~# cd /etc/ansible
root@pve:/etc/ansible# vim playbook.yml
Вот содержимое плейбука, думаю тут все понятно, каждое действие с названием. Но указывайте свои данные в плейбуке, они могут отличаться от ваших!
---
- name: Создание ALT Linux ВМ на локальном Proxmox
hosts: localhost
gather_facts: false
vars:
vm_id: 200
vm_name: "altlinux-vm"
storage: "local-lvm"
ssh_key: "ssh-rsa ... root@pve"
ip_address: "192.168.0.111/24"
gateway: "192.168.0.1"
image_url: "https://ftp.altlinux.ru/pub/distributions/ALTLinux/p10/images/cloud/x86_64/alt-server-10.4-p10-cloud-x86_64.qcow2"
image_path: "/var/lib/vz/template/qcow/alt-server-10.4.qcow2"
ssh_key_path: "/root/ansible_ssh_key.pub"
tasks:
- name: Скачивание образа ALT Linux
get_url:
url: "{{ image_url }}"
dest: "{{ image_path }}"
mode: "0644"
timeout: 600
- name: Создание пустой ВМ
command: >
qm create {{ vm_id }}
--name {{ vm_name }}
--memory 2048
--cores 2
--net0 virtio,bridge=vmbr0
--ostype l26
--ide2 {{ storage }}:cloudinit
--scsihw virtio-scsi-pci
changed_when: true
- name: Импорт qcow2 как диск
command: >
qm importdisk {{ vm_id }} {{ image_path }} {{ storage }} --format qcow2
changed_when: true
- name: Подключение импортированного диска
command: >
qm set {{ vm_id }}
--scsi0 {{ storage }}:vm-{{ vm_id }}-disk-0
changed_when: true
- name: Сохранить SSH-ключ во временный файл
copy:
content: "{{ ssh_key }}"
dest: "{{ ssh_key_path }}"
mode: "0644"
- name: Настройка Cloud-Init (IP, SSH, DNS)
command: >
qm set {{ vm_id }}
--ciuser root
--sshkeys {{ ssh_key_path }}
--ipconfig0 ip={{ ip_address }},gw={{ gateway }}
--nameserver 8.8.8.8
--searchdomain local
--boot order=scsi0
changed_when: true
Автор: Maksim Duda