Veeam plugin fails when Enterprise Manager and Veeam B&R are on separate hosts (Get-VBRJob over SSH not available)
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 48/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- java, powershell
調査の方向性
Start with VeeamClient.java, especially getRepositoryNameFromJob and cloneVeeamJob, and the Veeam plugin configuration and documentation. Trace how the Enterprise Manager URL is also used as the SSH target, then check the plugin tests and supported Veeam version notes. Done means the separate-host setup can complete instance assignment, with a clear error when PowerShell is unavailable.
索引モデルが issue の本文から書いたものです。
説明
Summary
The Veeam B&R backup plugin uses the host from backup.plugin.veeam.url both for the Enterprise Manager REST API and for an SSH session in which it runs Veeam B&R PowerShell commands (e.g. Get-VBRJob). This implicitly requires Enterprise Manager and Veeam Backup & Replication (with its PowerShell module) to be installed on the same host.
A common Veeam architecture runs Enterprise Manager on a dedicated server that manages several backup servers. In this setup the REST part of the plugin works, but every operation that needs PowerShell fails, because the Veeam PowerShell module is not available on the Enterprise Manager host. As a result, instances cannot be assigned to a backup offering.
Environment
- Apache CloudStack 4.23.0.0, VMware vSphere (vCenter) zone
- Veeam Backup & Replication 13.1.1.18 (Windows Server), two backup servers on two sites
- Veeam Backup Enterprise Manager 13.1.1.18 on a separate Windows Server (central management node for both backup servers)
- OpenSSH Server installed on the Enterprise Manager host
- No Veeam B&R console / Veeam PowerShell module on the Enterprise Manager host
Configuration
backup.framework.enabled= truebackup.framework.provider.plugin= veeambackup.plugin.veeam.url= https://enterprise-manager-host:9398/api/backup.plugin.veeam.validate.ssl= falseintegration.veeam.control.enabled= false
Steps to reproduce
- Install Veeam Backup Enterprise Manager on a dedicated server, separate from the Veeam Backup & Replication server(s), and add the backup server(s) to it.
- Install and enable OpenSSH Server on the Enterprise Manager host and create a service account with the Portal Administrator role in Enterprise Manager.
- Configure the
backup.plugin.veeam.*settings in CloudStack with the Enterprise Manager URL and the service account. - In Veeam B&R, create a template backup job (targeting an unused vCenter tag, no schedule).
- In CloudStack, import the template job as a Backup Offering. This works and the jobs are listed.
- Assign a VMware instance to the imported Backup Offering.
Expected result
The template job is cloned, the instance is added to the cloned job, and the instance is assigned to the Backup Offering.
Actual result
Failed to add Instance to backup offering (errorcode 530)
- The REST connection to Enterprise Manager (TCP 9398) works: jobs are listed and the offering can be imported.
- The SSH session to the Enterprise Manager host is accepted (OpenSSH log:
Accepted password for <service-account>). - The PowerShell command sent over SSH fails, because the Veeam B&R PowerShell module is not present on the Enterprise Manager host.
cloneVeeamJobcannot get the repository of the template job and the assignment fails.
Relevant management server log:
ERROR [c.c.u.s.SshHelper] SSH execution of command PowerShell Import-Module Veeam.Backup.PowerShell -WarningAction SilentlyContinue;$ProgressPreference='SilentlyContinue';$Job = Get-VBRJob -name 'CS-Template-Test';$Job.GetBackupTargetRepository() ^| select Name ^| Format-List has an error status code in return. Result output: Import-Module : The specified module 'Veeam.Backup.PowerShell' was not loaded because no valid module file was found in any module directory.
Get-VBRJob : The term 'Get-VBRJob' is not recognized as the name of a cmdlet, function, script file, or operable program.
You cannot call a method on a null-valued expression.
WARN [o.a.c.b.v.VeeamClient] Exception caught while trying to clone Veeam job: com.cloud.utils.exception.CloudRuntimeException: Failed to get Repository Name from Job [name: CS-Template-Test].
at org.apache.cloudstack.backup.veeam.VeeamClient.getRepositoryNameFromJob(VeeamClient.java:434)
at org.apache.cloudstack.backup.veeam.VeeamClient.listBackupRepository(VeeamClient.java:411)
at org.apache.cloudstack.backup.veeam.VeeamClient.cloneVeeamJob(VeeamClient.java:524)
at org.apache.cloudstack.backup.VeeamBackupProvider.assignVMToBackupOffering(VeeamBackupProvider.java:171)
ERROR [o.a.c.b.VeeamBackupProvider] Failed to clone pre-defined Veeam job (backup offering) for backup offering [...] but will check the list of jobs again if it was eventually succeeded.
DEBUG [o.a.c.b.v.VeeamClient] Response received in GET request is: HTTP/1.1 200 OK ... for URL: [https://<enterprise-manager-host>:9398/api//jobs]
ERROR [o.a.c.b.BackupManagerImpl] Failed to assign Instance [...] to the Backup Offering [...] using provider [name: veeam, class: VeeamBackupProvider], due to: [Failed to assign the Instance to the Backup Offering, please try removing the assignment and try again.]
Proposed improvements
- Allow the SSH / PowerShell target to be configured separately from the Enterprise Manager REST URL (for example a new setting such as
backup.plugin.veeam.powershell.host), or use the Veeam B&R REST API for the operations that currently need PowerShell (e.g. reading the repository of a job and cloning a job). - Document clearly that the current implementation requires Enterprise Manager and Veeam B&R (with its PowerShell module) on the same host.
- Confirm support for Veeam Backup & Replication v13. The plugin documentation mentions testing with versions 11 and 12 only.
- Return a more specific error message when the PowerShell command fails (e.g. "Veeam PowerShell module not found on "), instead of the generic
Failed to add Instance to backup offering.
- 主要言語
- Java
- スター
- 3.1k
- フォーク
- 1.4k
- 平均マージ
- 7日 16時間
- マージ済み PR(30日)
- 15
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/cloudstack のほかの issue
-
resizeVolume of a running system VM's volume is accepted but the VM never sees the new size対応中かも @bhouse-nexthop が 3 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
apache/cloudstack#14645 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
VR reports a load balancer change as applied when haproxy.cfg cannot be replaced対応中かも @bhouse-nexthop が 3 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
apache/cloudstack#14633 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
restartNetwork reports a ResourceUnavailableException as an unexpected error (530), unlike restartVPC (534)対応中かも @bhouse-nexthop が 3 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
apache/cloudstack#14631 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
apache/cloudstack#14625 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Remote access VPN users are disconnected on every LB, ACL, port forward or firewall change (xl2tpd restarted on every iptables pass)対応中かも @willbennett-devops が 12 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
apache/cloudstack#14545 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
apache/cloudstack の issue をすべて見る
似ている issue
-
[Bug]: Nullable implicit operator on string extensible enums still throws for a null string対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンbug emitter:client:csharp
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
microsoft/typespec#12572 · コメント 1 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[BUG]: Java SDK MountRequest always sends update-optional fields, resetting stored mount settingsオープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
GCC 15.2: -Wcast-qual warning - cast discards const qualifier from pointer target type (H5trace.c)オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 73/100
メンテナーはふだん 1 日以内に返信
-
[Bug] RemotingHelper.connect swaps the socket send and receive buffer configuration対応中かも @amalsaidov が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
needs-area-label
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 2 日以内に返信