tencent cloud

Cloud Virtual Machine

Release Notes and Announcements
Release Notes
Public Image Release Notes
Official End of Support Plan for the Operating System
Announcements
Product Introduction
CVM Overview
Strengths
Basic Concepts
Regions and Zones
Tutorial
Service Regions and Service Providers
Billing
Billing Overview
Billing Modes
Billing Items
Billing Mode Conversion Overview
Purchasing Instances
Configuration Adjustment Billing Guide
Overdue Payments
Getting Started
Purchasing a Customized Linux Instance
Purchasing a Customized Windows Instance
User Guide
Operation Guide Overview
Use Limits
Instances
Spot Instances
Reserved Instances
Images
Storage
Backup and Restoration
Network
Security
Passwords/Keys
Monitoring and Alarms
Ops Management
Convenience Features
Migrating a Server
Online Migration
Migration Consultation
Troubleshooting
CVM Login Failures
Windows Instance Login Failures
Linux Instance Login Failures
Other Login Failures
Instance Running Failures
Linux Instance Memory Failures
Network Failures
Use Cases
Suggestions on CVM Model Selection
Environment Building
Website Building
Application Building
Visual GUI Building
Uploading Local Files to CVM
Network Performance Test
Other Practical Tutorials
API Documentation
History
Introduction
API Category
Making API Requests
Region APIs
Instance APIs
Cloud Hosting Cluster APIs
Image APIs
Instance Launch Template APIs
Placement Group APIs
Key APIs
Security Group APIs
Network APIs
Data Types
Error Codes
Security and Compliance
CAM
Network
FAQs
Regions and Zones
Billing
Instances
Storage
Images
Server Migration
Network
Security
Operating Systems
Ops and Monitoring
CAM
NTP Service
Scenarios
Agreements
CVM Service Level Agreements
Red Hat Enterprise Linux Image Service Agreement
Public IP Service Level Agreement
Glossary

Force-Importing an Image

PDF
Focus Mode
Font Size
Last updated: 2024-01-08 09:37:01

Scenario

If you cannot install cloudinit in your Linux image, use Forced Image Import to import the image. If you use this image for import, which does not have cloudinit installed, Tencent Cloud cannot initialize your CVM. In this case, you need to set up the script on your own to configure the CVM based on the configuration file provided by Tencent Cloud. This document describes how to configure the CVM if the image is forcibly imported.
Tencent Cloud provides the user with CDROM device containing the configuration information. The user needs to mount CDROM and read the information of mount_point/qcloud_action/os.conf for configuration. If other configuration data or UserData needs to be used, the user can directly read files under mount_point/.

os.conf Configuration File

The content of os.conf is as follows.
hostname=VM_10_20_xxxx
password=GRSgae1fw9frsG.rfrF
eth0_ip_addr=10.104.62.201
eth0_mac_addr=52:54:00:E1:96:EB
eth0_netmask=255.255.192.0
eth0_gateway=10.104.0.1
dns_nameserver="10.138.224.65 10.182.20.26 10.182.24.12"
Note:
The parameter names above are for reference, and the values are used as examples only.
The description of each parameter in the os.conf configuration file is as follows:
Parameter Name
Description
hostname
CVM name
password
Encrypted password
eth0_ip_addr
LAN IP of eth0
eth0_mac_addr
MAC address of eth0
eth0_netmask
Subnet mask of eth0
eth0_gateway
Gateway of eth0
dns_nameserver
DNS resolution server

Limits

The image must meet the limits on Linux images as outlined in Import Images, except for cloudinit.
The system partition for importing the image is not full.
The imported image contains no vulnerability that can be exploited remotely.
We recommend you change the password immediately after the instance is created successfully with the forcibly imported image.

Notes

