草庐IT

PVE Cloud-INIT 模板配置

小陈运维 2023-04-17 原文

PVE Cloud-INIT 模板配置

Cloud-init是什么

Cloud-init是开源的云初始化程序,能够对新创建弹性云服务器中指定的自定义信息(主机名、密钥和用户数据等)进行初始化配置。通过Cloud-init进行弹性云服务器的初始化配置,将对您使用弹性云服务器、镜像服务和弹性伸缩产生影响。简单地讲,cloud-init是一个Linux虚拟机的初始化工具,被广泛应用在AWS和OpenStack等云平台中,用于在新建的虚拟机中进行时间设置、密码设置、扩展分区、安装软件包等初始化设置。

对镜像服务的影响

为了保证使用私有镜像新创建的弹性云服务器可以自定义配置,您需要在创建私有镜像前先安装Cloud-init/Cloudbase-init。

如果是Windows操作系统,需下载并安装Cloudbase-init。

如果是Linux操作系统,需下载并安装Cloud-init。

在镜像上安装Cloud-init/Cloudbase-init后,即可在创建弹性云服务器时,按照用户的需要自动设置弹性云服务器的初始属性。

对弹性云服务器的影响

在创建弹性云服务器时,如果选择的镜像支持Cloud-init特性,此时,您可以通过系统提供的“用户数据注入”功能,注入初始化自定义信息(例如为弹性云服务器设置登录密码),完成弹性云服务器的初始化配置。

支持Cloud-init特性后ZQ,弹性云服务器的登录方式会产生影响。

对于运行中的的弹性云服务器,支持Cloud-init特性后,用户可以通过查询、使用元数据,对正在运行的弹性云服务器进行配置和管理。

对弹性伸缩的影响

创建伸缩配置时,您可以使用“用户数据注入”功能,指定弹性云服务器的初始化自定义信息。如果伸缩组使用了该伸缩配置,则伸缩组新创建的弹性云服务器会自动完成初始化配置。

对于已有的伸缩配置,如果其私有镜像没有安装Cloud-init/Cloudbase-init,则使用该伸缩配置的伸缩组创建的弹性云服务器在登录时会受到影响。

官方镜像下载

# cloud images下载地址
# centos:
http://cloud.centos.org/centos/
# ubuntu:
http://cloud-images.ubuntu.com/releases/
# debian:
https://cloud.debian.org/images/cloud/OpenStack/
# fedora:
https://alt.fedoraproject.org/cloud/
# rehat7:
https://access.redhat.com/downloads/content/69/ver=/rhel---7/x86_64/product-downloads
# opensuse:
https://software.opensuse.org/distributions/leap#JeOS-ports

下载镜像

# 下载Ubuntu官方CloudINIT镜像
root@cby:~# wget https://mirrors.ustc.edu.cn/ubuntu-cloud-images/jammy/20230405/jammy-server-cloudimg-amd64.img
--2023-04-06 19:00:50--  https://mirrors.ustc.edu.cn/ubuntu-cloud-images/jammy/20230405/jammy-server-cloudimg-amd64.img
Resolving mirrors.ustc.edu.cn (mirrors.ustc.edu.cn)... 2001:da8:d800:95::110, 202.141.176.110, 202.141.160.110
Connecting to mirrors.ustc.edu.cn (mirrors.ustc.edu.cn)|2001:da8:d800:95::110|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 684654592 (653M) [application/octet-stream]
Saving to: ‘jammy-server-cloudimg-amd64.img’

jammy-server-cloudimg-amd64.img                             100%[=========================================================================================================================================>] 652.94M  64.7MB/s    in 9.7s    

2023-04-06 19:01:00 (67.3 MB/s) - ‘jammy-server-cloudimg-amd64.img’ saved [684654592/684654592]


# 下载CentOS官方CloudINIT镜像
root@cby:~# wget https://mirrors.ustc.edu.cn/centos-cloud/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2
--2023-04-06 19:01:48--  https://mirrors.ustc.edu.cn/centos-cloud/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2
Resolving mirrors.ustc.edu.cn (mirrors.ustc.edu.cn)... 2001:da8:d800:95::110, 202.141.176.110, 202.141.160.110
Connecting to mirrors.ustc.edu.cn (mirrors.ustc.edu.cn)|2001:da8:d800:95::110|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 902889472 (861M) [application/octet-stream]
Saving to: ‘CentOS-7-x86_64-GenericCloud.qcow2’

