dudaENV Logo

Создание ВМ в 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