proxmox之cloud-init
Cloud-Init支持
Cloud-Init是事实上的多分发包,它处理虚拟机实例的早期初始化。使用Cloud-Init,可以在虚拟机管理程序端配置网络设备和ssh密钥。当VM首次启动时,VM内的Cloud-Init软件将应用这些设置。
许多Linux发行版都提供了即用型Cloud-Init映像,主要是为OpenStack设计的。这些图像也适用于Proxmox VE。虽然获得这样的即用型图像看起来很方便,但我们通常建议您自己准备图像。优点是您将确切知道已安装的内容,这有助于您以后轻松自定义图像以满足您的需求。
创建了这样的Cloud-Init映像后,我们建议将其转换为VM模板。从VM模板中,您可以快速创建链接克隆,因此这是推出新VM实例的快速方法。您只需在启动新VM之前配置网络(可能还有ssh密钥)。
我们建议使用基于SSH密钥的身份验证登录Cloud-Init配置的VM。也可以设置密码,但这不如使用基于SSH密钥的身份验证安全,因为Proxmox VE需要在Cloud-Init数据中存储该密码的加密版本。
Proxmox VE生成ISO映像以将Cloud-Init数据传递给VM。为此,所有Cloud-Init VM都需要具有指定的CDROM驱动器。此外,许多Cloud-Init图像都假设有一个串行控制台,因此建议添加一个串行控制台并将其用作这些VM的显示器。
准备Cloud-Init模板
第一步是准备VM。基本上你可以使用任何VM。只需在要准备的VM中安装Cloud-Init软件包即可。在基于Debian / Ubuntu的系统上,这很简单:
apt-get install cloud-init
已有许多发行版提供了现成的Cloud-Init图像(以.qcow2文件形式提供),因此您可以简单地下载和导入此类图像。对于以下示例,我们将使用Ubuntu提供的云图像,网址为https://cloud-images.ubuntu.com。
#下载图片
wget https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img #创建一个新的VM
qm create 9000 --memory 2048 --net0 virtio,bridge = vmbr0 #将下载的磁盘导入local-lvm存储
qm importdisk 9000 bionic-server-cloudimg-amd64.img local-lvm #finally将新磁盘作为scsi驱动器附加到VM
qm set 9000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-9000-disk-1
Ubuntu Cloud-Init映像需要virtio-scsi-pci 控制器类型用于SCSI驱动器。 |
下一步是配置CDROM驱动器,该驱动器将用于将Cloud-Init数据传递给VM。
qm set 9000 --ide2 local-lvm:cloudinit
要能够直接从Cloud-Init映像引导,请将bootdisk参数设置 为scsi0,并将BIOS限制为仅从磁盘引导。这将加快启动速度,因为VM BIOS会跳过可启动CDROM的测试。
qm set 9000 --boot c --bootdisk scsi0
还要配置串行控制台并将其用作显示器。许多Cloud-Init图像依赖于此,因为它是OpenStack图像的要求。
qm设置9000 --serial0 socket --vga serial0
在最后一步中,将VM转换为模板很有帮助。然后,您可以从此模板快速创建链接克隆。从VM模板部署比创建完整克隆(副本)快得多。
qm模板9000
部署Cloud-Init模板
您可以通过克隆轻松部署此类模板:
qm clone 9000 123 --name ubuntu2
然后配置用于身份验证的SSH公钥,并配置IP设置:
qm设置123 --sshkey~ / .ssh / id_rsa.pub
qm set 123 --ipconfig0 ip = 10.0.10.123 / 24,gw = 10.0.10.1
您还可以仅使用一个命令配置所有Cloud-Init选项。我们简单地拆分了上面的例子来分离减少行长度的命令。另外,请确保为您的特定环境采用IP设置。
Cloud-Init特定选项
- cicustom:[meta = <volume>] [,network = <volume>] [,user = <volume>]
-
指定自定义文件以在开始时替换自动生成的文件。
- meta = <volume>
-
指定包含通过cloud-init传递给VM的所有元数据的自定义文件。这是提供者特定的含义configdrive2和nocloud不同。
- network = <volume>
-
指定包含通过cloud-init传递给VM的所有网络数据的自定义文件。
- user = <volume>
-
指定包含通过cloud-init传递给VM的所有用户数据的自定义文件。
- cipassword:<string>
-
分配用户的密码。通常不建议使用它。请改用ssh键。另请注意,较旧的cloud-init版本不支持散列密码。
- citype:<configdrive2 | nocloud>
-
指定cloud-init配置格式。默认值取决于配置的操作系统类型(ostype。我们使用Linux 的nocloud格式和Windows的configdrive2。
- ciuser:<string>
-
用于更改ssh密钥和密码的用户名,而不是图像配置的默认用户。
- ipconfig [n]:[gw = <GatewayIPv4>] [,gw6 = <GatewayIPv6>] [,ip = <IPv4Format / CIDR>] [,ip6 = <IPv6Format / CIDR>]
-
为相应的接口指定IP地址和网关。
IP地址使用CIDR表示法,网关是可选的,但需要指定相同类型的IP。
特殊字符串dhcp可用于IP地址以使用DHCP,在这种情况下,不应提供显式网关。对于IPv6,特殊字符串auto可用于使用无状态自动配置。
如果启用了cloud-init且既未指定IPv4也未指定IPv6地址,则默认为在IPv4上使用dhcp。
- gw = <GatewayIPv4>
-
IPv4流量的默认网关。
需要选项:ip - gw6 = <GatewayIPv6>
-
IPv6流量的默认网关。
需要选项:ip6 - ip = <IPv4Format / CIDR>(默认= dhcp)
-
CIDR格式的IPv4地址。
- ip6 = <IPv6Format / CIDR>(默认= dhcp)
-
CIDR格式的IPv6地址。
- nameserver:<string>
-
设置容器的DNS服务器IP地址。如果既没有设置searchdomain也没有设置nameserver,Create将自动使用主机中的设置。
- searchdomain:<string>
-
设置容器的DNS搜索域。如果既没有设置searchdomain也没有设置nameserver,Create将自动使用主机中的设置。
- sshkeys:<string>
-
设置公共SSH密钥(每行一个密钥,OpenSSH格式)。
proxmox之cloud-init的更多相关文章
- openstack cloud init set password
设置代理和password #!/bin/bash cd /home/ubuntu wget otcloud-gateway.bj.intel.com/script.tar.gz ]; then cu ...
- openstack 使用cloud init 和 console-log, nbd或者libguestfs 获取VM中的硬件信息。
以获取PCI的信息为例. 基本代码: pci.py import base64 import guestfs from functools import partial import os impor ...
- 微信小程序调用云函数出错 Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail cloud function service error code -501005, error message Environment not found;
错误异常: Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail cloud ...
- 分享使用tcb-router路由开发的云函数短信平台SDK
上篇文章我们分享了如何使用纯的云函数开发的榛子短信短信(http://smsow.zhenzikj.com)SDK,由于微信对于未付费云函数个数的限制,这种方法存在缺陷,经过改进,使用tcb-rout ...
- 【微信小程序云开发】从陌生到熟悉
前言 微信小程序在9月10号正式上线了云开发的功能,弱化后端和运维概念,以前开发一个小程序需要申请一个小程序,准备一个https的域名,开发需要一个前端一个服务端,有了云开发只有申请一个小程序,一个前 ...
- 小程序云开发--云函数上传文件或图片 base64
云函数开发遇到的问题 在微信云开发环境当中,普通的用户并没有往云存储内写入文件的权限 所以普通用户想要使用wx.cloud.uploadFile显然是不现实的 但是我们同时也知道,云函数是后台服务端, ...
- 微信小程序http连接访问解决方案
HTTP + 加密 + 认证 + 完整性保护 = HTTPS,小程序考虑到信息安全的问题,选用了更为稳定安全的https 来进行信息传递. HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全 ...
- 微信小程序云开发更换云开发环境
小程序云开发环境初始化默认是第一个环境,但是我们可以指定环境id //app.js App({ onLaunch: function () { if (!wx.cloud) { console.err ...
- nodejs + 小程序云函数 生成小程序码
前言:这个东西坑死我了 业务需求要生成小程序码 然后我找了两天的资料 运行 生成一堆的乱码 死活就是不能生成 最后看了一遍博客 套用了一下 自己又简单的改了一下 nodejs 我是刚刚接触 有很多 ...
- 微信小程序项目实战 - 菜谱大全
1. 项目简介 最近研究小程序云开发,上线了一个有关菜品查询的小程序.包括搜索.分享转发.收藏.查看历史记录等功能.菜谱 API 来自聚合数据.云开发为开发者提供完整的云端支持,弱化后端和运维概念,无 ...
随机推荐
- Springboot - java.lang.IllegalStateException: Failed to load property source from location 'classpath:/application.yml'
Caused by: org.yaml.snakeyaml.scanner.ScannerException: while scanning a simple key in 'reader', lin ...
- 编写可维护的JavaScript-随笔(二)
一.注释 1. 单行注释 a) 以两个斜线开始,以行位结束 b) 独占一行的注释,用来解释下一行的代码, c) 注释行之前总有一个空行 d) 缩进层级与下一行代 ...
- Java 数组(二)基本操作
一.数组的基本操作 1.数组遍历[重点] 数组遍历:就是将数组中的每个元素分别获取出来,就是遍历.遍历也是数组操作中的基石. 方式一:使用索引下标方式 int[] array = { 15, 25, ...
- python小项目之文本编辑器
高考完后这么久才想起这系列教程,实在抱歉,现在该来继续教程了. 本节利用前面所学知识,来完成一个小工具--文本编辑器! tkinter 在实现文本编辑器之前,先来了解下tkinter这个python库 ...
- scala快速入门之文档注释
scala快速入门之文档注释 1.在项目栏的目录树中找到该源码,右击点击Show in Explorer, 即可找到该源码的本地路径,在路径中输入cmd 2.执行scaladoc -d 生成文档注释 ...
- etcd和flannel实现docker跨物理机通信
实验目标 跨物理机的容器之间能直接访问docker通过Flannel可以实现各容器间的相互通信,即宿主机和容器,容器和容器之间都能相互通信 实验环境 192.168.3.50 //etcd.flann ...
- Linux基础学习之基础命令(1)--2019-11-14
查看命令路径其他方法: which 命令: which [options] [--] programname [...] -a:显示所有匹配的程序文件,而非第一个: --skip-alias:略过别名 ...
- PostgreSQL分区表实现——pg_pathman分区表管理
该博文用于自己学习记录,内容节选自: https://github.com/digoal/blog/blob/master/201610/20161024_01.md pg_pathman 创建分区表 ...
- 在ubuntu系统中,遇到 “由于/bin 不在PATH 环境变量中,故无法找到该命令”问题
2018年01月07日 11:27:34 YangJianShuai 阅读数 3024更多 分类专栏: linux 好多命令的位置在/usr/bin.恢复办法如下:1. /usr/bin/sudo v ...
- dfs 之 下一个排列
52. 下一个排列 中文English 给定一个整数数组来表示排列,找出其之后的一个排列. Example 例1: 输入:[1] 输出:[1] 例2: 输入:[1,3,2,3] 输出:[1,3,3,2 ...