데비안 서버에 Proxmox 가상 환경 6.x/7.x/8.x를 설치하고 구성합니다.
이 역할을 통해 Debian Buster (10) 및 Bullseye (11) 및 Bookworm (12)에서 단일 노드 PVE 설치 및 PVE 클러스터 (3+ 노드)를 배포하고 관리 할 수 있습니다. 이 역할의 도움으로 다음을 구성 할 수 있습니다.
datacenter.cfg
pve-no-subscription
또는 pve-enterprise
)클러스터링을 활성화하면이 역할은 다음과 같습니다.
지원을 받거나이 역할에 기여하고 싶지만지도를 원하시면이 불화 서버 (https://discord.gg/cjqr6fg)를 자유롭게 가입하십시오. 이것은 임시 초대이므로 @lae가 역할을 할당하기를 기다려야합니다. 그렇지 않으면 불화가 로그 아웃 할 때 서버에서 귀하를 제거합니다.
이 역할의 주요 목표는 Proxmox VE 클러스터 (Playbook 예제 참조)를 구성하고 관리하는 것이지만,이 역할을 사용하여 단일 노드 Proxmox 서버를 빠르게 설치할 수 있습니다.
나는 당신이 이미 Ansible을 설치하고 있다고 가정합니다. ProxMox를 설치하는 제품에 외부 시스템을 사용해야합니다 (주로 설치 중간에 재부팅하기 때문에 나중에이 유스 케이스에 대해 다소 다르게 처리 할 수 있음).
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
이 역할과 NTP 구성의 역할을 설치하십시오.
ansible-galaxy install lae.proxmox geerlingguy.ntp
이제 설치를 수행 할 수 있습니다.
ansible-playbook install_proxmox.yml -i $SSH_HOST_FQDN, -u $SSH_USER
SSH_USER
에 sudo 암호가있는 경우 -K
플래그를 위 명령으로 전달하십시오. Pubkey Auth 대신 암호를 통해 호스트에 인증되면 -k
플래그를 전달하십시오 ( sshpass
설치되어 있는지 확인하십시오). 명령을 실행하기 전에 해당 변수를 설정하거나 변경할 수 있습니다. 목록이 예상되므로 쉼표가 중요하다는 점에 유의하십시오 (그렇지 않으면 호스트 목록이 포함 된 파일을 찾아 보려고합니다).
완료되면 https://$SSH_HOST_FQDN:8006
에서 proxmox ve 인스턴스에 액세스 할 수 있어야합니다.
새 PlayBook 디렉토리를 만듭니다. 우리는 lab-cluster
라고 부릅니다. 우리의 플레이 북은 결국 이것처럼 보일 것이지만, 당신은 모든 단계를 따를 필요는 없습니다.
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
가장 먼저 주목할 수있는 것은 .key
및 .pem
파일이 많다는 것입니다. 이 역할은 모든 노드에서 Proxmox 용 웹 인터페이스를 구성하는 데 사용할 개인 키 및 SSL 인증서입니다. 그러나 Proxmox가 내부적으로 설정하는 CA의 서명 된 인증서를 계속 사용하려는 경우에는 필요하지 않습니다. 일반적으로 Ansible Vault를 사용하여 개인 키를 암호화 할 수 있습니다.
ansible-vault encrypt files/pve01/*.key
그렇다면 플레이 북을 실행할 때는 금고 암호를 전달해야합니다.
먼저 클러스터 호스트를 지정하겠습니다. inventory
파일은 다음과 같습니다.
[pve01]
lab-node01.local
lab-node02.local
lab-node03.local
여러 클러스터가있을 수 있으므로 각 클러스터마다 하나의 그룹을 갖는 것이 좋습니다. 이제 roles/requirements.yml
에서 역할 요구 사항을 지정해 봅시다.
---
- src: geerlingguy.ntp
- src: lae.proxmox
NTP를 구성하려면 NTP 역할이 필요하므로 Jeff Geerling의 역할을 사용하여 그렇게합니다. NTP가 이미 구성되어 있거나 NTP 구성을위한 다른 방법이 있다면 필요하지 않습니다.
이제 일부 그룹 변수를 지정해 봅시다. 먼저 NTP 관련 변수를 설정하기 위해 group_vars/all
작성하겠습니다.
---
ntp_manage_config: true
ntp_servers:
- lab-ntp01.local iburst
- lab-ntp02.local iburst
물론 NTP 서버를 원하는 서버로 교체하십시오.
이제 pve01
의 그룹 변수 인 Playbook의 살을 위해. group_vars/pve01
파일을 만들고 다음을 추가하고 환경에 따라 그에 따라 수정하십시오.
---
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
클러스터의 그룹 이름 인 pve01
로 설정되어 있습니다. 해당 그룹 내의 모든 호스트가 서로 연결하고 함께 클러스터링 할 수 있도록하기 위해 사용됩니다. pve_cluster_clustername
에서 달리 지정하지 않는 한 PVE 클러스터 이름은이 그룹 이름으로 설정됩니다. 이 정의되지 않은 상태를 남기면 기본값이 proxmox
로 표시됩니다.
pve_watchdog
는 IPMI Watchdog 지원을 활성화하고 PVE의 HA 관리자를 사용하도록 구성합니다. 기본 ProxMox 소프트웨어 감시를 사용하려면이 정의되지 않은 None
로 남겨 두십시오. 다른 것으로 설정되면 값은 Watchdog 커널 모듈이 될 것으로 예상됩니다.
pve_ssl_private_key
및 pve_ssl_certificate
PVECLUST의 SSL 인증서를 가리 킵니다. 여기서 파일 조회 files/pve01/lab-node01.key
Playbook에서 파일의 내용을 읽는 데 사용됩니다. 원하는 경우 파일 대신 호스트 변수 만 사용할 수 있습니다.
pve_cluster_enabled
역할은 모든 클러스터 관리 작업을 수행 할 수 있습니다. 여기에는 존재하지 않는 경우 클러스터 생성 또는 기존 클러스터에 노드를 추가하는 것이 포함됩니다. 이미 다른 이름을 가진 기존 클러스터에있는 노드를 혼합하지 않도록 확인하는 점이 있습니다.
pve_groups
, pve_users
및 pve_acls
일부 로컬 UNIX 사용자 (이미 존재해야 함)가 PVE에 액세스하고 ops
그룹의 일환으로 관리자 역할을 제공 할 수있는 권한을 부여합니다. 자세한 내용은 사용자 및 ACL 관리 섹션을 읽으십시오.
pve_storages
사용하면 다양한 유형의 스토리지를 작성하여 구성 할 수 있습니다. 백엔드는 ProxMox에서 지원해야합니다. 자세한 내용은 스토리지 관리 섹션을 읽으십시오.
pve_metric_servers
사용하면 PVE 클러스터의 메트릭 서버를 구성 할 수 있습니다. 이것은 influxDB, 흑연 또는 기타 (Telegraf)를 사용하려는 경우 유용합니다.
pve_ssh_port
사용하면 SSH 포트를 변경할 수 있습니다. SSH가 기본 22 이외의 포트에서 청취하는 경우이 변수를 설정하십시오. 새 노드가 클러스터에 결합되는 경우 PVE 클러스터는 SSH를 통해 한 번 통신해야합니다.
pve_manage_ssh
(DEFAULT TRUE)를 사용하면이 모듈이 SSH 서버 구성에 대한 변경 사항을 비활성화 할 수 있습니다. SSH 서버를 관리하기 위해 다른 역할을 사용하는 경우 유용합니다. 이것을 False로 설정하는 것은 공식적으로 지원되지 않으며 ssh_cluster_config.yml
및 pve_add_node.yml
에서 정상적으로 변경된 변경 사항을 복제해야합니다.
interfaces_template
이러한 데비안 머신에서 네트워크를 구성하는 데 사용할 템플릿의 경로로 설정됩니다. 이것은 수동으로 또는 PVE의 각 호스트를 통해 Ansible에서 네트워킹을 관리하려는 경우에만 필요합니다. 메소드는 각 호스트의 IP 주소에 대한 호스트 변수를 설정하는 것이 포함될 수 있으므로이 작업을 수행하기 전에 Ansible에 익숙해야합니다.
인터페이스 템플릿을 방해하지 마십시오. 그렇지 않으면이 파일을 건너 뛸 수 있습니다 ( group_vars/pve01
로 정의되지 않음). 내가 사용하는 것은 다음과 같습니다.
# {{ 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
dig
조회에 익숙하지 않을 수도 있지만 기본적으로 여기에서는 첫 번째 인터페이스에 대한 각 컴퓨터 (예 : Lab-Node01.local)에 대한 레코드 조회를 수행하고 있습니다 (및 VM 인터페이스에 사용할 브리지로 구성합니다. ), 그런 다음 CEPH ( "lab-node01-clusternet.local")에 사용할 수있는 "클러스터링"네트워크에 대해 약간 수정 된 또 다른 조회. 물론, 특히 Bonding, Management/Corosync, Storage 및 VM 트래픽 등 3 가지 네트워크를 사용하는 경우 완전히 다르게 보일 수 있습니다.
마지막으로 Playbook을 작성해 봅시다. site.yml
다음과 같이 보입니다.
---
- 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
기본적으로 우리는 모든 호스트에서 NTP 역할을 실행하고 (비 프로스 몬스 머신을 추가 할 수 있음) 별도의 클러스터 네트워크 및 브리지 레이아웃을 사용하여 pve01
에서 네트워킹을 구성하고 변경 사항을 발효시키기 위해 재부팅 한 다음이 proxmox 역할을 실행합니다. 클러스터를 설정하기 위해 호스트에 대해.
이 시점에서 Playbook이 준비되었으며 Playbook을 실행할 수 있습니다.
역할 및 종속성이 설치되었는지 확인하십시오.
ansible-galaxy install -r roles/requirements.yml --force
pip install jmespath dnspython
클러스터링과 관련된 일부 작업에는 jmespath
필요합니다. dnspython
은 dig
조회를 사용하는 경우에만 필요합니다. 네트워킹 구성을 건너 뛰는 경우에는 그렇지 않을 것입니다. 우리는 이미 설치된 경우 최신 버전으로 업데이트되도록 --force
ansible-galaxy
로 전달합니다.
이제 플레이 북을 실행하십시오.
ansible-playbook -i inventory site.yml -e '{"pve_reboot_on_kernel_update": true}'
-e '{"pve_reboot_on_kernel_update": true}'
주로 Proxmox 클러스터 설정을 수행 할 때 주로 실행되므로 서버를 재부팅하여 PVE 커널로 부팅 할 수 있습니다. 클러스터가 실행 된 후 서버를 순차적으로 재부팅하려면 후속 실행이이를 제거해야합니다.
특정 사용자를 지정하려면 -u root
( root
교체)를 사용하고 비밀번호를 제공 해야하는 경우 SSH 비밀번호에는 -k
사용하고 Sudo 비밀번호에는 -K
사용하십시오. 예를 들어:
ansible-playbook -i inventory site.yml -K -u admin1
이렇게하면 Sudo 비밀번호를 요청한 다음 admin1
사용자 (Public Key Auth를 사용하여 -k
추가)에 로그인하고 플레이 북을 실행합니다.
그게 다야! 이제 완전히 배포 된 proxmox 클러스터가 있어야합니다. 나중에 Ceph Storage를 만들고 싶을 수도 있지만 (자세한 내용은 Ceph 참조) 아마도 다른 작업을 수행 할 수 있지만 어려운 부분은 대부분 완전합니다.
이렇게하면 Group pve01
의 호스트를 하나의 클러스터로 구성하고 커널이 업데이트 된 경우 기계를 재부팅합니다. (설치 중에이 플래그를 설정하는 것이 권장됩니다 - 유지 보수 기간 동안 작업 중 재부팅은 연속적으로 발생해야합니다.) 또한 IPMI Watchdog도 가능합니다.
- 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
기본값 정보 : 기본값 중 일부는 실행 시간에 선택되므로 여기에 나열된 예제와 다를 수 있습니다.
[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)
이 역할로 클러스터링을 활성화하려면 다음 변수를 적절하게 구성하십시오.
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)
다음 변수는 Corosync에 네트워킹 정보를 제공하는 데 사용됩니다. 이를 PVE 버전에 따라 Ring0_ADDR/RING1_ADDR 또는 LINK0_ADDR/LINK1_ADDR이라고합니다. IPv4 또는 IPv6 주소 여야합니다. 인터페이스가 클러스터 트래픽을 처리 해야하는 인터페이스를 힌트로 힌트하기 위해 이러한 인터페이스의 우선 순위를 구성 할 수도 있습니다 (낮은 숫자는 우선 순위가 높음). 자세한 내용은 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
Datacenter.cfg 구성 파일에서 옵션을 설정할 수 있습니다.
pve_datacenter_cfg:
keyboard: en-us
HA 관리자 그룹을 구성 할 수도 있습니다.
pve_cluster_ha_groups: [] # List of HA groups to create in PVE.
이 예제는 Lab-Node01 호스트에 할당 된 리소스에 대해 "lab_node01"그룹을 만듭니다.
pve_cluster_ha_groups:
- name: lab_node01
comment: "My HA group"
nodes: "lab-node01"
nofailback: 0
restricted: 0
Datacenter.cfg 파일에서 지원되는 모든 구성 옵션은 Proxmox Manual Datacenter.cfg 섹션에 문서화되어 있습니다.
PVE Web UI를 통해 네트워크 인터페이스의 라이브 재 장전이 작동하려면 ifupdown2
패키지를 설치해야합니다. 이것은 ifupdown
제거합니다. pve_extra_packages
역할 변수를 사용하여이를 지정할 수 있습니다.
domains.cfg
구성 파일에서 Realms / Domains를 인증 소스로 설정할 수 있습니다. 이 파일이없는 경우 Linux PAM
및 Proxmox VE authentication server
영역 만 사용할 수 있습니다. 지원되는 유형은 pam
, pve
, ad
및 ldap
입니다. LDAP 기반 영역 (LDAP & Microsoft Active Directory)의 사용자 및 그룹을 sync: true
와 자동으로 동기화 할 수 있습니다. 하나의 영역에는 default: 1
속성이 있습니다.
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
이 역할은 NTP를 설치하지 않으므로 예제 Playbook에 표시된대로 geerlingguy.ntp
역할과 같은 NTP를 직접 구성해야합니다.
클러스터링이 활성화되면이 역할은 json_query
필터를 사용하므로 jmespath
라이브러리를 제어 호스트에 설치해야합니다. pip install jmespath
하거나 배포의 패키지 관리자 (예 : apt-get install python-jmespath
통해 설치할 수 있습니다.
이 역할을 사용하여 ProxMox VE (단일 서버 배포 및 클러스터 배포 모두) 내에서 사용자 및 그룹을 관리 할 수 있습니다. 다음은 몇 가지 예입니다.
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
모듈 문서에 대해서는 library/proxmox_user.py
링크 및 library/proxmox_group.py
링크를 참조하십시오.
역할 및 ACL을 관리하기 위해서는 유사한 모듈이 사용되지만 주된 차이점은 대부분의 매개 변수가 목록 만 허용한다는 것입니다 (변경 대상).
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
모듈 문서는 library/proxmox_role.py
링크 및 library/proxmox_acl.py
링크를 참조하십시오.
이 역할을 사용하여 ProxMox VE (단일 서버 배포 및 클러스터 배포 모두) 내에서 스토리지를 관리 할 수 있습니다. 현재 유일하게 지원되는 유형은 dir
, rbd
, nfs
, cephfs
, lvm
, lvmthin
, zfspool
, btrfs
, cifs
및 pbs
입니다. 다음은 몇 가지 예입니다.
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
자세한 내용은 https://pve.proxmox.com/pve-docs/api-viewer/index.html을 참조하십시오.
현재 zfspool
유형은 images
및 rootdir
컨텐츠에만 사용할 수 있습니다. 다른 컨텐츠 유형을 ZFS 볼륨에 저장하려면 Type dir
, Path /<POOL>/<VOLUME>
로 지정하고 pve_zfs_create_volumes
에 항목을 추가해야합니다. 이 예제는 ZFS 풀에 iso
스토리지를 추가합니다.
pve_zfs_create_volumes:
- rpool/iso
pve_storages:
- name: iso
type: dir
path: /rpool/iso
content: [ "iso" ]
모듈 문서는 library/proxmox_storage.py
링크를 참조하십시오.
이 섹션은 조금 더 사랑을 사용할 수 있습니다. 이 역할을 적극적으로 사용하여 PVE Ceph 클러스터를 관리하는 경우이 섹션을보다 철저하게 살펴보고 풀 요청을 열어주십시오! 문제 #68을 참조하십시오.
이 역할을 가진 PVE Ceph 관리는 실험적입니다. 사용자는이 역할을 성공적으로 사용하여 PVE CEPH를 배치했지만 CI에서 완전히 테스트되지는 않습니다 (Travis CI에서 OSD로 사용할 수있는 블록 장치가 부족하기 때문에). Prod 전에 먼저 구성으로 테스트 환경을 배포하고 문제가 발생하면 문제를보고하십시오.
이 역할은 proxmox 호스트에서 Ceph 스토리지 시스템을 구성 할 수 있습니다. 다음 정의는 가능한 구성 중 일부를 보여줍니다.
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
기본적으로 ansible.utils.ipaddr
필터를 사용합니다. 여기에는 netaddr
라이브러리를 Ansible 컨트롤러에서 설치하고 사용할 수 있어야합니다.
pve_ceph_nodes
기본적으로 pve_group
사용 하여이 매개 변수를 사용하면 CEPH를 설치하는 노드를 지정할 수 있습니다 (예 : 모든 노드에 Ceph를 설치하지 않으려면).
pve_ceph_osds
기본적으로 암호화되지 않은 CEPH 볼륨을 만듭니다. 암호화 된 볼륨을 사용하려면 encrypted
매개 변수를 드라이브 당을 true
로 설정해야합니다.
이 역할은 ProxMox 호스트에서 VMS로 PCI 장치 통과를 허용하도록 구성 할 수 있습니다. 이 기능은 모든 마더 보드와 CPU 가이 기능을 지원하는 것은 아니기 때문에 기본적으로 활성화되지 않습니다. 통과를 가능하게하려면 장치 CPU는 하드웨어 가상화 (인텔 기반 시스템의 경우 VT-D 및 AMD 기반 시스템의 경우 AMD-V)를 지원해야합니다. 이 기능이 지원되는지 여부를 결정하려면 모든 구성 요소의 매뉴얼을 참조하십시오. 의 이름 지정 규칙은 다양하지만 일반적으로 iommu, vt-d 또는 amd-v라고합니다.
이 기능을 활성화하면 전용 장치 (예 : GPU 또는 USB 장치)를 VMS로 전달할 수 있습니다. 전용 장치와 함께 Intel 또는 AMD의 통합 GPU와 같은 다양한 통합 장치도 VMS로 전달할 수 있습니다.
일부 장치는 중재 사용을 활용할 수 있습니다. 중재 장치는 여러 VM으로 전달하여 리소스를 공유 할 수 있지만 여전히 호스트 시스템에서 사용할 수 있습니다. 장치 분할이 항상 지원되는 것은 아니며 오류를 방지하기 위해 활성화되기 전에 검증되어야합니다. 장치가 중재 할 수 있는지 여부를 결정하기 위해 통과하려는 장치 매뉴얼을 참조하십시오 (현재이 역할은 GVT-G 만 지원하고 SR-IOV는 현재 지원되지 않으며 역할 완료 후 수동으로 활성화되어야 함).
다음은 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
PCIE Passthrough 기능을 사용해야합니다. 이 활성화가 없으면 다른 모든 PCIE 관련 필드는 사용되지 않습니다.
pve_iommu_passthrough_mode
iommu passthrough 모드를 활성화하면 장치 성능이 향상 될 수 있습니다. 이 기능을 활성화함으로써 VMS는 일반적으로 하이퍼 바이저가 수행하는 기본 DMA 변환을 우회 할 수 있습니다. 대신, VMS는 DMA 요청을 하드웨어 iommu로 직접 요청합니다.
시스템이 인터럽트 리핑을 지원하지 않으면 pve_iommu_unsafe_interrupts
활성화되어 있어야합니다. dmesg | grep 'remapping'
. 다음 줄 중 하나가 표시되면 :
그런 다음 시스템 인터럽트 리핑이 지원되며 안전하지 않은 인터럽트를 활성화 할 필요가 없습니다. 이 가치를 활성화함으로써 시스템이 불안정해질 수 있습니다.
pve_mediated_devices_enabled
Intel IGPU와 같은 통합 장치에 대한 GVT-G 지원을 활성화합니다. 모든 장치가 GVT-G를 지원하는 것은 아니므로 특정 장치를 미리 확인하여 허용되는지 확인하는 것이 좋습니다.
pve_pcie_ovmf_enabled
GPU OVMF PCI 패스 스루를 활성화합니다. OVMF를 사용하는 경우 ProxMox 내의 'Seabios'대신 VM의 BIOS 옵션으로 'OVMF'를 선택해야합니다. 이 설정은 가능한 경우 VGA 중재에서 장치를 옵트 아웃하려고합니다.
pve_pci_device_ids
는 호스트에서 VMS로 전달되기를 원하는 장치 및 공급 업체 ID 목록입니다. Proxmox Wiki의 'GPU Passthrough'섹션을 참조하여 특정 장치 및 공급 업체 ID를 찾으십시오. 이 값을 설정할 때는 배열의 각 새 요소에 대해 'ID'를 지정해야합니다.
pve_vfio_blacklist_drivers
호스트에서 제외/블랙리스트로 제공되는 드라이버 목록입니다. VM에 할당되기 전에 호스트가 장치를 사용하지 않도록 PCI 장치를 통과 할 때 필요합니다. 이 값을 설정할 때는 배열의 각 새 요소에 대해 '이름'을 지정해야합니다.
pve_pcie_ignore_msrs
GeForce Experience, Passmark Performance Test 및 Sisoftware Sandra와 같은 일부 Windows 응용 프로그램이 VM을 충돌시키는 것을 방지합니다. 이 값은 PCI 장치를 Windows 기반 시스템에 전달할 때만 필요합니다.
pve_pcie_report_msrs
사용하여 MSRS 경고의 로깅 메시지를 활성화하거나 비활성화 할 수 있습니다. 'DMESG'시스템 로그에 많은 경고 메시지가 표시되면이 값을 사용하여 MSRS 경고를 침묵시킬 수 있습니다.
pve_metric_servers
역할 변수를 사용하여 ProxMox VE에서 메트릭 서버를 구성 할 수 있습니다. 아래는 다양한 유형의 메트릭 서버에 대한 예제 구성입니다.
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
: (필수) 메트릭 서버의 고유 식별자.port
: (선택 사항) 메트릭 서버의 포트. 기본값은 8089
입니다.server
: (필수) 메트릭 서버의 DNS 이름 또는 IP 주소.type
: (선택 사항) 메트릭 서버의 유형. 가능한 값 : influxdb
, graphite
. 기본값은 influxdb
입니다.protocol
: (선택 사항) 메트릭을 보내는 데 사용되는 프로토콜. 가능한 값 : udp
, tcp
, http
, https
. 기본값은 udp
입니다.disable
: (선택 사항) 메트릭 서버를 비활성화합니다. 기본값은 false
입니다.organization
: (선택 사항) 조직 이름. HTTP v2 API와 함께 유입 DB에만 사용할 수 있습니다.bucket
: (옵션) infusdb의 버킷 이름. HTTP V2 API 또는 호환제로만 유용합니다.token
: (선택 사항) InfluxDB 액세스 토큰. HTTP V2 API를 사용할 때만 필요합니다.path
: (선택 사항) 흑연 뿌리 경로. 흑연에만 사용할 수 있습니다.api_path_prefix
: (선택 사항) API 경로 접두사 <host>:<port>/
및 /api2/
사이에 삽입됩니다. 유입 DUXDB 서비스가 리버스 프록시 뒤에서 실행되는 경우 유용합니다. HTTP v2 API와 함께 유입 DB에만 사용할 수 있습니다.timeout
: (선택 사항) 시간 초과 초의 시간 초과. HTTP V2 API 또는 흑연 TCP 소켓을 사용하여 유입 DB에만 사용할 수 있습니다.max_body_size
: (선택 사항) 바이트의 최대 신체 크기. HTTP v2 API와 함께 유입 DB에만 사용할 수 있습니다. 기본값은 25000000
입니다.mtu
: (선택 사항) UDP 메트릭 전송을위한 MTU.verify_certificate
: (선택 사항) SSL 인증서를 확인하십시오. HTTPS를 사용한 InfluxDB에만 사용할 수 있습니다. Proxmox 8.2는 Linux 6.8을 소개하여 일부 배포에서 문제가 발생할 수 있습니다. 이 문제를 해결하려면 다음 역할 변수를 추가하여 6.5에 사용 된 커널 버전을 고정 할 수 있습니다.
pve_default_kernel_version : 1.0.1
이로 인해 proxmox-default-kernel
패키지에 PIN이 생성됩니다.이 패키지는 PVE가 제안한 방법입니다. 이 역할 변수를 설정하여 나중에 제거 할 수 있습니다.
이 섹션을 ansible.cfg
에 추가하십시오.
[ssh_connection]
ssh_args = -o ServerAliveInterval=20
참조 문제
새로운 기능을 개발 하거나이 역할에서 무언가를 수정할 때 Vagrant를 사용하여 변경 사항을 테스트 할 수 있습니다 (현재 Libvirt 만 지원됩니다). 플레이 북은 tests/vagrant
에서 찾을 수 있습니다 (필요에 따라 그룹 변수를 수정하십시오). PR을 제출하기 전에 모든 지원되는 버전의 데비안 ( debian/bookworm64
, debian/bullseye64
또는 debian/buster64
)을 사용하여 현지에서 Vagrantfile을 업데이트하십시오.
APT_CACHE_HOST
환경 변수를 사용하여 APT 캐싱 프록시 (예 : apt-cacher-ng
에서 실행해야 함)를 지정하여 환경에서 로컬로 실행중인 경우 패키지 다운로드 속도를 높이십시오. Vagrant Playbook은 캐싱 프록시를 사용할 수 있는지 여부를 감지하고 네트워크에서 액세스 할 수있는 경우에만 사용할 수 있으므로 원하는 경우 개발 환경 에서이 변수를 영구적으로 설정할 수 있습니다.
예를 들어, 다음을 실행하여 출력을 읽고 캐싱 프록시를 사용하고 오류가 발생하면 VM을 계속 실행할 수 있도록 다음을 실행할 수 있습니다 (수정 후 문제를 해결하거나 vagrant provision
실행할 수 있도록 VMS를 계속 실행할 수 있습니다.
APT_CACHE_HOST=10.71.71.10 ANSIBLE_STDOUT_CALLBACK=debug vagrant up --no-destroy-on-error
Musee Ullah (@lae, [email protected]) - 주요 개발자
Fabien Brachere (@fbrachere) - 스토리지 구성 지원
Gaudenz Steinlin (@Gaundez) - Ceph Support 등
Richard Scott (@zenntrix) - Ceph Support, PVE 7.X 지원 등
Thoralf Rickert -Wendt (@trickert76) -PVE 6.X 지원 등
Engin Dumlu (@roadrunner)
Jonas Meurer (@mejo-)
ondrej flidr (@snipercze)
niko2 (@niko2)
Christian Aublet (@caublet)
길 피에트리 (@gilou)
Michael Holasek (@mholasek)
Alexander Petermann (@lexxxel) -PVE 8.X 지원 등
Bruno Travouillon (@btravouillon) - UX 개선
Tobias Negd (@wu3rstle) - Ceph Support
Pendagtp (@pendagtp) - Ceph Support
존 마리온 (@jmariondev)
Foerkede (@foerkede) - ZFS 스토리지 지원
Guiffo Joel (@futuriste) - 풀 구성 지원
Adam Delo (@ol3d) - PCIE Passthrough Support Antoine Thys (@thystips) - 메트릭 서버 지원
기고자의 전체 목록