DebianサーバーにProxmox仮想環境6.x/7.x/8.xをインストールして構成します。
この役割により、Debian Buster(10)とBullseye(11)およびBookWorm(12)に単一ノードPVEインストールとPVEクラスター(3+ノード)を展開および管理できます。この役割の支援を受けて、以下を構成できます。
datacenter.cfg
pve-no-subscription
またはpve-enterprise
)クラスタリングを有効にすると、この役割は次のことを行います(または実行できます)。
サポートのため、またはこの役割に貢献したいがガイダンスが必要な場合は、このDiscord Server(https://discord.gg/cjqr6fgにお気軽に参加してください。これは一時的な招待状であるため、@Laeが役割を割り当てるのを待つ必要があります。そうしないと、ログアウト時にDiscordがサーバーから削除されます。
この役割の主な目標は、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のWebインターフェイスを構成するために使用するプライベートキーとSSL証明書です。ただし、Proxmoxが内部でセットアップするCAによって署名された証明書を使用し続けたい場合は、これらは必要ありません。通常、Ansible Vaultを使用してプライベートキーを暗号化できます。
ansible-vault encrypt files/pve01/*.key
これにより、Playbookを実行するときにVaultパスワードを渡す必要があります。
最初にクラスターホストを指定しましょう。私たちのinventory
ファイルは次のようになるかもしれません:
[pve01]
lab-node01.local
lab-node02.local
lab-node03.local
複数のクラスターを持つことができるので、各クラスターに1つのグループを用意することをお勧めします。それでは、 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サーバーを好みのNTPサーバーに置き換えます。
プレイブックの肉体のために、 pve01
のグループ変数。ファイル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ウォッチドッグサポートを有効にし、PVEのHAマネージャーを使用するように設定します。使用しNone
か、未定義のままにしておき、デフォルトのProxmoxソフトウェアウォッチドッグを使用します。他の何かに設定すると、値はウォッチドッグカーネルモジュールになると予想されます。
pve_ssl_private_key
およびpve_ssl_certificate
PveClusterのSSL証明書を指します。ここでは、ファイルの検索を使用して、Playbookのファイルのコンテンツ( files/pve01/lab-node01.key
を読み取るために使用されます。必要に応じて、ファイルの代わりにホスト変数を使用するだけかもしれません。
pve_cluster_enabled
すべてのクラスター管理タスクを実行するロールを有効にします。これには、クラスターが存在しない場合のクラスターの作成、または既存のクラスターにノードを追加することが含まれます。すでに異なる名前の既存のクラスターにあるノードを混合していないことを確認するためのチェックがあります。
pve_groups
、 pve_users
、およびpve_acls
、一部のローカルUNIXユーザー(既に存在する必要がある)を許可し、 ops
グループの一部として管理者の役割を提供します。詳細については、ユーザーとACL管理セクションをお読みください。
pve_storages
さまざまな種類のストレージを作成して構成できます。バックエンドはProxmoxによってサポートする必要があります。詳細については、ストレージ管理セクションをお読みください。
pve_metric_servers
使用すると、PVEクラスター用のメトリックサーバーを構成できます。これは、InfluxDB、Graphite、またはその他(Telegrafを使用)を使用する場合に役立ちます。
pve_ssh_port
使用すると、SSHポートを変更できます。 SSHがデフォルト22以外のポートで聴いている場合は、この変数を設定してください。新しいノードがクラスターに結合している場合、PVEクラスターはSSHを介して1回通信する必要があります。
pve_manage_ssh
(デフォルトTrue)を使用すると、このモジュールがSSHサーバーの構成に加える変更を無効にできます。これは、SSHサーバーを管理するために別の役割を使用する場合に役立ちます。これをfalseに設定することは公式pve_add_node.yml
ssh_cluster_config.yml
通常行われた変更を再現するために自分で再現していることに注意してください。
interfaces_template
は、これらのDebianマシンでネットワークを構成するために使用するテンプレートのパスに設定されます。これは、手動ではなく、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
Lookupに精通していないかもしれませんが、基本的にここでは、最初のインターフェイスの各マシン(lab-node01.local)のレコードルックアップを行っています(そして、VMインターフェイスに使用するブリッジとして構成します)、そして、Ceph( "lab-node01-clusternet.local")に使用する可能性のある「クラスタリング」ネットワークの別のわずかに変更された検索。もちろん、特にボンディングを使用している場合は、管理/Corosync、ストレージ、VMトラフィックなどの3つの異なるネットワークを使用している場合は、完全に異なって見える場合があります。
最後に、プレイブックを書きましょう。 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ロールを実行しますホストに対してクラスターをセットアップします。
この時点で、プレイブックの準備が整い、プレイブックを実行できます。
役割と依存関係がインストールされていることを確認してください。
ansible-galaxy install -r roles/requirements.yml --force
pip install jmespath dnspython
クラスタリングを含むいくつかのタスクには、 jmespath
が必要です。 dnspython
は、 dig
Lookupを使用している場合にのみ必要です。これは、ネットワークの構成をスキップした場合はおそらくそうではありません。ここでは、ここではansible-galaxy
に渡り--force
。
プレイブックを実行します:
ansible-playbook -i inventory site.yml -e '{"pve_reboot_on_kernel_update": true}'
-e '{"pve_reboot_on_kernel_update": true}'
サーバーを再起動してPVEカーネルに起動するため、Proxmoxクラスターセットアップを最初に実行するときに主に実行する必要があります。クラスターの実行後にサーバーを順次再起動する必要があるため、後続の実行はこれを除外する必要があります。
特定のユーザーを指定するには、 -u root
( root
の置換)を使用し、パスワードを提供する必要がある場合は、SSHパスワードに-k
および/または-K
sudoパスワードに-kを使用します。例えば:
ansible-playbook -i inventory site.yml -K -u admin1
これにより、sudoパスワードが要求され、その後、 admin1
ユーザーにログインします(public key auth -add -k
for pw)。
それでおしまい!これで、完全に展開されたProxmoxクラスターが必要になります。その後、CEPHストレージを作成し(詳細についてはCephを参照)、おそらく他のタスクを作成することもできますが、難しい部分はほとんど完成しています。
これにより、グループpve01
のホストが1つのクラスターとして構成され、カーネルが更新された場合にマシンを再起動します。 (インストール中にこのフラグを設定することをお勧めします - 操作中に再起動はメンテナンス期間中に連続して発生するはずです。)また、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
デフォルト値について:デフォルト値の一部は実行時に選択されるため、ここにリストされている例とは異なります。
[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マニュアルdataCenter.cfgセクションに文書化されています。
PVE Web UIを介して動作するネットワークインターフェイスをライブリロードするには、 ifupdown2
パッケージをインストールする必要があります。これによりifupdown
削除されることに注意してください。 pve_extra_packages
ロール変数を使用してこれを指定できます。
domains.cfg
構成ファイルの認証ソースとしてレルム /ドメインを設定できます。このファイルが存在しない場合、 Linux PAM
とProxmox VE authentication server
レルムのみが利用可能です。サポートされているタイプは、 pam
、 pve
、 ad
、 ldap
です。 sync: true
でLDAPベースのレル(LDAPおよびMicrosoft Active Directory)のユーザーとグループを自動的に同期することができます。 1つの領域には、 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がインストールされていないため、例えば、 geerlingguy.ntp
役割を使用して、playbookの例に示すように、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ボリュームに保存する場合は、型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セフ管理は実験的です。ユーザーはこの役割を使用して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
を使用します。
pve_ceph_nodes
デフォルトではpve_group
を使用します。このパラメーターは、CEPHをインストールするノードを指定できます(たとえば、すべてのノードにCEPHをインストールしたくない場合)。
pve_ceph_osds
デフォルトでは、暗号化されていないCEPHボリュームを作成します。暗号化されたボリュームを使用するには、 encrypted
パラメーターをtrue
に設定する必要があります。
この役割は、PCIデバイスのパススルーがProxmoxホストからVMSまでのPCIデバイスパススルーを許可するように構成できます。すべてのマザーボードとCPUがこの機能をサポートしているわけではないため、この機能はデフォルトでは有効になりません。パススルーを有効にするには、デバイスCPUはハードウェア仮想化(IntelベースのシステムのVT-D、AMDベースのシステムではAMD-V)をサポートする必要があります。すべてのコンポーネントのマニュアルを参照して、この機能がサポートされているかどうかを判断してください。意志の命名規則は異なりますが、通常、Iommu、VT-D、またはAMD-Vと呼ばれます。
この機能を有効にすることにより、専用のデバイス(GPUやUSBデバイスなど)をVMSに渡すことができます。専用のデバイスに加えて、IntelやAMDの統合GPUなどのさまざまな統合デバイスもVMSに渡すことができます。
一部のデバイスでは、媒介使用を活用できます。媒介デバイスは、ホストシステムで使用可能なままでありながら、複数のVMに渡されてリソースを共有することができます。デバイスの分割は常にサポートされるわけではなく、エラーを防ぐために有効になる前に検証する必要があります。パスを通過するデバイスのマニュアルを参照して、デバイスが媒介使用が可能かどうかを判断します(現在、この役割はGVT-Gのみをサポートしています。SR-IOVは現在サポートされておらず、役割の完了後に手動で有効にする必要があります)。
以下は、PCIEパススルーを有効にする構成の例です。
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パススルーモードを有効にすると、デバイスのパフォーマンスが向上する可能性があります。この機能を有効にすることにより、VMSは通常、ハイパーバイザーによって実行されるデフォルトのDMA変換をバイパスできます。代わりに、VMSパスDMAはハードウェアIOMMUに直接要求します。
pve_iommu_unsafe_interrupts
システムが割り込みの再マッピングをサポートしていない場合、PCIパススルーを許可するために有効にする必要があります。 dmesg | grep 'remapping'
。次の行のいずれかが表示されている場合:
次に、システム割り込みの再マッピングがサポートされ、安全でない割り込みを有効にする必要はありません。この値を有効にすることにより、システムが不安定になる可能性があることに注意してください。
pve_mediated_devices_enabled
Intel IGPUなどの統合デバイスのGVT-Gサポートを有効にします。すべてのデバイスがGVT-Gをサポートしているわけではないため、特定のデバイスを事前に確認して、許可されていることを確認することをお勧めします。
pve_pcie_ovmf_enabled
gpu ovmf pci passthroughを有効にします。 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のクラッシュから防止します。この値は、WindowsベースのシステムにPCIデバイスを渡す場合にのみ必要です。
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を使用したInfluxDBでのみ利用可能です。bucket
:(オプション)InfluxDBのバケット名。 HTTP V2 APIまたは互換性がある場合にのみ便利です。token
:(オプション)InfluxDBアクセストークン。 HTTP V2 APIを使用する場合にのみ必要です。path
:(オプション)グラファイトルートパス。グラファイトでのみ利用できます。api_path_prefix
:(オプション) <host>:<port>/
and /api2/
の間に挿入されたAPIパスプレフィックス。 InfluxDBサービスが逆プロキシの背後に実行されている場合に便利です。 HTTP V2 APIを使用したInfluxDBでのみ利用可能です。timeout
:(オプション)秒単位のタイムアウト。 HTTP V2 APIまたはグラファイトTCPソケットを使用したInfluxDBでのみ利用可能です。max_body_size
:(オプション)バイトの最大体のサイズ。 HTTP V2 APIを使用したInfluxDBでのみ利用可能です。デフォルトは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
パッケージにピンが作成されます。これは、PVEによって提案されている方法です。この役割変数を設定することにより、後で削除できます。
このセクションをansible.cfg
に追加します。
[ssh_connection]
ssh_args = -o ServerAliveInterval=20
参照の問題
新機能を開発したり、この役割で何かを修正する場合、Vagrantを使用して変更をテストできます(現在Libvirtのみがサポートされています)。プレイブックはtests/vagrant
で見つけることができます(必要に応じてグループ変数を変更してください)。 PRを提出する前に、Debianのすべてのサポートバージョンの変更をテストしてください(vagrantfileをローカルに更新してdebian/bookworm64
、 debian/bullseye64
、またはdebian/buster64
を使用)。
また、 APT_CACHE_HOST
環境変数を使用して、APTキャッシュプロキシ( apt-cacher-ng
など、ポート3142で実行する必要があります)を指定することもできます。 Vagrant Playbookは、キャッシュプロキシが利用可能かどうかを検出し、ネットワークからアクセスできる場合にのみ使用するため、必要に応じて開発環境でこの変数を永久に設定できます。
たとえば、次のように実行して、冗長/読み取りを表示しやすくなり、キャッシュプロキシを使用し、エラーが発生した場合にVMを実行し続けることができます(修正後にトラブルシューティングおよび/またはvagrant provision
実行できます):
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など
リチャード・スコット(@zenntrix) - セフサポート、PVE 7.xサポートなど
Thoralf Rickert -Wendt(@Trickert76)-PVE 6.xサポートなど
Engin dumlu(@roadrunner)
Jonas Meurer(@mejo-)
ondrej flidr(@snipercze)
niko2(@niko2)
クリスチャンaubublet(@caublet)
Gille Pietri(@gilou)
マイケル・ホラセック(@mholasek)
Alexander Petermann(@lexxxel)-Pve 8.xサポートなど
Bruno Travouillon(@btravouillon)-UX改善
Tobias negd(@wu3rstle) - cephサポート
pendagtp(@pendagtp) - cephサポート
ジョン・マリオン(@jmariondev)
Foerkede(@foerkede)-ZFSストレージサポート
Guiffo Joel(@futuriste) - プール構成サポート
Adam Delo(@ol3d) - PCIEパススルーサポートAntoine Thys(@ThyStips) - メトリックサーバーサポート
貢献者の完全なリスト