Note the following when configuring script parsing:
The script is executed automatically at startup. Please implement this requirement based on your operating system.
Mount /dev/cdrom and read qcloud_action/os.conf file under the mount point to obtain the configuration information.
The password placed in CDROM by Tencent Cloud is encrypted. You can set new password with chpasswd -e. Note that the encrypted password may contain special characters. We recommend you place it in a file and then set the password with chpasswd -e < passwd_file.
When you use the forcibly imported image to create an instance and then create an image, you need to ensure that the script will still be executed to ensure that the instance is configured correctly. You can also install cloudinit in this instance.

Directions

Note:
Tencent Cloud provides a script sample based on CentOS. You can refer to it to create script for your images. During the creation, note that:
The script must be properly placed in the system before image import.
The script is not applicable to all operating systems. You need to modify it according to your own operating systems.
1. Create an os_config script based on the following script sample. You can modify the script as needed.
#!/bin/bash
### BEGIN INIT INFO
# Provides: os-config
# Required-Start: $local_fs $network $named $remote_fs
# Required-Stop:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: config of os-init job
# Description: run the config phase without cloud-init
### END INIT INFO
###################user settings#####################
cdrom_path=`blkid -L config-2`
load_os_config() {
mount_path=$(mktemp -d /mnt/tmp.XXXX)
mount /dev/cdrom $mount_path
if [[ -f $mount_path/qcloud_action/os.conf ]]; then
. $mount_path/qcloud_action/os.conf
if [[ -n $password ]]; then
passwd_file=$(mktemp /mnt/pass.XXXX)
passwd_line=$(grep password $mount_path/qcloud_action/os.conf)
echo root:${passwd_line#*=} > $passwd_file
fi
return 0
else
return 1
fi
}
cleanup() {
umount /dev/cdrom
if [[ -f $passwd_file ]]; then
echo $passwd_file
rm -f $passwd_file
fi
if [[ -d $mount_path ]]; then
echo $mount_path
rm -rf $mount_path
fi
}
config_password() {
if [[ -f $passwd_file ]]; then
chpasswd -e < $passwd_file
fi
}
config_hostname(){
if [[ -n $hostname ]]; then
sed -i "/^HOSTNAME=.*/d" /etc/sysconfig/network
echo "HOSTNAME=$hostname" >> /etc/sysconfig/network
fi
}
config_dns() {
if [[ -n $dns_nameserver ]]; then
dns_conf=/etc/resolv.conf
sed -i '/^nameserver.*/d' $dns_conf
for i in $dns_nameserver; do
echo "nameserver $i" >> $dns_conf
done
fi
}
config_network() {
/etc/init.d/network stop
cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
IPADDR=$eth0_ip_addr
NETMASK=$eth0_netmask
HWADDR=$eth0_mac_addr
ONBOOT=yes
GATEWAY=$eth0_gateway
BOOTPROTO=static
EOF
if [[ -n $hostname ]]; then
sed -i "/^${eth0_ip_addr}.*/d" /etc/hosts
echo "${eth0_ip_addr} $hostname" >> /etc/hosts
fi
/etc/init.d/network start
}
config_gateway() {
sed -i "s/^GATEWAY=.*/GATEWAY=$eth0_gateway" /etc/sysconfig/network
}
###################init#####################
start() {
if load_os_config ; then
config_password
config_hostname
config_dns
config_network
cleanup
exit 0
else
echo "mount ${cdrom_path} failed"
exit 1
fi
}
RETVAL=0
case "$1" in
start)
start
RETVAL=$?
;;
*)
echo "Usage: $0 {start}"
RETVAL=3
;;
esac
exit $RETVAL
2. Place the os_config script in the /etc/init.d/ directory and execute the following command.
chmod +x /etc/init.d/os_config
chkconfig --add os_config
3. Execute the following command to check whether os_config has been added to the startup service.
chkconfig --list
Note:
You must ensure that the script is correctly executed. If you fail to connect to the instance via SSH or network exception occurs after the image import, try to connect to the instance via the console to execute the script again. If such problems remain, contact the customer service.


Help and Support

Was this page helpful?

Help us improve! Rate your documentation experience in 5 mins.

Feedback