CentOS-7-x86_64-GenericCloud.qcow2                          100%[=========================================================================================================================================>] 861.06M  60.5MB/s    in 15s     

2023-04-06 19:02:03 (59.1 MB/s) - ‘CentOS-7-x86_64-GenericCloud.qcow2’ saved [902889472/902889472]
root@cby:~# 

使用命令配置

VM_ID=101
# 创建虚拟机
qm create $VM_ID --cores 4 --memory 4096 --name ubuntu --net0 virtio,bridge=vmbr0
# 给虚拟机导入镜像
qm importdisk $VM_ID jammy-server-cloudimg-amd64.img local-lvm
# 创建磁盘到local-lvm
qm set $VM_ID --sata0 local-lvm:vm-$VM_ID-disk-0
# 创建cloudinit
qm set $VM_ID --sata1 local-lvm:cloudinit
# 设置默认启动项
qm set $VM_ID --boot c --bootdisk sata0
# 设置vga
qm set $VM_ID --serial0 socket --vga serial0
# 设置root密码
qm set $VM_ID --ciuser root --cipassword 123123
# 配置静态网络
#qm set $VM_ID  --ipconfig0 ip=10.0.10.123/24,gw=10.0.10.1,ip6=dhcp
# 配置DHCP网络
qm set $VM_ID --ipconfig0 ip=dhcp,ip6=dhcp
# 配置DNS
qm set $VM_ID --nameserver 223.5.5.5
qm set $VM_ID --searchdomain 223.5.5.5
# 转换为模板
qm template $VM_ID
# 克隆
qm clone 101 103 --name cby

简化整理命令

# Ubuntu简化
VM_ID=101
qm create $VM_ID --cores 4 --memory 4096 --name ubuntu --net0 virtio,bridge=vmbr0
qm importdisk $VM_ID jammy-server-cloudimg-amd64.img local-lvm
qm set $VM_ID --sata0 local-lvm:vm-$VM_ID-disk-0 --sata1 local-lvm:cloudinit --boot c --bootdisk sata0 --serial0 socket --vga serial0 --ciuser root --cipassword 123123 --ipconfig0 ip=dhcp,ip6=dhcp --nameserver 8.8.8.8 --searchdomain 8.8.8.8


# CentOS简化
VM_ID=102
qm create $VM_ID --cores 4 --memory 4096 --name centos --net0 virtio,bridge=vmbr0
qm importdisk $VM_ID CentOS-7-x86_64-GenericCloud.qcow2 local-lvm
qm set $VM_ID --sata0 local-lvm:vm-$VM_ID-disk-0 --sata1 local-lvm:cloudinit --boot c --bootdisk sata0 --serial0 socket --vga serial0 --ciuser root --cipassword 123123 --ipconfig0 ip=dhcp,ip6=dhcp --nameserver 8.8.8.8 --searchdomain 8.8.8.8

配置模板系统

CentOS

# 配置yum源
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos|g' -i.bak /etc/yum.repos.d/CentOS-Base.repo

# 设置时区
timedatectl set-timezone Asia/Shanghai

# 安装vim
yum install vim bash-completion

# 修改ssh远程
vim /etc/ssh/sshd_config
# 开启root登录(如果需要的话;这里开启了之后Cloud-Init用户就可以设置root)
PermitRootLogin yes
# 开启密钥登录
PubkeyAuthentication yes
# 密钥路径
AuthorizedKeysFile
# 开启密码登录(默认只允许密钥登录)
PasswordAuthentication yes
# 不允许空密码登录
PermitEmptyPasswords no
# 关闭连接的DNS解析
UseDNS no

Ubuntu

# 设置时区
timedatectl set-timezone Asia/Shanghai

# 设置APT仓库源
sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list

# 更新源和安装常用软件
apt update && sudo apt install vim bash-completion -y

# 更新系统
sudo apt upgrade

# 修改SSH配置
vim /etc/ssh/sshd_config
# 开启root登录(如果需要的话;这里开启了之后Cloud-Init用户就可以设置root)
PermitRootLogin yes
# 开启密钥登录
PubkeyAuthentication yes
# 密钥路径
AuthorizedKeysFile
# 开启密码登录(默认只允许密钥登录)
PasswordAuthentication yes
# 不允许空密码登录
PermitEmptyPasswords no
# 关闭连接的DNS解析
UseDNS no

