• 云途科技成立于2010年 - 专注全球跨境电商服务器租赁托管!
  • 帮助中心

    您可以通过下方搜索框快速查找您想知道的问题

    proxmox里使用cloud-init和一些笔记

      in  unix      Tags:  proxmox cloud-init  cloud-init  centos7 cloud-init  proxmox centos7 cloud-init  

    cloud-init的镜像模板制作

    模板制作

    记录下proxmox制作带有cloud-init的虚机模板过程
        因为刚开始制作虚机模板的硬盘是固定大小,后面通过克隆后调整硬盘大小就会自动growpart,需要安装cloud-utils-growpart。好像只能往大的扩,我个人也倾向于最小20G,所以这里我开的是20G硬盘的虚机
        另外查了下和实际试了下cloud-utils-growpart好像只支持ext3ext4不支持lvm自动扩,其他的文件系统可以考虑试试lvm自己写个脚本去开机启动自动扩。这里我分区不带swap,标准分区+ext4


    1.png

    安装完后进系统里自行配制好网卡(onboot=yes,清掉uuid)和dns,因为需要安装一些东西
    我个人喜欢拿到手就关闭selinuxFirewalld以及NetworkManager

    1
    2
    3
    systemctl disable --now firewalld NetworkManager
    setenforce 0
    sed -ri '/^[^#]*SELINUX=/s#=.+$#=disabled#' /etc/selinux/config

    为了让虚拟化层能重启和关闭虚拟机,必须在虚拟机内安装并运行 acpid 服务,为了使根分区正确调整大小安装cloud-utils-growpart,cloud-init支持下发前设置信息写入instance

    1
    2
    yum install -y acpid cloud-init cloud-utils-growpart
    systemctl enable acpid

    禁用默认zeroconf路线(当系统无法连接DHCP server的时候,就会尝试通过ZEROCONF来获取IP,并添加一条169.254.0.0/16的路由条目)

    1
    echo "NOZEROCONF=yes" >> /etc/sysconfig/network

    修改sshd不使用dns防止ssh连接慢

    1
    2
    sed -ri '/UseDNS/{[email protected]#@@;[email protected]\[email protected] [email protected]}' /etc/ssh/sshd_config
    systemctl restart sshd

          默认的cloud-init的配置文件我们目前需要关心下面这三行:ssh_pwauth 为 0 是禁止使用password登陆。disable_root:1 是禁止root登陆但是我试了下和在网上看到不改0也能登陆不知道为啥。 package-update-upgrade-install这个模块会在instance初次开机后会yum update -y

    1
    2
    3
    disable_root: 1
    ssh_pwauth:   0
    - package-update-upgrade-install

    可以通过下面命令修改

    1
    2
    3
    sed -ri '/disable_root/{s#\S$#0#}' /etc/cloud/cloud.cfg
    sed -ri '/ssh_pwauth/{s#\S$#1#}' /etc/cloud/cloud.cfg
    sed -ri '/package-update/[email protected]^@#@' /etc/cloud/cloud.cfg

    默认cloud-init会创建一个系统类型的用户,不想创建就把这些注释了

    1
    2
    3
    4
    5
    6
    7
    #  default_user:
    #    name: CentOS
    #    lock_passwd: true
    #    gecos: Cloud User
    #    groups: [wheel, adm, systemd-journal]
    #    sudo: ["ALL=(ALL) NOPASSWD:ALL"]
    #    shell: /bin/bash

    其他的也可以自己安装点东西例如ntp啥的,弄完后关机即可

    1
    poweroff

    转换模板

    记住vmid,在虚机所在的pve后台ssh上执行下面命令,我这是本地的lvm去存储cloudinit的metadata

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [email protected]:~# qm list
         VMID NAME                 STATUS     MEM(MB)    BOOTDISK(GB) PID      
          100 cyn1                 running    2048              20.00 42543    
          101 cyn2                 running    2048              20.00 42916    
          102 cyn                  running    2048              20.00 32136    
          103 Copy-of-cyn          running    2048              20.00 44227    
          104 cloud-test           stopped    2048              20.00 0        
    [email protected]:~# qm set 104 --ide2 local-lvm:cloudinit
    update VM 104: -ide2 local-lvm:cloudinit
     Using default stripesize 64.00 KiB.
     Rounding up size to full physical extent 8.00 MiB
     Logical volume "vm-104-cloudinit" created.

    然后在web上可以看到cloud-init这部分不再是灰色了


    2.png


    web页面上把它转换成模板即可,部署的话完整克隆下,开机之前双击需要设置的信息即可,否则例如密码不设置默认是模板的密码
        pve后台ssh上也可以通过命令设置初始化使用的信息,例如:

    1
    qm set <vmid> --ipconfig0 ip=10.0.10.123/24,gw=10.0.10.1

    备份虚机的话可以使用vzdump命令,查看命令帮助使用vzdump help,备份出来的是一个vma的后缀文件,vma文件可以命令导入qmrestore vzdump-qemu-xx.vma <vmid>

    参考资料:

    http://blog.sina.com.cn/s/blog_79fd72df0101uo3z.html

    https://www.cnblogs.com/linkenpark/p/9527518.html

    https://pve.proxmox.com/wiki/Cloud-Init_Support

    proxmox的一些openstack角度笔记

    pve宿主机可以安装libguestfs-tools和来不开机虚机来查看和编辑一些信息,可以使用vma extract解开vma发现是一个硬件信息的conf和一个raw的硬盘文件,转成qcow2文件后查看,例如

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    [email protected]:~# vma extract vzdump-qemu-100-2019_01_31-13_11_02.vma temp/
    DEVINFO temp//tmp-disk-drive-scsi0.raw 21474836480
    [email protected]:~# ll temp/
    total 1271184
    -rw-r--r-- 1 root root 21474836480 Feb 22 13:33 disk-drive-scsi0.raw
    -rw-r--r-- 1 root root         391 Feb 22 13:33 qemu-server.conf
    [email protected]:~# qemu-img convert -f raw temp/disk-drive-scsi0.raw  -O qcow2 myvm-disk1.qcow2
    [email protected]:~# ll
    total 2571096
    -rw-r--r-- 1 root root 1328283648 Feb 22 13:34 myvm-disk1.qcow2
    drwxr-xr-x 2 root root       4096 Feb 22 13:33 temp
    -rw-r--r-- 1 root root 1304569344 Feb 21 11:36 vzdump-qemu-100-2019_01_31-13_11_02.vma
    [email protected]:~# virt-ls myvm-disk1.qcow2  /
    bin
    boot
    dev
    etc
    home
    lib
    lib64
    media
    mnt
    opt
    proc
    root
    run
    sbin
    srv
    sys
    tmp
    usr
    var

    详细命令可以看看下面的
    https://blog.csdn.net/wenwenxiong/article/details/52223731
    https://blog.51cto.com/xiaoli110/1568307?utm_source=tuicool


    7*24小时 在线提交工单

    如果您的问题没有得到解决,推荐您在线提交工单,我们的客服人员会第一时间为您解决问题

    展开