Menginstal dan Mengkonfigurasi Lingkungan Virtual ProxMox 6.x/7.x/8.x di Server Debian.
Peran ini memungkinkan Anda untuk menggunakan dan mengelola instalasi PVE simpul tunggal dan kelompok PVE (3+ node) di Debian Buster (10) dan Bullseye (11) dan Bookworm (12). Anda dapat mengonfigurasi yang berikut dengan bantuan peran ini:
datacenter.cfg
pve-no-subscription
atau pve-enterprise
)Dengan pengelompokan yang diaktifkan, peran ini memang (atau memungkinkan Anda melakukan) yang berikut:
Untuk dukungan atau jika Anda ingin berkontribusi pada peran ini tetapi menginginkan panduan, jangan ragu untuk bergabung dengan server perselisihan ini: https://discord.gg/cjqr6fg. Harap dicatat, ini adalah undangan sementara, jadi Anda harus menunggu @lae untuk memberikan peran kepada Anda, jika tidak, Discord akan menghapus Anda dari server saat Anda keluar.
Tujuan utama untuk peran ini adalah untuk mengonfigurasi dan mengelola cluster proxmox ve (lihat contoh buku pedoman), namun peran ini dapat digunakan untuk dengan cepat menginstal server proxmox simpul tunggal.
Saya berasumsi bahwa Anda sudah memiliki instalasi yang tidak dapat diinstal. Anda perlu menggunakan mesin eksternal untuk yang Anda instal ProxMox (terutama karena reboot di tengah instalasi, meskipun saya dapat menangani ini agak berbeda untuk kasus penggunaan ini nanti).
Salin buku pedoman berikut ke file seperti install_proxmox.yml
:
- hosts: all
become: True
roles:
- role: geerlingguy.ntp
vars:
ntp_manage_config: true
ntp_servers:
- clock.sjc.he.net,
- clock.fmt.he.net,
- clock.nyc.he.net
- role: lae.proxmox
vars:
- pve_group: all
- pve_reboot_on_kernel_update: true
Instal peran ini dan peran untuk mengkonfigurasi NTP:
ansible-galaxy install lae.proxmox geerlingguy.ntp
Sekarang Anda dapat melakukan instalasi:
ansible-playbook install_proxmox.yml -i $SSH_HOST_FQDN, -u $SSH_USER
Jika SSH_USER
Anda memiliki kata sandi sudo, lewati bendera -K
ke perintah di atas. Jika Anda juga mengotentikasi host melalui kata sandi alih -alih pubkey auth, lewati bendera -k
(pastikan Anda telah menginstal sshpass
juga). Anda dapat mengatur variabel -variabel itu sebelum menjalankan perintah atau hanya menggantinya. Perhatikan koma itu penting, karena daftar diharapkan (jika tidak, ia akan mencoba mencari file yang berisi daftar host).
Setelah selesai, Anda harus dapat mengakses instance proxmox ve Anda di https://$SSH_HOST_FQDN:8006
.
Buat direktori buku pedoman baru. Kami menyebut lab-cluster
kami. Buku pedoman kami pada akhirnya akan terlihat seperti ini, tetapi milik Anda tidak harus mengikuti semua langkah:
lab-cluster/
├── files
│ └── pve01
│ ├── lab-node01.local.key
│ ├── lab-node01.local.pem
│ ├── lab-node02.local.key
│ ├── lab-node02.local.pem
│ ├── lab-node03.local.key
│ └── lab-node03.local.pem
├── group_vars
│ ├── all
│ └── pve01
├── inventory
├── roles
│ └── requirements.yml
├── site.yml
└── templates
└── interfaces-pve01.j2
6 directories, 12 files
Hal pertama yang mungkin Anda perhatikan adalah bahwa kami memiliki banyak file .key
dan .pem
. Ini adalah kunci pribadi dan sertifikat SSL yang akan digunakan peran ini untuk mengonfigurasi antarmuka web untuk ProxMox di semua node. Namun, ini tidak diperlukan, jika Anda ingin terus menggunakan sertifikat yang ditandatangani oleh CA yang ProxMox diatur secara internal. Anda biasanya menggunakan lemari besi ansible untuk mengenkripsi kunci pribadi, misalnya:
ansible-vault encrypt files/pve01/*.key
Ini kemudian mengharuskan Anda untuk lulus kata sandi lemari besi saat menjalankan buku pedoman.
Pertama mari kita tentukan host cluster kami. File inventory
kami mungkin terlihat seperti ini:
[pve01]
lab-node01.local
lab-node02.local
lab-node03.local
Anda bisa memiliki banyak cluster, jadi itu ide yang bagus untuk memiliki satu kelompok untuk setiap cluster. Sekarang, mari kita tentukan persyaratan peran kami dalam roles/requirements.yml
:
---
- src: geerlingguy.ntp
- src: lae.proxmox
Kami membutuhkan peran NTP untuk mengonfigurasi NTP, jadi kami menggunakan peran Jeff Geerling untuk melakukannya. Anda tidak akan membutuhkannya jika Anda sudah memiliki NTP yang dikonfigurasi atau memiliki metode yang berbeda untuk mengkonfigurasi NTP.
Sekarang, mari kita tentukan beberapa variabel grup. Pertama, mari kita buat group_vars/all
untuk mengatur variabel terkait NTP:
---
ntp_manage_config: true
ntp_servers:
- lab-ntp01.local iburst
- lab-ntp02.local iburst
Tentu saja, ganti server NTP dengan yang Anda sukai.
Sekarang untuk daging buku pedoman Anda, variabel grup pve01
. Buat file group_vars/pve01
, tambahkan yang berikut, dan ubah sesuai untuk lingkungan Anda.
---
pve_group: pve01
pve_watchdog: ipmi
pve_ssl_private_key: "{{ lookup('file', pve_group + '/' + inventory_hostname + '.key') }}"
pve_ssl_certificate: "{{ lookup('file', pve_group + '/' + inventory_hostname + '.pem') }}"
pve_cluster_enabled: yes
pve_groups:
- name: ops
comment: Operations Team
pve_users:
- name: admin1@pam
email: [email protected]
firstname: Admin
lastname: User 1
groups: [ "ops" ]
- name: admin2@pam
email: [email protected]
firstname: Admin
lastname: User 2
groups: [ "ops" ]
pve_acls:
- path: /
roles: [ "Administrator" ]
groups: [ "ops" ]
pve_storages:
- name: localdir
type: dir
content: [ "images", "iso", "backup" ]
path: /plop
maxfiles: 4
pve_ssh_port: 22
interfaces_template: "interfaces-{{ pve_group }}.j2"
pve_group
diatur ke nama grup dari cluster kami, pve01
- itu akan digunakan untuk keperluan memastikan semua host dalam grup itu dapat saling terhubung dan dikelompokkan bersama. Perhatikan bahwa nama cluster PVE akan diatur ke nama grup ini juga, kecuali ditentukan lain oleh pve_cluster_clustername
. Meninggalkan ini tidak terdefinisi akan default ke proxmox
.
pve_watchdog
Di sini memungkinkan dukungan pengawas IPMI dan mengkonfigurasi PVE's HA Manager untuk menggunakannya. Gunakan None
atau biarkan ini tidak terdefinisi untuk menggunakan pengawas perangkat lunak ProxMox default. Jika diatur ke hal lain, nilainya diharapkan menjadi modul kernel Watchdog.
pve_ssl_private_key
dan pve_ssl_certificate
point ke sertifikat SSL untuk pvecluster. Di sini, pencarian file digunakan untuk membaca konten file di buku pedoman, misalnya files/pve01/lab-node01.key
. Anda mungkin hanya bisa menggunakan variabel host alih -alih file, jika Anda mau.
pve_cluster_enabled
memungkinkan peran untuk melakukan semua tugas manajemen cluster. Ini termasuk membuat cluster jika tidak ada, atau menambahkan node ke cluster yang ada. Ada cek untuk memastikan Anda tidak mencampur node yang sudah ada di kelompok yang ada dengan nama yang berbeda.
pve_groups
, pve_users
, dan pve_acls
mengesahkan beberapa pengguna UNIX lokal (mereka harus sudah ada) untuk mengakses PVE dan memberi mereka peran administrator sebagai bagian dari grup ops
. Baca bagian Pengguna dan Manajemen ACL untuk info lebih lanjut.
pve_storages
memungkinkan untuk membuat berbagai jenis penyimpanan dan mengonfigurasinya. Backend perlu didukung oleh ProxMox. Baca bagian manajemen penyimpanan untuk info lebih lanjut.
pve_metric_servers
memungkinkan Anda untuk mengkonfigurasi server metrik untuk cluster PVE. Ini berguna jika Anda ingin menggunakan influxdb, grafit atau lainnya (dengan telegraf).
pve_ssh_port
memungkinkan Anda untuk mengubah port SSH. Jika SSH Anda mendengarkan di port selain default 22, silakan atur variabel ini. Jika simpul baru bergabung dengan cluster, cluster PVE perlu berkomunikasi sekali melalui SSH.
pve_manage_ssh
(default true) memungkinkan Anda untuk menonaktifkan perubahan apa pun yang akan dilakukan modul ini ke konfigurasi server ssh Anda. Ini berguna jika Anda menggunakan peran lain untuk mengelola server SSH Anda. Perhatikan bahwa pengaturan ini ke false tidak didukung secara resmi, Anda sendiri untuk mereplikasi perubahan yang biasanya dilakukan di ssh_cluster_config.yml
dan pve_add_node.yml
.
interfaces_template
diatur ke jalur templat yang akan kami gunakan untuk mengonfigurasi jaringan pada mesin Debian ini. Ini hanya diperlukan jika Anda ingin mengelola jaringan dari ansible daripada secara manual atau melalui setiap host di PVE. Anda mungkin harus terbiasa dengan Ansible sebelum melakukan ini, karena metode Anda mungkin melibatkan pengaturan variabel host untuk alamat IP untuk setiap host, dll.
Mari kita singkirkan template antarmuka itu. Jangan ragu untuk melewatkan file ini (dan membiarkannya tidak terdefinisi di group_vars/pve01
) sebaliknya. Inilah yang saya gunakan:
# {{ ansible_managed }}
auto lo
iface lo inet loopback
allow-hotplug enp2s0f0
iface enp2s0f0 inet manual
auto vmbr0
iface vmbr0 inet static
address {{ lookup('dig', ansible_fqdn) }}
gateway 10.4.0.1
netmask 255.255.255.0
bridge_ports enp2s0f0
bridge_stp off
bridge_fd 0
allow-hotplug enp2s0f1
auto enp2s0f1
iface enp2s0f1 inet static
address {{ lookup('dig', ansible_hostname + "-clusternet.local") }}
netmask 255.255.255.0
Anda mungkin tidak terbiasa dengan pencarian dig
, tetapi pada dasarnya di sini kami melakukan pencarian rekaman untuk setiap mesin (misalnya lab-node01.local) untuk antarmuka pertama (dan mengkonfigurasinya sebagai jembatan yang akan kami gunakan untuk antarmuka VM ), dan kemudian pencarian lain yang sedikit dimodifikasi untuk jaringan "pengelompokan" yang mungkin kita gunakan untuk CEPH ("Lab-Node01-Clusternet.local"). Tentu saja, milik Anda mungkin terlihat sangat berbeda, terutama jika Anda menggunakan ikatan, tiga jaringan berbeda untuk manajemen/corosync, penyimpanan dan lalu lintas VM, dll.
Akhirnya, mari kita tulis buku pedoman kita. site.yml
akan terlihat seperti ini:
---
- hosts: all
become: True
roles:
- geerlingguy.ntp
# Leave this out if you're not modifying networking through Ansible
- hosts: pve01
become: True
serial: 1
tasks:
- name: Install bridge-utils
apt:
name: bridge-utils
- name: Configure /etc/network/interfaces
template:
src: "{{ interfaces_template }}"
dest: /etc/network/interfaces
register: _configure_interfaces
- block:
- name: Reboot for networking changes
shell: "sleep 5 && shutdown -r now 'Networking changes found, rebooting'"
async: 1
poll: 0
- name: Wait for server to come back online
wait_for_connection:
delay: 15
when: _configure_interfaces is changed
- hosts: pve01
become: True
roles:
- lae.proxmox
Pada dasarnya, kami menjalankan peran NTP di semua host (Anda mungkin ingin menambahkan beberapa mesin non-proxmox), mengkonfigurasi jaringan pada pve01
dengan jaringan cluster terpisah dan tata letak jembatan, reboot untuk membuat perubahan itu berlaku, dan kemudian menjalankan peran proxmox ini ini terhadap tuan rumah untuk menyiapkan cluster.
Pada titik ini, buku pedoman kami sudah siap dan kami dapat menjalankan buku pedoman.
Pastikan bahwa peran dan dependensi diinstal:
ansible-galaxy install -r roles/requirements.yml --force
pip install jmespath dnspython
jmespath
diperlukan untuk beberapa tugas yang melibatkan pengelompokan. dnspython
hanya diperlukan jika Anda menggunakan pencarian dig
, yang mungkin tidak akan Anda lakukan jika Anda melewatkan mengkonfigurasi jaringan. Kami lulus --force
ke ansible-galaxy
di sini sehingga peran diperbarui ke versi terbaru mereka jika sudah diinstal.
Sekarang jalankan buku pedoman:
ansible-playbook -i inventory site.yml -e '{"pve_reboot_on_kernel_update": true}'
The -e '{"pve_reboot_on_kernel_update": true}'
terutama harus dijalankan pertama kali Anda melakukan pengaturan cluster proxmox, karena akan me -reboot server untuk boot ke kernel PVE. Lari berikutnya harus meninggalkan ini, karena Anda ingin reboot server secara berurutan setelah klaster berjalan.
Untuk menentukan pengguna tertentu, gunakan -u root
(mengganti root
), dan jika Anda perlu memberikan kata sandi, gunakan -k
untuk kata sandi ssh dan/atau -K
untuk kata sandi sudo. Misalnya:
ansible-playbook -i inventory site.yml -K -u admin1
Ini akan meminta kata sandi sudo, kemudian masuk ke pengguna admin1
(menggunakan kunci kunci publik - add -k
untuk pw) dan jalankan buku pedoman.
Itu saja! Anda sekarang harus memiliki cluster ProxMox yang sepenuhnya digunakan. Anda mungkin ingin membuat penyimpanan Ceph di atasnya setelah itu (lihat Ceph untuk info lebih lanjut) dan tugas -tugas lain mungkin, tetapi bagian yang sulit sebagian besar lengkap.
Ini akan mengkonfigurasi host di grup pve01
sebagai satu cluster, serta me -reboot mesin jika kernel telah diperbarui. (Hanya disarankan untuk mengatur bendera ini selama instalasi - reboot selama operasi harus terjadi secara serial selama periode pemeliharaan.) Ini juga akan memungkinkan pengawas IPMI.
- hosts: pve01
become: True
roles:
- role: geerlingguy.ntp
ntp_manage_config: true
ntp_servers:
- clock.sjc.he.net,
- clock.fmt.he.net,
- clock.nyc.he.net
- role: lae.proxmox
pve_group: pve01
pve_cluster_enabled: yes
pve_reboot_on_kernel_update: true
pve_watchdog: ipmi
Tentang Nilai Default: Beberapa nilai default dipilih pada waktu berjalan dan karenanya dapat berbeda dari contoh yang tercantum di sini.
[variable]: [default] #[description/purpose]
pve_group: proxmox # host group that contains the Proxmox hosts to be clustered together
pve_repository_line: "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" # apt-repository configuration - change to enterprise if needed (although TODO further configuration may be needed)
pve_remove_subscription_warning: true # patches the subscription warning messages in proxmox if you are using the community edition
pve_extra_packages: [] # Any extra packages you may want to install, e.g. ngrep
pve_run_system_upgrades: false # Let role perform system upgrades
pve_run_proxmox_upgrades: true # Let role perform Proxmox VE upgrades
pve_check_for_kernel_update: true # Runs a script on the host to check kernel versions
pve_reboot_on_kernel_update: false # If set to true, will automatically reboot the machine on kernel updates
pve_reboot_on_kernel_update_delay: 60 # Number of seconds to wait before and after a reboot process to proceed with next task in cluster mode
pve_remove_old_kernels: true # Currently removes kernel from main Debian repository
# pve_default_kernel_version: # version to pin proxmox-default-kernel to (see https://pve.proxmox.com/wiki/Roadmap#Kernel_6.8)
pve_pcie_passthrough_enabled: false # Set this to true to enable PCIe passthrough.
pve_iommu_passthrough_mode: false # Set this to true to allow VMs to bypass the DMA translation. This might increase performance for IOMMU passthrough.
pve_iommu_unsafe_interrupts: false # Set this to true if your system doesn't support interrupt remapping.
pve_mediated_devices_enabled: false # Set this to true if your device supports gtv-g and you wish to enable split functionality.
pve_pcie_ovmf_enabled: false # Set this to true to enable GPU OVMF PCI passthrough.
pve_pci_device_ids: [] # List of pci device ID's (see https://pve.proxmox.com/wiki/Pci_passthrough#GPU_Passthrough).
pve_vfio_blacklist_drivers: [] # List of device drivers to blacklist from the Proxmox host (see https://pve.proxmox.com/wiki/PCI(e)_Passthrough).
pve_pcie_ignore_msrs: false # Set this to true if passing through to Windows machine to prevent VM crashing.
pve_pcie_report_msrs: true # Set this to false to prevent dmesg system from logging msrs crash reports.
pve_watchdog: none # Set this to "ipmi" if you want to configure a hardware watchdog. Proxmox uses a software watchdog (nmi_watchdog) by default.
pve_watchdog_ipmi_action: power_cycle # Can be one of "reset", "power_cycle", and "power_off".
pve_watchdog_ipmi_timeout: 10 # Number of seconds the watchdog should wait
pve_zfs_enabled: no # Specifies whether or not to install and configure ZFS packages
# pve_zfs_options: "" # modprobe parameters to pass to zfs module on boot/modprobe
# pve_zfs_zed_email: "" # Should be set to an email to receive ZFS notifications
pve_zfs_create_volumes: [] # List of ZFS Volumes to create (to use as PVE Storages). See section on Storage Management.
pve_ceph_enabled: false # Specifies wheter or not to install and configure Ceph packages. See below for an example configuration.
pve_ceph_repository_line: "deb http://download.proxmox.com/debian/ceph-pacific bookworm main" # apt-repository configuration. Will be automatically set for 6.x and 7.x (Further information: https://pve.proxmox.com/wiki/Package_Repositories)
pve_ceph_network: "{{ (ansible_default_ipv4.network +'/'+ ansible_default_ipv4.netmask) | ansible.utils.ipaddr('net') }}" # Ceph public network
# pve_ceph_cluster_network: "" # Optional, if the ceph cluster network is different from the public network (see https://pve.proxmox.com/pve-docs/chapter-pveceph.html#pve_ceph_install_wizard)
pve_ceph_nodes: "{{ pve_group }}" # Host group containing all Ceph nodes
pve_ceph_mon_group: "{{ pve_group }}" # Host group containing all Ceph monitor hosts
pve_ceph_mgr_group: "{{ pve_ceph_mon_group }}" # Host group containing all Ceph manager hosts
pve_ceph_mds_group: "{{ pve_group }}" # Host group containing all Ceph metadata server hosts
pve_ceph_osds: [] # List of OSD disks
pve_ceph_pools: [] # List of pools to create
pve_ceph_fs: [] # List of CephFS filesystems to create
pve_ceph_crush_rules: [] # List of CRUSH rules to create
# pve_ssl_private_key: "" # Should be set to the contents of the private key to use for HTTPS
# pve_ssl_certificate: "" # Should be set to the contents of the certificate to use for HTTPS
pve_roles: [] # Added more roles with specific privileges. See section on User Management.
pve_groups: [] # List of group definitions to manage in PVE. See section on User Management.
pve_users: [] # List of user definitions to manage in PVE. See section on User Management.
pve_storages: [] # List of storages to manage in PVE. See section on Storage Management.
pve_metric_servers: [] # List of metric servers to configure in PVE.
pve_datacenter_cfg: {} # Dictionary to configure the PVE datacenter.cfg config file.
pve_domains_cfg: [] # List of realms to use as authentication sources in the PVE domains.cfg config file.
pve_no_log: false # Set this to true in production to prevent leaking of storage credentials in run logs. (may be used in other tasks in the future)
Untuk mengaktifkan pengelompokan dengan peran ini, konfigurasikan variabel berikut dengan tepat:
pve_cluster_enabled: no # Set this to yes to configure hosts to be clustered together
pve_cluster_clustername: "{{ pve_group }}" # Should be set to the name of the PVE cluster
pve_manage_hosts_enabled : yes # Set this to no to NOT configure hosts file (case of using vpn and hosts file is already configured)
Variabel berikut digunakan untuk memberikan informasi jaringan ke Corosync. Ini dikenal sebagai RING0_ADDR/RING1_ADDR atau LINK0_ADDR/LINK1_ADDR, tergantung pada versi PVE. Mereka harus berupa alamat IPv4 atau IPv6. Anda juga dapat mengonfigurasi prioritas antarmuka ini untuk mengisyaratkan corosync antarmuka mana yang harus menangani lalu lintas cluster (angka yang lebih rendah menunjukkan prioritas yang lebih tinggi). Untuk informasi lebih lanjut, lihat bab Manajer Cluster dalam dokumentasi PVE.
# pve_cluster_addr0: "{{ defaults to the default interface ipv4 or ipv6 if detected }}"
# pve_cluster_addr1: "another interface's IP address or hostname"
# pve_cluster_addr0_priority: 255
# pve_cluster_addr1_priority: 0
Anda dapat mengatur opsi di file konfigurasi datacenter.cfg:
pve_datacenter_cfg:
keyboard: en-us
Anda juga dapat mengonfigurasi grup HA Manager:
pve_cluster_ha_groups: [] # List of HA groups to create in PVE.
Contoh ini membuat grup "lab_node01" untuk sumber daya yang ditetapkan untuk host lab-node01:
pve_cluster_ha_groups:
- name: lab_node01
comment: "My HA group"
nodes: "lab-node01"
nofailback: 0
restricted: 0
Semua opsi konfigurasi yang didukung di file datacenter.cfg didokumentasikan di bagian ProxMox Manual Datacenter.cfg.
Agar penguatan ulang antarmuka jaringan secara langsung berfungsi melalui PVE Web UI, Anda perlu menginstal paket ifupdown2
. Perhatikan bahwa ini akan menghapus ifupdown
. Anda dapat menentukan ini menggunakan variabel peran pve_extra_packages
.
Anda dapat mengatur dunia / domain sebagai sumber otentikasi di file konfigurasi domains.cfg
. Jika file ini tidak ada, hanya Linux PAM
dan Proxmox VE authentication server
Realms yang tersedia. Jenis yang didukung adalah pam
, pve
, ad
dan ldap
. Dimungkinkan untuk secara otomatis menyinkronkan pengguna dan grup untuk ranah berbasis LDAP (LDAP & Microsoft Active Directory) dengan sync: true
. Satu ranah harus memiliki properti default: 1
untuk menandainya sebagai default:
pve_domains_cfg:
- name: pam
type: pam
attributes:
comment: Linux PAM standard authentication
- name: pve
type: pve
attributes:
comment: Proxmox VE authentication server
- name: ad
type: ad
attributes:
comment: Active Directory authentication
domain: yourdomain.com
server1: dc01.yourdomain.com
default: 1
secure: 1
server2: dc02.yourdomain.com
- name: ldap
type: ldap
sync: true
attributes:
comment: LDAP authentication
base_dn: CN=Users,dc=yourdomain,dc=com
bind_dn: "uid=svc-reader,CN=Users,dc=yourdomain,dc=com"
bind_password: "{{ secret_ldap_svc_reader_password }}"
server1: ldap1.yourdomain.com
user_attr: uid
secure: 1
server2: ldap2.yourdomain.com
Peran ini tidak menginstal NTP, jadi Anda harus mengkonfigurasi NTP sendiri, misalnya dengan peran geerlingguy.ntp
seperti yang ditunjukkan dalam contoh buku pedoman.
Saat pengelompokan diaktifkan, peran ini memanfaatkan filter json_query
, yang mengharuskan perpustakaan jmespath
diinstal pada host kontrol Anda. Anda dapat pip install jmespath
atau menginstalnya melalui paket paket distribusi Anda, misalnya apt-get install python-jmespath
.
Anda dapat menggunakan peran ini untuk mengelola pengguna dan grup dalam proxmox ve (baik dalam penyebaran server tunggal dan penyebaran cluster). Berikut adalah beberapa contoh.
pve_groups:
- name: Admins
comment: Administrators of this PVE cluster
- name: api_users
- name: test_users
pve_users:
- name: root@pam
email: [email protected]
- name: lae@pam
email: [email protected]
firstname: Musee
lastname: Ullah
groups: [ "Admins" ]
- name: pveapi@pve
password: "Proxmox789"
groups:
- api_users
- name: testapi@pve
password: "Test456"
enable: no
groups:
- api_users
- test_users
- name: tempuser@pam
expire: 1514793600
groups: [ "test_users" ]
comment: "Temporary user set to expire on 2018年 1月 1日 月曜日 00:00:00 PST"
email: [email protected]
firstname: Test
lastname: User
Rujuk ke library/proxmox_user.py
tautan dan library/proxmox_group.py
tautan untuk dokumentasi modul.
Untuk mengelola peran dan ACL, modul serupa digunakan, tetapi perbedaan utamanya adalah bahwa sebagian besar parameter hanya menerima daftar (dapat berubah):
pve_roles:
- name: Monitoring
privileges:
- "Sys.Modify"
- "Sys.Audit"
- "Datastore.Audit"
- "VM.Monitor"
- "VM.Audit"
pve_acls:
- path: /
roles: [ "Administrator" ]
groups: [ "Admins" ]
- path: /pools/testpool
roles: [ "PVEAdmin" ]
users:
- pveapi@pve
groups:
- test_users
Rujuk ke library/proxmox_role.py
Link dan library/proxmox_acl.py
Link untuk dokumentasi modul.
Anda dapat menggunakan peran ini untuk mengelola penyimpanan dalam proxmox ve (baik dalam penyebaran server tunggal dan penyebaran cluster). Untuk saat ini, satu -satunya tipe yang didukung adalah dir
, rbd
, nfs
, cephfs
, lvm
, lvmthin
, zfspool
, btrfs
, cifs
, dan pbs
. Berikut adalah beberapa contoh.
pve_storages:
- name: dir1
type: dir
content: [ "images", "iso", "backup" ]
path: /ploup
disable: no
maxfiles: 4
- name: ceph1
type: rbd
content: [ "images", "rootdir" ]
nodes: [ "lab-node01.local", "lab-node02.local" ]
username: admin
pool: rbd
krbd: yes
monhost:
- 10.0.0.1
- 10.0.0.2
- 10.0.0.3
- name: nfs1
type: nfs
content: [ "images", "iso" ]
server: 192.168.122.2
export: /data
- name: lvm1
type: lvm
content: [ "images", "rootdir" ]
vgname: vg1
- name: lvmthin1
type: lvmthin
content: [ "images", "rootdir" ]
vgname: vg2
thinpool: data
- name: cephfs1
type: cephfs
content: [ "snippets", "vztmpl", "iso" ]
nodes: [ "lab-node01.local", "lab-node02.local" ]
monhost:
- 10.0.0.1
- 10.0.0.2
- 10.0.0.3
- name: pbs1
type: pbs
content: [ "backup" ]
server: 192.168.122.2
username: user@pbs
password: PBSPassword1
datastore: main
namespace: Top/something # Optional
- name: zfs1
type: zfspool
content: [ "images", "rootdir" ]
pool: rpool/data
sparse: true
- name: btrfs1
type: btrfs
content: [ "images", "rootdir" ]
nodes: [ "lab-node01.local", "lab-node02.local" ]
path: /mnt/proxmox_storage
is_mountpoint: true
- name: cifs1
server: cifs-host.domain.tld
type: cifs
content: [ "snippets", "vztmpl", "iso" ]
share: sharename
subdir: /subdir
username: user
password: supersecurepass
domain: addomain.tld
Lihat https://pvve.proxmox.com/pve-docs/api-viewer/index.html untuk informasi lebih lanjut.
Saat ini tipe zfspool
hanya dapat digunakan untuk images
dan konten rootdir
. Jika Anda ingin menyimpan jenis konten lain pada volume ZFS, Anda harus menentukannya dengan tipe dir
, path /<POOL>/<VOLUME>
dan menambahkan entri di pve_zfs_create_volumes
. Contoh ini menambahkan penyimpanan iso
di kumpulan ZFS:
pve_zfs_create_volumes:
- rpool/iso
pve_storages:
- name: iso
type: dir
path: /rpool/iso
content: [ "iso" ]
Rujuk ke library/proxmox_storage.py
Link untuk dokumentasi modul.
Bagian ini bisa menggunakan sedikit lebih banyak cinta. Jika Anda secara aktif menggunakan peran ini untuk mengelola kluster PVE Ceph Anda, jangan ragu untuk menyempurnakan bagian ini secara lebih menyeluruh dan buka permintaan tarik! Lihat masalah #68.
Manajemen PVE Ceph dengan peran ini bersifat eksperimental. Sementara pengguna telah berhasil menggunakan peran ini untuk menggunakan PvE Ceph, itu tidak sepenuhnya diuji dalam CI (karena kurangnya perangkat blok yang dapat digunakan untuk digunakan sebagai OSDS dalam Travis CI). Harap sebarkan lingkungan pengujian dengan konfigurasi Anda terlebih dahulu sebelum Prod, dan laporkan masalah apa pun jika Anda mengalami apa pun.
Peran ini dapat mengonfigurasi sistem penyimpanan CEPH pada host ProxMox Anda. Definisi berikut menunjukkan beberapa konfigurasi yang dimungkinkan.
pve_ceph_enabled: true
pve_ceph_network: '172.10.0.0/24'
pve_ceph_cluster_network: '172.10.1.0/24'
pve_ceph_nodes: "ceph_nodes"
pve_ceph_osds:
# OSD with everything on the same device
- device: /dev/sdc
# OSD with block.db/WAL on another device
- device: /dev/sdd
block.db: /dev/sdb1
# encrypted OSD with everything on the same device
- device: /dev/sdc
encrypted: true
# encrypted OSD with block.db/WAL on another device
- device: /dev/sdd
block.db: /dev/sdb1
encrypted: true
# Crush rules for different storage classes
# By default 'type' is set to host, you can find valid types at
# (https://docs.ceph.com/en/latest/rados/operations/crush-map/)
# listed under 'TYPES AND BUCKETS'
pve_ceph_crush_rules:
- name: replicated_rule
type: osd # This is an example of how you can override a pre-existing rule
- name: ssd
class: ssd
type: osd
min-size: 2
max-size: 8
- name: hdd
class: hdd
type: host
# 2 Ceph pools for VM disks which will also be defined as Proxmox storages
# Using different CRUSH rules
pve_ceph_pools:
- name: ssd
pgs: 128
rule: ssd
application: rbd
storage: true
# This Ceph pool uses custom size/replication values
- name: hdd
pgs: 32
rule: hdd
application: rbd
storage: true
size: 2
min-size: 1
# This Ceph pool uses custom autoscale mode : "off" | "on" | "warn"> (default = "warn")
- name: vm-storage
pgs: 128
rule: replicated_rule
application: rbd
autoscale_mode: "on"
storage: true
pve_ceph_fs:
# A CephFS filesystem not defined as a Proxmox storage
- name: backup
pgs: 64
rule: hdd
storage: false
mountpoint: /srv/proxmox/backup
pve_ceph_network
secara default menggunakan filter ansible.utils.ipaddr
, yang mengharuskan pustaka netaddr
diinstal dan dapat digunakan oleh pengontrol ansible Anda.
pve_ceph_nodes
secara default menggunakan pve_group
, parameter ini memungkinkan untuk menentukan node yang menginstal ceph (misalnya jika Anda tidak ingin menginstal ceph pada semua node Anda).
pve_ceph_osds
secara default menciptakan volume Ceph yang tidak terenkripsi. Untuk menggunakan volume terenkripsi parameter encrypted
harus diatur per drive ke true
.
Peran ini dapat dikonfigurasi untuk memungkinkan passthrough perangkat PCI dari host Proxmox ke VM. Fitur ini tidak diaktifkan secara default karena tidak semua motherboard dan mendukung fitur ini. Untuk mengaktifkan Passthrough, perangkat CPU harus mendukung virtualisasi perangkat keras (VT-D untuk sistem berbasis Intel dan AMD-V untuk sistem berbasis AMD). Lihat manual dari semua komponen untuk menentukan apakah fitur ini didukung atau tidak. Konvensi penamaan Will bervariasi, tetapi biasanya disebut sebagai iommu, VT-D, atau AMD-V.
Dengan mengaktifkan fitur ini, perangkat khusus (seperti perangkat GPU atau USB) dapat diteruskan ke VM. Seiring dengan perangkat khusus, berbagai perangkat terintegrasi seperti Intel atau GPU terintegrasi AMD juga dapat diteruskan ke VM.
Beberapa perangkat dapat memanfaatkan penggunaan yang dimediasi. Perangkat yang dimediasi dapat diteruskan ke beberapa VM untuk berbagi sumber daya, sementara masih dapat digunakan oleh sistem host. Pemisahan perangkat tidak selalu didukung dan harus divalidasi sebelum diaktifkan untuk mencegah kesalahan. Rujuk ke manual perangkat yang ingin Anda lewati untuk menentukan apakah perangkat mampu memediasi penggunaan (saat ini peran ini hanya mendukung GVT-G; SR-IOV saat ini tidak didukung dan harus diaktifkan secara manual setelah penyelesaian peran).
Berikut ini adalah contoh konfigurasi yang memungkinkan PCIe Passthrough:
pve_pcie_passthrough_enabled : true
pve_iommu_passthrough_mode : true
pve_iommu_unsafe_interrupts : false
pve_mediated_devices_enabled : false
pve_pcie_ovmf_enabled : false
pve_pci_device_ids :
- id : " 10de:1381 "
- id : " 10de:0fbc "
pve_vfio_blacklist_drivers :
- name : " radeon "
- name : " nouveau "
- name : " nvidia "
pve_pcie_ignore_msrs : false
pve_pcie_report_msrs : true
pve_pcie_passthrough_enabled
Diperlukan untuk menggunakan fungsionalitas PCIe Passthrough. Tanpa ini diaktifkan, semua bidang terkait PCIe lainnya tidak akan digunakan.
pve_iommu_passthrough_mode
Mengaktifkan mode Stafsthrough iommu dapat meningkatkan kinerja perangkat. Dengan mengaktifkan fitur ini, memungkinkan VM untuk melewati terjemahan DMA default yang biasanya dilakukan oleh hyper-visor. Sebagai gantinya, VMS melewati permintaan DMA langsung ke perangkat keras IOMMU.
pve_iommu_unsafe_interrupts
harus diaktifkan untuk memungkinkan passthrough PCI jika sistem Anda tidak mendukung pengembalian interupsi. Anda dapat menemukan periksa apakah perangkat mendukung pengurangan interupsi dengan menggunakan dmesg | grep 'remapping'
. Jika Anda melihat salah satu baris berikut:
Kemudian pemecatan interupsi sistem didukung dan Anda tidak perlu mengaktifkan interupsi yang tidak aman. Ketahuilah bahwa dengan mengaktifkan nilai ini, sistem Anda dapat menjadi tidak stabil.
pve_mediated_devices_enabled
memungkinkan dukungan GVT-G untuk perangkat terintegrasi seperti Intel IGPU. Tidak semua perangkat mendukung GVT-G sehingga disarankan untuk memeriksa dengan perangkat spesifik Anda sebelumnya untuk memastikannya diizinkan.
pve_pcie_ovmf_enabled
Mengaktifkan GPU OVMF PCI Passthrough. Saat menggunakan OVMF, Anda harus memilih 'OVMF' sebagai opsi BIOS untuk VM alih -alih 'Seabios' di dalam ProxMox. Pengaturan ini akan mencoba untuk memilih perangkat dari arbitrase VGA jika memungkinkan.
pve_pci_device_ids
adalah daftar ID perangkat dan vendor yang ingin diteruskan ke VM dari host. Lihat bagian 'GPU Passthrough' di Proxmox Wiki untuk menemukan perangkat spesifik dan ID vendor Anda. Saat mengatur nilai ini, diperlukan untuk menentukan 'ID' untuk setiap elemen baru dalam array.
pve_vfio_blacklist_drivers
adalah daftar driver yang akan dikecualikan/daftar hitam dari host. Ini diperlukan saat melewati perangkat PCI untuk mencegah host menggunakan perangkat sebelum dapat ditetapkan ke VM. Saat mengatur nilai ini, diperlukan untuk menentukan 'nama' untuk setiap elemen baru dalam array.
pve_pcie_ignore_msrs
mencegah beberapa aplikasi Windows seperti Geforce Experience, Passmark Performance Test dan Sisoftware Sandra dari menabrak VM. Nilai ini hanya diperlukan saat meneruskan perangkat PCI ke sistem berbasis Windows.
pve_pcie_report_msrs
dapat digunakan untuk mengaktifkan atau menonaktifkan pesan logging dari peringatan MSRS. Jika Anda melihat banyak pesan peringatan di log sistem 'DMESG' Anda, nilai ini dapat digunakan untuk membungkam peringatan MSRS.
Anda dapat mengonfigurasi server metrik di proxmox ve menggunakan variabel peran pve_metric_servers
. Di bawah ini adalah contoh konfigurasi untuk berbagai jenis server metrik:
pve_metric_servers :
- id : influxdb1
port : 8086
server : influxdb.example.com
type : influxdb
protocol : http
organization : myorg
bucket : mybucket
token : mytoken
timeout : 30
max_body_size : 25000000
verify_certificate : true
- id : graphite1
port : 2003
server : graphite.example.com
type : graphite
protocol : tcp
path : mygraphitepath
mtu : 1500
id
: (Diperlukan) Pengidentifikasi unik untuk server metrik.port
: (Opsional) Port dari server metrik. Default adalah 8089
.server
: (Diperlukan) Nama DNS atau Alamat IP dari Server Metrik.type
: (Opsional) Jenis server metrik. Nilai yang mungkin: influxdb
, graphite
. Default adalah influxdb
.protocol
: (Opsional) Protokol yang digunakan untuk mengirim metrik. Nilai yang mungkin: udp
, tcp
, http
, https
. Default adalah udp
.disable
: (Opsional) Nonaktifkan server metrik. Default false
.organization
: (Opsional) Nama Organisasi. Hanya tersedia untuk influxdb dengan HTTP V2 API.bucket
: (opsional) Nama ember untuk influxdb. Hanya berguna dengan HTTP V2 API atau kompatibel.token
: (Opsional) InfluxDB Akses Token. Hanya diperlukan saat menggunakan HTTP V2 API.path
: (Opsional) Path Root Grafit. Hanya tersedia untuk grafit.api_path_prefix
: (Opsional) API Path Prefix dimasukkan antara <host>:<port>/
dan /api2/
. Berguna jika layanan influxdb berjalan di belakang proxy terbalik. Hanya tersedia untuk influxdb dengan HTTP V2 API.timeout
: (Opsional) Batas waktu dalam hitungan detik. Hanya tersedia untuk influxdb dengan HTTP V2 API atau soket TCP grafit.max_body_size
: (Opsional) Ukuran tubuh maksimum dalam byte. Hanya tersedia untuk influxdb dengan HTTP V2 API. Default adalah 25000000
.mtu
: (Opsional) MTU untuk transmisi metrik UDP.verify_certificate
: (Opsional) Verifikasi sertifikat SSL. Tersedia hanya untuk influxdb dengan https. Proxmox 8.2 memperkenalkan Linux 6.8, yang dapat menyebabkan masalah dalam beberapa penyebaran. Untuk mengatasi hal ini, Anda dapat menyematkan versi kernel yang digunakan untuk 6,5 dengan menambahkan variabel peran berikut:
pve_default_kernel_version : 1.0.1
Ini membuat pin pada paket proxmox-default-kernel
, yang merupakan metode yang disarankan oleh PVE. Ini dapat dihapus dengan menegaskan variabel peran ini.
Tambahkan bagian ini ke ansible.cfg
Anda.
[ssh_connection]
ssh_args = -o ServerAliveInterval=20
Masalah referensi
Saat mengembangkan fitur baru atau memperbaiki sesuatu dalam peran ini, Anda dapat menguji perubahan Anda dengan menggunakan Vagrant (hanya libvirt yang didukung saat ini). Playbook dapat ditemukan di tests/vagrant
(jadi pastikan untuk memodifikasi variabel grup sesuai kebutuhan). Pastikan untuk menguji perubahan apa pun pada semua versi yang didukung Debian (perbarui Vagrantfile secara lokal untuk menggunakan debian/bookworm64
, debian/bullseye64
, atau debian/buster64
) sebelum mengirimkan PR.
Anda juga dapat menentukan proxy caching yang tepat (misalnya apt-cacher-ng
, dan harus dijalankan pada port 3142) dengan variabel lingkungan APT_CACHE_HOST
untuk mempercepat unduhan paket jika Anda memiliki satu berjalan secara lokal di lingkungan Anda. Vagrant Playbook akan mendeteksi apakah proxy caching tersedia atau tidak dan hanya menggunakannya jika dapat diakses dari jaringan Anda, sehingga Anda bisa mengatur variabel ini secara permanen di lingkungan pengembangan Anda jika Anda mau.
Misalnya, Anda dapat menjalankan yang berikut untuk menunjukkan output verbose/lebih mudah untuk membaca, menggunakan proxy caching, dan menjaga VM tetap berjalan jika Anda mengalami kesalahan (sehingga Anda dapat memecahkan masalah dan/atau menjalankan vagrant provision
setelah diperbaiki):
APT_CACHE_HOST=10.71.71.10 ANSIBLE_STDOUT_CALLBACK=debug vagrant up --no-destroy-on-error
Musee Ullah (@lae, [email protected]) - Pengembang Utama
Fabien Brachere (@fbrachere) - Dukungan Konfigurasi Penyimpanan
Gaudenz Steinlin (@Gaundez) - Dukungan Ceph, dll
Richard Scott (@zenntrix) - Dukungan Ceph, Dukungan PVE 7.X, dll
Thoralf Rickert -Wendt (@Trickert76) - Dukungan PVE 6.X, dll
Engin Dumlu (@roadrunner)
Jonas Meurer (@mejo-)
Ondrej Flidr (@snipercze)
niko2 (@niko2)
Christian Aublet (@Caublet)
Gille Pietri (@gilou)
Michael Holasek (@Mholasek)
Alexander Petermann (@lexxxel) - Dukungan PVE 8.x, dll
Bruno Travouillon (@Btravouillon) - Perbaikan UX
TOBIAS NEGD (@WU3RSTLE) - Dukungan Ceph
Pendagtp (@pendagtp) - dukungan ceph
John Marion (@jmariondev)
foerkede (@foerkede) - Dukungan penyimpanan ZFS
GUIFFO JOEL (@Futuriste) - Dukungan Konfigurasi Pool
Adam Delo (@OL3D) - PCIe Passthrough Dukungan Antoine Thys (@thystips) - Dukungan Server Metrik
Daftar lengkap kontributor