附录

qm monitor <vmid>         # 连接到虚拟机控制监视器
qm clone <vmid> <newid> [OPTIONS]  # 克隆虚拟机
qm start <vmid>               # 启动实例
qm shutdown <vmid>      # 优雅停止实例 发送关机命令
qm wait <vmid> [time]   wait until vm is stopped
qm stop <vmid>               # 停止实例 强制停止
qm reset <vmid>              # 重启实例 相当于stop然后再start
qm suspend <vmid>        # 暂停实例
qm resume <vmid>         # 恢复实例
qm cad <vmid>               #发送按键 ctrl-alt-delete
qm destroy <vmid>        # 销毁实例(删除所有已使用/拥有的卷)
qm unlock <vmid>         # 清除迁移/备份锁
qm status <vmid>          # 显示实例状态
qm cdrom <vmid> [<device>] <path>  set cdrom path. <device is ide2 by default>
qm cdrom <vmid> [<device>] eject   eject cdrom
qm unlink <vmid> <volume>  delete unused disk images
qm vncproxy <vmid> <ticket>  open vnc proxy
qm vnc <vmid>           start (X11) vncviewer (experimental)
qm showcmd <vmid>     # 显示命令行(调试信息)
qm list                             # 列出所有虚拟机
qm startall                       # 启动所有虚拟机 当onboot=1时
qm stopall [timeout]       # 停止所有虚拟机(默认超时为3分钟)


qm [create|set] <vmid>  # 创建虚拟机
    --memory  <MBYTES>    memory in MB (64 - 8192)
    --sockets <N>         set number of CPU sockets <N>
    --cores <N>           set cores per socket to <N>
    --ostype NAME         specify OS type
    --onboot [yes|no]     start at boot
    --keyboard XX         set vnc keyboard layout
    --cpuunits <num>      CPU weight for a VM
    --name <text>         set a name for the VM
    --description <text>  set VM description
    --boot [a|c|d|n]      specify boot order
    --bootdisk <disk>     enable booting from <disk>
    --acpi (yes|no)       enable/disable ACPI
    --kvm (yes|no)        enable/disable KVM
    --tdf (yes|no)        enable/disable time drift fix
    --localtime (yes|no)  set the RTC to local time
    --vga (gd5446|vesa)   specify VGA type
    --vlan[0-9u]          MODEL=XX:XX:XX:XX:XX:XX[,MODEL=YY:YY:YY:YY:YY:YY]
    --ide<N>              [volume=]volume,[,media=cdrom|disk]
                          [,cyls=c,heads=h,secs=s[,trans=t]]
                          [,cache=none|writethrough|writeback]
                          [,snapshot=on|off][,cache=on|off][,format=f]
                          [,werror=enospc|ignore|report|stop]
                          [,rerror=ignore|report|stop]
                          [,backup=no|yes]
    --ide<N> <GBYTES>     create new disk
    --ide<N> delete       remove drive - destroy image
    --ide<N> undef        remove drive - keep image
    --cdrom <file>        is an alias for --ide2 <file>,media=cdrom
    --scsi<N>             [volume=]volume,[,media=cdrom|disk]
                          [,cyls=c,heads=h,secs=s[,trans=t]]
                          [,snapshot=on|off][,format=f]
                          [,cache=none|writethrough|writeback]
                          [,werror=enospc|ignore|report|stop]
                          [,backup=no|yes]
    --scsi<N> <GBYTES>    create new disk
    --scsi<N> delete      remove drive - destroy image
    --scsi<N> undef       remove drive - keep image
    --virtio<N>           [volume=]volume,[,media=cdrom|disk]
                          [,cyls=c,heads=h,secs=s[,trans=t]]
                          [,snapshot=on|off][,format=f]
                          [,cache=none|writethrough|writeback]
                          [,werror=enospc|ignore|report|stop]
                          [,rerror=ignore|report|stop]
                          [,backup=no|yes]
    --virtio<N> <GBYTES>  create new disk
    --virtio<N> delete    remove drive - destroy image
    --virtio<N> undef     remove drive - keep image
    




