最近更新时间:2023.02.14 17:00:21
首次发布时间:2022.07.06 12:46:07
每个公有云运营商对于cloud-init组件有自己的特殊配置,直接把友商的公有云镜像打包到火山引起使用,会有相关元数据注入问题,以及密码修改不生效等问题,本文介绍,如何将友商的Linux操作系统迁移至火山引擎。
预计实验时间:90分钟
级别:中级
相关产品:ECS
操作系统:centos7.6
受众: 通用
mkfs.ext4 /dev/vdb mount /dev/vdb /tmp/
yum install qemu-img -y
注意
在进行操作之前需要对操作的实例的系统盘制作快照,整个过程会涉及到删除cloud-init等操作。
登录友商Linux实例,执行以下步骤。
各个云厂家的cloud-init使用的版本不一致,有些厂家也会对cloud-init进行一定的修改,为了避免稳定性需要将原有的cloud-init删除,安装火山引擎提供的cloud-init版本。
登录友商Linux实例,执行一下步骤
whereis cloud-init ##根据显示的结果删除相关的cloud-init文件 rm /usr/bin/cloud-init rm /usr/local/bin/cloud-init cd /usr/libexec/ rm -rf cloud-init
wget https://launchpad.net/cloud-init/trunk/20.3/+download/cloud-init-20.3.tar.gz
yum install python3 -y yum install python3-pip -y yum install cloud-utils-growpart -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
编辑cloud-init配置文件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 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
下载安装并校验服务是否正常,本文以centos为例,其他操作系统可以参考官方文档火山引擎密码插件安装
wget http://volc-ecs.tos-s3-cn-beijing.volces.com/reset-authentication-1.0.4-0.x86_64.rpm rpm -i reset-authentication-1.0.4-0.x86_64.rpm systemctl is-active reset-authentication.service systemctl is-enabled reset-authentication.service
echo > /etc/udev/rules.d/70-persistent-net.rules rm -rf /var/lib/cloud
dd if=/dev/vda of=/tmp/centos7.img
qcow2 格式的镜像比 Raw 格式文件更小,只有在虚拟机实际占用了磁盘空间时,其文件才会增长,能方便的减少迁移花费的流量
cd /tmp qemu-img convert -f raw -O qcow2 Centos7.img Centos7.qcow2
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install
mkdir ~/.aws cd ~/.aws touch credentials
登录火山引擎访问控制服务生成一对AccessKey和AccessKey Secret
cat ~/.aws/credentials [default] aws_access_key_id=AKXXXXXXXX aws_secret_access_key=XXXXXX s3 = addressing_style = virtual
aws s3 cp /tmp/centos s3://bucket-name/filename --endpoint-url=http://tos-s3-cn-beijing.volces.com
到此步骤友商实例Linux的操作已经全部完成。
点击导入镜像
,输入获取的镜像地址,选择正确的操作系统版本,并点击确定,开始镜像导入。
相关配置参考官方文档https://developer.volcengine.com/articles/7109755342606581768