基础设施即代码 (Infrastructure as Code)简称 IaC,主要是通过代码的方式管理云平台资源,好比 AWS 的 vpc ec2 ecs eks elb 等等。Iac 基本上分为两种:
- 第一种:利用声明式的编程语言举行编写,好比 yaml,Json,TCL 等等
- 第二种:利用编程语言举行编写,好比:Python,Golang,NodeJs 等等
Pulumi 属于第二种,利用编程语言举行编写,本文将先容如何利用 pulumi 创建 pve 平台的假造机。
在创建假造机之前需要三部:
- 安装依赖,本次利用需要预备:Python、Pulumi、pve 假造化平台的情况
- 选择 pulumi 的存储方式,本次将利用本地存储,执行命令 pulumi login --local。
- 初始化项目:执行 pulumi new 然后选择一个名为 Python 的模板,按照引导走完全部过程。
- 创建相对应的配置。
- 编写 python 代码,并启动。
依赖安装
点击链接下载 pulumi 的对应安装包。
点击链接安装 Python 情况。
执行命令安装 pve 对应的 pulumi 包:
- pip install pulumi_proxmoxve
复制代码 配置 pulumi
每个 pulumi 的库,都有一个默认的配置参数,点击此链接可以看到完成的参数列表,创建 pve 中的假造机时,我们只需要留意以下部门:
- "namespaces": {
- "proxmoxve": "ProxmoxVE"
- },
- "config": {
- "variables": {
- "endpoint": {
- "type": "string",
- "description": "The endpoint for the Proxmox VE API.\n"
- },
- "insecure": {
- "type": "boolean",
- "description": "Whether to skip the TLS verification step.\n"
- },
- "password": {
- "type": "string",
- "description": "The password for the Proxmox VE API.\n",
- "secret": true
- },
- "username": {
- "type": "string",
- "description": "The username for the Proxmox VE API.\n"
- }
- }
- },
复制代码 这些参数代表了以下几个参数:
- namespaces: 配置参数的命名空间
- endpoint:pve 的登录地址,一般是 http://x.x.x.x:8006
- insecure: 是否要跳过 https 验证
- password: endpoint 的登录密码
- username: endpoint 的登录用户
了解过之后执行命令举行配置:
- pulumi config set proxmoxve:endpoint http://x.x.x.x:8006
- pulumi config set proxmoxve:insecure true
- pulumi config set proxmoxve:password xxxxx
- pulumi config set proxmoxve:username xxxxx
复制代码 在配置之后就需要编写代码了。
Python 代码编写
在 pulumi 的项目中 __main__.py 文件修改为如下内容:
- import pulumi
- import pulumi_proxmoxve as proxmox
- virtual_machine = proxmox.vm.VirtualMachine(
- resource_name="vm", ##资源名称
- node_name="pve1", ## pve 的节点名称
- bios="seabios",
- cpu=proxmox.vm.VirtualMachineCpuArgs(
- cores=1, ##虚拟机 CPU
- sockets=1
- ),
- clone=proxmox.vm.VirtualMachineCloneArgs( ##克隆的虚拟机的相关信息
- node_name="pve1",
- vm_id=9000,
- full=True
- ),
- disks=[
- proxmox.vm.VirtualMachineDiskArgs(
- interface="scsi0",
- datastore_id="local-lvm", ##存储名称
- size=32, ##大小
- file_format="qcow2"
- )
- ],
- memory=proxmox.vm.VirtualMachineMemoryArgs(
- dedicated=1024 ##虚拟机内存
- ),
- name="proxmox-vm", ##虚拟机名称
- network_devices=[
- proxmox.vm.VirtualMachineNetworkDeviceArgs(
- bridge="vmbr0", ##网卡名称
- model="virtio"
- )
- ],
- on_boot=True,
- operating_system=proxmox.vm.VirtualMachineOperatingSystemArgs(type="l26"),
- initialization=proxmox.vm.VirtualMachineInitializationArgs( ## 网络相关配置
- type="nocloud",
- datastore_id="local-lvm",
- dns=proxmox.vm.VirtualMachineInitializationDnsArgs(
- domain="example.com",
- server="1.1.1.1 1.0.0.1"
- ),
- ip_configs=[
- proxmox.vm.VirtualMachineInitializationIpConfigArgs(
- ipv4=proxmox.vm.VirtualMachineInitializationIpConfigIpv4Args(
- address="10.0.0.10/24",
- gateway="10.0.0.1"
- )
- )
- ]
- )
- )
复制代码 修改以上注释的部门,然后执行 pulumi up -y 命令即可启动步伐,最终会在 PVE 平台中发现新创建的 proxmox-vm 的假造机。
后记
假如想利用镜像镜像举行创建需要添加 VirtualMachineCdromArgs 字段,可以参考此链接,别的需要留意的是 file_id 的内容格式为:local:iso/*.iso,可以在平台网页利用 F12 来举行检察相关镜像的 id。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |