本期实验练习介绍了如何在支持虚拟化的机器上制作Debian8镜像,并将该自定义镜像上传到火山引擎自定义镜像控制台并使用该镜像创建实例。在实验正式开始之前,需要完成如下所示的准备工作:
开始制作之前,在火山引擎控制台创建弹性裸金属服务器,推荐使用ecs.ebmg2i.32xlarge
规格进行创建。并为实例挂载公网IP。
在Debian官方https://cdimage.debian.org/cdimage/archive/8.11.1/amd64/iso-dvd/下载.iso镜像文件。
预计部署时间:60分钟
级别:中级
相关产品:镜像
受众:通用
依次执行以下命令,完成环境准备;
lscpu | grep vmx //查看实例是否具有虚拟化能力 uname -r //查看内核版本,需高于3.10 sudo apt update sudo apu upgrade sudo apt install qemu qemu-kvm qemu-sysytem qemu-utils //安装KVM相关软件 sudo apt install libvirt-clients libvirt-daemon-system virtinst //安装libvirt systemctl status libvirtd.service //检查libvirt服务是否开启 systemctl restart libvirtd.service //若未开启,执行该命令开启服务 sudo virsh net-list --all //默认libvirt服务网络处于inactive状态 sudo virsh net-start default //开启网络 sudo virsh net-start default //设置开机自启动 ip link show virbr0 //检查virbr0网卡已经被创建 modprobe kvm modprobe kvm-intel //加载kvm
通过WinSCP上传下载的Debian镜像文件至实例/home
目录下;
创建虚拟机;
virt-install --name=debian-8 --memory=4096,maxmemory=8192 --vcpus=2,maxvcpus=4 --os-type=linux --os-variant=debian8 --location=/home/debian-8.11.1-amd64-netinst.iso --disk path=/home/debian8.qcow2,size=20 --network bridge=virbr0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"
将--os-variant后的参数替换为虚拟机的操作系统类型。您可以执行osinfo-query命令查看可选类型。 将--disk=后的参数替换为虚拟机操作系统的存储位置,即新创建镜像的路径。 将--cdrom=后的参数替换为基础镜像的路径。
创建完成后,分别执行命令virsh list
和virsh vncdisplay debian-8
查看创建虚拟机及虚拟机vnc地址;
安装完成后,可以直接输入用户名及密码登录到虚拟机内;或执行以下步骤,采用VNC方式远程连接虚拟机;
本地下载安装vnc viewer,安装地址为:https://www.realvnc.com/en/connect/download/viewer/windows/
通过vnc viewer远程连接新创建的虚拟机;
sudo apt install tigervnc-standalone-server -y //根据提示创建用户及密码等 vncserver -localhost no //启动VNC服务
virsh domifaddr volc-tob-debian-8.11-amd64
,查看default
的ip地址,与步骤c查到的vnc地址一起,在vnc viewer客户端上连接虚拟机。依次执行以下命令,检查OS驱动;
sudo ls /sys/firmware/efi //efi文件不存在,即可正常进行下一步,验证驱动 grep -wr CONFIG_VIRTIO_NET /boot/config-$(uname -r) grep -wr CONFIG_VIRTIO_BLK /boot/config-$(uname -r)
wget https://launchpad.net/cloud-init/trunk/20.3/+download/cloud-init-20.3.tar.gz apt-get install python3 -y apt-get install python3-pip -y apt-get install cloud-guest-utils -y tar -xzvf cloud-init-20.3.tar.gz cd cloud-init-20.3 pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple python3 setup.py build python3 setup.py install --init-system systemd ln -s /usr/local/bin/cloud-init /usr/bin/cloud-init systemctl enable cloud-init-local.service systemctl enable cloud-init.service systemctl enable cloud-config.service systemctl enable cloud-final.service
vi /etc/cloud/cloud.cfg
将下列内容替换到文件中;users: - default disable_root: 0 ssh_pwauth: 1 growpart: mode: auto devices: ['/'] ignore_growroot_disabled: false mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.requires=cloud-init.service', '0', '2'] resize_rootfs_tmp: /dev ssh_deletekeys: 1 syslog_fix_perms: ~ disable_vmware_customization: false manage_etc_hosts: localhost cloud_init_modules: - disk_setup - migrator - bootcmd - write-files - growpart - resizefs - set_hostname - update_hostname - update_etc_hosts - rsyslog - users-groups - ssh cloud_config_modules: - mounts - locale - set-passwords - rh_subscription - yum-add-repo - package-update-upgrade-install - timezone - puppet - chef - salt-minion - mcollective - disable-ec2-metadata - runcmd cloud_final_modules: - rightscale_userdata - scripts-per-once - scripts-per-boot - scripts-per-instance - scripts-user - ssh-authkey-fingerprints - keys-to-console - phone-home - final-message - power-state-change system_info: # distro: rhel # centos则打开此配置 paths: cloud_dir: /var/lib/cloud templates_dir: /etc/cloud/templates ssh_svcname: sshd
创建文件 vi /etc/cloud/cloud.cfg.d/90_dpkg.cfg
,并写入以下内容
datasource_list: [ConfigDrive, OpenStack] datasource: OpenStack: metadata_urls: ["http://169.254.169.254","http://100.96.0.96"] max_wait: -1 timeout: 5 retries: 5 apply_network_config: True
依次执行以下命令下载安装密码插件;
wget http://volc-ecs.tos-s3-cn-beijing.volces.com/reset-authentication_1.0.4-0_amd64.deb dpkg -i reset-authentication_1.0.4-0_amd64.deb systemctl is-active reset-authentication.service systemctl is-enabled reset-authentication.service
virsh shutdow 虚拟机名称 //关闭虚拟机并获得镜像文件 virt-install --disk //查看镜像文件
当镜像文件小于5GB时,通过WinSCP客户端,将制作好的镜像文件从裸金属实例内上传到本机机器内;
当镜像文件大于5GB时,依次执行以下命令,完成镜像导出及上传到控制台的操作;
操作系统安装awscil工具;
curl "[https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip](https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip)" -o "awscliv2.zip" apt-get install unzip unzip awscliv2.zip sudo ./aws/install
创建配置文件~/.aws/credentials;
mkdir ~/.aws cd ~/.aws touch credentials
cat ~/.aws/credentials [default] aws_access_key_id=AKXXXXXXXX aws_secret_access_key=XXXXXX s3 = addressing_style = virtual
aws s3 ls --endpoint-url=http://tos-s3-cn-beijing.volces.com aws s3 cp /tmp/centos s3://bucket-name/filename --endpoint-url=http://tos-s3-cn-beijing.volces.com
将镜像文件上传到TOS桶内,并复制镜像文件地址;
在自定义镜像控制台中,点击“导入镜像”,完成信息配置;
等待导入完成后,即可使用该镜像创建操作系统Debian8的实例。
如果您有其他问题,欢迎您联系火山引擎技术支持服务。