Pulumiを使ってProxmoxの構成管理を試してみる
PulumiをProxmoxで利用するための自分用のメモです。
準備
- Pulumiをinstallします。
brew install pulumi/tap/pulumi
- 今回はproxmoxが対象ですが、便利なのでaws-typescriptのテンプレートを利用します。
mkdir pulumi-proxmox && cd pulumi-proxmox # templateを使って作成する pulumi new Would you like to create a project from a template or using a Pulumi AI prompt? [Use arrows to move, type to filter] > template - Create a new Pulumi project using a template ai - Create a new Pulumi project using Pulumi AI > aws-typescript # aws > Project name (pulumi-proxmox): この辺はよしなに... ... > pnpm # パッケージマネージャーもよしなに...
以下ファイルを確認して以下のようになっていれば成功です。
❯ ls
index.ts package.json Pulumi.dev.yaml README.md
node_modules pnpm-lock.yaml Pulumi.yaml tsconfig.json
- dependenciesにaws関連のパッケージが含まれているので削除し、以下のように編集します。
{ "name": "pulumi-proxmox", "main": "index.ts", "devDependencies": { "@types/node": "^18", "typescript": "^5.0.0" }, "dependencies": { "@muhlba91/pulumi-proxmoxve": "^7.3.0", "@pulumi/pulumi": "^3.189.0" } }
不要なファイルも削除します。
rm Pulumi.dev.yaml
Pulumi.yamlを以下のように編集し、Proxmoxのログイン情報を設定します。
name: proxmox-pulumi description: A minimal Proxmox TypeScript Pulumi project. runtime: name: nodejs options: packagemanager: pnpm config: proxmoxve:endpoint: "https://proxmox" proxmoxve:username: "root@pam" proxmoxve:password: "hogehoge" proxmoxve:insecure: true # Set to true if you are using a self-signed certificate
index.tsの内容を削除し、以下のように書き換えます
今回はubuntuのvmを立ち上げる設定を書きます。自分の環境に合わせて各種パラメータは編集してください。
import * as proxmox from "@muhlba91/pulumi-proxmoxve"; const vm = new proxmox.vm.VirtualMachine("ubuntu-vm", { nodeName: "proxmox", name: "ubuntu-24-04-vm", bios: "seabios", cpu: { cores: 2, sockets: 1, }, memory: { dedicated: 2048, }, disks: [ { interface: "scsi0", datastoreId: "local-lvm", size: 32, fileFormat: "raw", }, ], cdrom: { fileId: "local:iso/ubuntu-24.04.2-live-server-amd64.iso", }, networkDevices: [ { bridge: "vmbr0", model: "virtio", }, ], onBoot: true, operatingSystem: { type: "l26", }, initialization: { type: "nocloud", datastoreId: "local-lvm", }, });
立ち上げる
previewで所謂planが出来ます。これを実行してエラーが発生したらエラーに従って修正してください。
pulumi preview
問題なければupを実行してください。
pulumi up
Do you want to perform this update? yes # yesで適用する
これでvmが立ち上がります。