From 45e58a068f0e6ba8501a3158235eea26ca4df20e Mon Sep 17 00:00:00 2001 From: Alphaeus Mote Date: Mon, 28 Apr 2025 19:14:14 -0400 Subject: [PATCH] Cleanup --- PSProxmox-Dist/Install-PSProxmox.ps1 | 32 ----- PSProxmox-Dist/LICENSE | 21 --- PSProxmox-Dist/PSProxmox.psd1 | 89 ------------ PSProxmox-Dist/README.md | 193 --------------------------- 4 files changed, 335 deletions(-) delete mode 100644 PSProxmox-Dist/Install-PSProxmox.ps1 delete mode 100644 PSProxmox-Dist/LICENSE delete mode 100644 PSProxmox-Dist/PSProxmox.psd1 delete mode 100644 PSProxmox-Dist/README.md diff --git a/PSProxmox-Dist/Install-PSProxmox.ps1 b/PSProxmox-Dist/Install-PSProxmox.ps1 deleted file mode 100644 index 7bccb95..0000000 --- a/PSProxmox-Dist/Install-PSProxmox.ps1 +++ /dev/null @@ -1,32 +0,0 @@ -# Install-PSProxmox.ps1 -# This script installs the PSProxmox module to the user's PowerShell modules directory - -# Define the module name -$moduleName = "PSProxmox" - -# Define the destination path -$modulePath = "$env:USERPROFILE\Documents\WindowsPowerShell\Modules\$moduleName" -if ($PSVersionTable.PSEdition -eq "Core") { - $modulePath = "$env:USERPROFILE\Documents\PowerShell\Modules\$moduleName" -} - -# Create the module directory if it doesn't exist -if (-not (Test-Path -Path $modulePath)) { - New-Item -Path $modulePath -ItemType Directory -Force | Out-Null - Write-Host "Created module directory: $modulePath" -} - -# Create the bin directory if it doesn't exist -if (-not (Test-Path -Path "$modulePath\bin")) { - New-Item -Path "$modulePath\bin" -ItemType Directory -Force | Out-Null - Write-Host "Created bin directory: $modulePath\bin" -} - -# Copy the module files -Copy-Item -Path "$PSScriptRoot\PSProxmox.psd1" -Destination $modulePath -Force -Copy-Item -Path "$PSScriptRoot\bin\PSProxmox.dll" -Destination "$modulePath\bin" -Force -Copy-Item -Path "$PSScriptRoot\LICENSE" -Destination $modulePath -Force -Copy-Item -Path "$PSScriptRoot\README.md" -Destination $modulePath -Force - -Write-Host "PSProxmox module has been installed to $modulePath" -Write-Host "You can now import the module using: Import-Module $moduleName" diff --git a/PSProxmox-Dist/LICENSE b/PSProxmox-Dist/LICENSE deleted file mode 100644 index 6fb1a0a..0000000 --- a/PSProxmox-Dist/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2023 freedbygrace - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/PSProxmox-Dist/PSProxmox.psd1 b/PSProxmox-Dist/PSProxmox.psd1 deleted file mode 100644 index aab71cd..0000000 --- a/PSProxmox-Dist/PSProxmox.psd1 +++ /dev/null @@ -1,89 +0,0 @@ -@{ - RootModule = 'PSProxmox.dll' - ModuleVersion = '2023.04.28.1324' - GUID = 'd24f0894-3d0c-4ef1-a41e-b273c3db86ad' - Author = 'PSProxmox Team' - CompanyName = 'PSProxmox' - Copyright = 'Copyright © 2023' - Description = 'PowerShell module for managing Proxmox VE clusters' - PowerShellVersion = '5.1' - DotNetFrameworkVersion = '4.7.2' - CompatiblePSEditions = @('Desktop', 'Core') - # Assemblies that must be loaded prior to importing this module - RequiredAssemblies = @('bin\PSProxmox.dll') - # Script files (.ps1) that are run in the caller's environment prior to importing this module - ScriptsToProcess = @() - # Type files (.ps1xml) to be loaded when importing this module - TypesToProcess = @() - # Format files (.ps1xml) to be loaded when importing this module - FormatsToProcess = @() - FunctionsToExport = @() - CmdletsToExport = @( - # Session Management - 'Connect-ProxmoxServer', - 'Disconnect-ProxmoxServer', - - # Node and VM Management - 'Get-ProxmoxNode', - 'Get-ProxmoxVM', - 'New-ProxmoxVM', - 'Remove-ProxmoxVM', - 'Start-ProxmoxVM', - 'Stop-ProxmoxVM', - 'Restart-ProxmoxVM', - - # Storage Management - 'Get-ProxmoxStorage', - 'New-ProxmoxStorage', - 'Remove-ProxmoxStorage', - - # Network Management - 'Get-ProxmoxNetwork', - 'New-ProxmoxNetwork', - 'Remove-ProxmoxNetwork', - - # User and Role Management - 'Get-ProxmoxUser', - 'New-ProxmoxUser', - 'Remove-ProxmoxUser', - 'Get-ProxmoxRole', - 'New-ProxmoxRole', - 'Remove-ProxmoxRole', - - # SDN Management - 'Get-ProxmoxSDNZone', - 'New-ProxmoxSDNZone', - 'Remove-ProxmoxSDNZone', - 'Get-ProxmoxSDNVnet', - 'New-ProxmoxSDNVnet', - 'Remove-ProxmoxSDNVnet', - - # Cluster Management - 'Get-ProxmoxCluster', - 'Join-ProxmoxCluster', - 'Leave-ProxmoxCluster', - 'New-ProxmoxClusterBackup', - 'Restore-ProxmoxClusterBackup', - - # Template Management - 'Get-ProxmoxVMTemplate', - 'New-ProxmoxVMTemplate', - 'Remove-ProxmoxVMTemplate', - 'New-ProxmoxVMFromTemplate', - - # IP Management - 'New-ProxmoxIPPool', - 'Get-ProxmoxIPPool', - 'Clear-ProxmoxIPPool' - ) - VariablesToExport = @() - AliasesToExport = @() - PrivateData = @{ - PSData = @{ - Tags = @('Proxmox', 'VirtualMachine', 'Cluster', 'Management') - LicenseUri = 'https://github.com/freedbygrace/PSProxmox/blob/main/LICENSE' - ProjectUri = 'https://github.com/freedbygrace/PSProxmox' - ReleaseNotes = 'Initial release of PSProxmox module' - } - } -} diff --git a/PSProxmox-Dist/README.md b/PSProxmox-Dist/README.md deleted file mode 100644 index f72c555..0000000 --- a/PSProxmox-Dist/README.md +++ /dev/null @@ -1,193 +0,0 @@ -# PSProxmox - -PSProxmox is a PowerShell module for managing Proxmox VE clusters. It provides a comprehensive set of cmdlets for managing virtual machines, storage, networks, users, roles, and more. - -## Installation - -```powershell -# Install from PowerShell Gallery -Install-Module -Name PSProxmox -Scope CurrentUser -``` - -## Getting Started - -### Connecting to a Proxmox VE Server - -```powershell -# Connect using username and password -$securePassword = ConvertTo-SecureString "password" -AsPlainText -Force -$connection = Connect-ProxmoxServer -Server "proxmox.example.com" -Username "root" -Password $securePassword -Realm "pam" - -# Connect using a credential object -$credential = Get-Credential -$connection = Connect-ProxmoxServer -Server "proxmox.example.com" -Credential $credential -Realm "pam" -``` - -### Managing Virtual Machines - -```powershell -# Get all VMs -$vms = Get-ProxmoxVM -Connection $connection - -# Get a specific VM -$vm = Get-ProxmoxVM -Connection $connection -VMID 100 - -# Create a new VM -$vm = New-ProxmoxVM -Connection $connection -Node "pve1" -Name "test-vm" -Memory 2048 -Cores 2 -DiskSize 32 -Start - -# Create a new VM using the builder pattern -$builder = New-ProxmoxVMBuilder -Name "web-server" -$builder.WithMemory(4096) - .WithCores(2) - .WithDisk(50, "local-lvm") - .WithNetwork("virtio", "vmbr0") - .WithIPConfig("192.168.1.10/24", "192.168.1.1") - .WithStart($true) - -$vm = New-ProxmoxVM -Connection $connection -Node "pve1" -Builder $builder - -# Start, stop, and restart VMs -Start-ProxmoxVM -Connection $connection -Node "pve1" -VMID 100 -Stop-ProxmoxVM -Connection $connection -Node "pve1" -VMID 100 -Restart-ProxmoxVM -Connection $connection -Node "pve1" -VMID 100 - -# Remove a VM -Remove-ProxmoxVM -Connection $connection -Node "pve1" -VMID 100 -Confirm:$false -``` - -### Managing Templates - -```powershell -# Create a template from an existing VM -$template = New-ProxmoxVMTemplate -Connection $connection -VMID 100 -Name "Ubuntu-Template" -Description "Ubuntu 20.04 Template" - -# Get all templates -$templates = Get-ProxmoxVMTemplate - -# Create a VM from a template -$vm = New-ProxmoxVMFromTemplate -Connection $connection -Node "pve1" -TemplateName "Ubuntu-Template" -Name "web01" -Start - -# Create multiple VMs from a template -$vms = New-ProxmoxVMFromTemplate -Connection $connection -Node "pve1" -TemplateName "Ubuntu-Template" -Prefix "web" -Count 3 -Start -``` - -### Managing Storage - -```powershell -# Get all storage -$storage = Get-ProxmoxStorage -Connection $connection - -# Get storage on a specific node -$storage = Get-ProxmoxStorage -Connection $connection -Node "pve1" - -# Create a new storage -$storage = New-ProxmoxStorage -Connection $connection -Name "backup" -Type "dir" -Path "/mnt/backup" -Content "backup,iso" - -# Remove a storage -Remove-ProxmoxStorage -Connection $connection -Name "backup" -Confirm:$false -``` - -### Managing Networks - -```powershell -# Get all network interfaces on a node -$networks = Get-ProxmoxNetwork -Connection $connection -Node "pve1" - -# Create a new bridge interface -$network = New-ProxmoxNetwork -Connection $connection -Node "pve1" -Interface "vmbr1" -Type "bridge" -BridgePorts "eth1" -Method "static" -Address "192.168.2.1" -Netmask "255.255.255.0" -Autostart - -# Remove a network interface -Remove-ProxmoxNetwork -Connection $connection -Node "pve1" -Interface "vmbr1" -Confirm:$false -``` - -### Managing Users and Roles - -```powershell -# Get all users -$users = Get-ProxmoxUser -Connection $connection - -# Create a new user -$securePassword = ConvertTo-SecureString "password" -AsPlainText -Force -$user = New-ProxmoxUser -Connection $connection -Username "john" -Realm "pam" -Password $securePassword -FirstName "John" -LastName "Doe" -Email "john.doe@example.com" - -# Remove a user -Remove-ProxmoxUser -Connection $connection -UserID "john@pam" -Confirm:$false - -# Get all roles -$roles = Get-ProxmoxRole -Connection $connection - -# Create a new role -$role = New-ProxmoxRole -Connection $connection -RoleID "Developer" -Privileges "VM.Allocate", "VM.Config.Disk", "VM.Config.CPU", "VM.PowerMgmt" - -# Remove a role -Remove-ProxmoxRole -Connection $connection -RoleID "Developer" -Confirm:$false -``` - -### Managing SDN - -```powershell -# Get all SDN zones -$zones = Get-ProxmoxSDNZone -Connection $connection - -# Create a new SDN zone -$zone = New-ProxmoxSDNZone -Connection $connection -Zone "zone1" -Type "vlan" -Bridge "vmbr0" - -# Remove an SDN zone -Remove-ProxmoxSDNZone -Connection $connection -Zone "zone1" -Confirm:$false - -# Get all SDN VNets -$vnets = Get-ProxmoxSDNVnet -Connection $connection - -# Create a new SDN VNet -$vnet = New-ProxmoxSDNVnet -Connection $connection -VNet "vnet1" -Zone "zone1" -IPv4 "192.168.1.0/24" -Gateway "192.168.1.1" - -# Remove an SDN VNet -Remove-ProxmoxSDNVnet -Connection $connection -VNet "vnet1" -Confirm:$false -``` - -### Managing Clusters - -```powershell -# Get cluster information -$cluster = Get-ProxmoxCluster -Connection $connection - -# Join a node to a cluster -$securePassword = ConvertTo-SecureString "password" -AsPlainText -Force -Join-ProxmoxCluster -Connection $connection -ClusterName "cluster1" -HostName "pve1" -Password $securePassword - -# Leave a cluster -Leave-ProxmoxCluster -Connection $connection -Force - -# Create a cluster backup -$backup = New-ProxmoxClusterBackup -Connection $connection -Compress -Wait - -# Restore a cluster backup -Restore-ProxmoxClusterBackup -Connection $connection -BackupID "vzdump-cluster-2023_04_28-12_00_00.vma.lzo" -Force -Wait -``` - -### Managing IP Addresses - -```powershell -# Create a new IP pool -$pool = New-ProxmoxIPPool -Name "Production" -CIDR "192.168.1.0/24" -ExcludeIPs "192.168.1.1", "192.168.1.254" - -# Get all IP pools -$pools = Get-ProxmoxIPPool - -# Get a specific IP pool -$pool = Get-ProxmoxIPPool -Name "Production" - -# Clear an IP pool -Clear-ProxmoxIPPool -Name "Production" -``` - -## Disconnecting - -```powershell -# Disconnect from the server -Disconnect-ProxmoxServer -Connection $connection -``` - -## License - -This project is licensed under the MIT License - see the LICENSE file for details.