pveperf    # 基准脚本
pvesr list    # 列出存储复制作业
ha-manager status   # 查看HA状态
pvecm nodes    # 查看集群节点
pvecm status    # 查看集群状态
pve-firewall compile  # 查看防火墙规则
pve-firewall localnet  # 输出本地网络信息
pve-firewall restart    # 重启防火墙
pve-firewall stop       # 停止防火墙
pve-firewall start      # 启动防火墙



pvesh get /version   # 查看集群
pvesh get /cluster/resources  #查看集群资源状况
pvesh get /nodes   # 显示所有node
pvesh get /nodes/<nodeid>/qemu   # 显示某节点中的虚拟机
pvesh get /nodes/<nodeid>/qemu/<vmid>/status/current    # 显示某虚拟机状态
pvesh create /nodes/<nodeid>/qemu/<vmid>/status/start    # 开启一个虚拟机 [注意是create哦,不是get了]
pvesh get /nodes/<nodeid>/lxc/<ctid>/snapshot    # 显示某节点下容器快照
pvesh get /nodes/<nodeid>/disks/zfs    # 显示某节点的ZFS存储区
pvesh get /nodes/<nodeid>/disks/list  # 显示某节点的磁盘列表

关于

https://www.oiox.cn/

https://www.oiox.cn/index.php/start-page.html

CSDN、GitHub、51CTO、知乎、开源中国、思否、博客园、掘金、简书、华为云、阿里云、腾讯云、哔哩哔哩、今日头条、新浪微博、个人博客

全网可搜《小陈运维》

文章主要发布于微信公众号

有关PVE Cloud-INIT 模板配置的更多相关文章

  1. ruby - 通过 erb 模板输出 ruby​​ 数组 - 2

    我正在使用puppet为ruby​​程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby​​不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这

  2. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  3. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  4. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  5. ruby-on-rails - Mandrill API 模板 - 2

    我正在使用Mandrill的RubyAPIGem并使用以下简单的测试模板:testastic按照Heroku指南中的示例,我有以下Ruby代码:require'mandrill'm=Mandrill::API.newrendered=m.templates.render'test-template',[{:header=>'someheadertext',:main_section=>'Themaincontentblock',:footer=>'asdf'}]mail(:to=>"JaysonLane",:subject=>"TestEmail")do|format|format.h

  6. 神州数码无线产品(AC+AP)配置 - 2

    注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配

  7. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

  8. ruby - Chef Ruby 遍历 .erb 模板文件中的属性 - 2

    所以这可能有点令人困惑,但请耐心等待。简而言之,我想遍历具有特定键值的所有属性,然后如果值不为空,则将它们插入到模板中。这是我的代码:属性:#===DefaultfileConfigurations#default['elasticsearch']['default']['ES_USER']=''default['elasticsearch']['default']['ES_GROUP']=''default['elasticsearch']['default']['ES_HEAP_SIZE']=''default['elasticsearch']['default']['MAX_OP

  9. Ruby 默认将 IRB 配置为 Pretty_Inspect - 2

    我是ruby​​的新手,正在配置IRB。我喜欢pretty-print(需要'pp'),但总是输入pp来漂亮地打印它似乎很麻烦。我想做的是默认情况下让它漂亮地打印出来,所以如果我有一个var,比如说,'myvar',然后键入myvar,它会自动调用pretty_inspect而不是常规检查。我从哪里开始?理想情况下,我将能够向我的.irbrc文件添加一个自动调用的方法。有什么想法吗?谢谢! 最佳答案 irb中默认pretty-print对象正是hirb被迫去做。Theseposts解释hirb如何将几乎所有内容转换为ascii表。虽

  10. ruby - 是否可以将 IRB 提示配置为动态更改? - 2

    我想在IRB中浏览文件系统并让提示更改以反射(reflect)当前工作目录,但我不知道如何在每个命令后进行提示更新。最终,我想在日常工作中更多地使用IRB,让bash溜走。我在我的.irbrc中试过这个:require'fileutils'includeFileUtilsIRB.conf[:PROMPT][:CUSTOM]={:PROMPT_N=>"\e[1m:\e[m",:PROMPT_I=>"\e[1m#{pwd}>\e[m",:PROMPT_S=>"FOO",:PROMPT_C=>"\e[1m#{pwd}>\e[m",:RETURN=>""}IRB.conf[:PROMPT_MO

随机推荐