Creating a VM from a custom image
Before you start
Prepare and upload the image to create a VM from.
Make sure the uploaded image is in the READY
status.
Create a VM from the prepared image
-
Open the folder where the VM will be created.
-
Click Create resource.
-
Select Virtual machine.
-
In the Name field, enter a name for the VM.
- The name must be unique within the folder.
- The name may contain lowercase Latin letters, numbers, and hyphens.
- The first character must be a letter. The last character can't be a hyphen.
- The maximum length of the name is 63 characters.
Note
The VM name is used to generate the FQDN only once, when creating the VM. If the FQDN is important to you, choose an appropriate name for the VM at the creation stage.
-
Select the availability zone to host the VM in.
-
In the Disks section, click Add disk.
- In the Name field, enter the disk name.
- Set the required disk size.
- In the Disk designation section, choose Boot.
- Select the disk type: HDD or SSD.
- In the Content section, choose Image. A list of images that you uploaded opens.
- Select the necessary image.
- Click Add.
-
Under Computing resources:
- Choose a platform.
- Specify the necessary number of vCPUs and amount of RAM.
-
In the Network settings section, click Add network.
-
In the window that opens, select the subnet to connect the VM to while being created.
-
In Public address, choose:
- Automatically — to set a public IP address automatically. The address is allocated from the Yandex.Cloud address pool.
- List — to select a public IP address from the list of static addresses. For more information, see Making a dynamic public IP address static in the Virtual Private Cloud documentation.
- No address — don't assign a public IP address.
-
Specify data required for accessing the VM:
- Enter the username in the Login field.
- In the SSH key field, paste the contents of the public key file.
You need to create a key pair for SSH connection yourself. To generate keys, use third-party tools, such asssh-keygen
utilities on Linux and macOS or PuTTygen on Windows.
-
Click Create VM.
If you don't have the Yandex.Cloud command line interface yet, install and initialize it.
The folder specified in the CLI profile is used by default. You can specify a different folder using the --folder-name
or --folder-id
parameter.
-
View the description of the CLI command for creating a VM:
yc compute instance create --help
-
Get a list of images in the default folder:
yc compute image list +----------------------+-------------------+--------+-------------+--------+ | ID | NAME | FAMILY | PRODUCT IDS | STATUS | +----------------------+-------------------+--------+-------------+--------+ | ... | ... | | | ... | | fd8gkcd3l6ov84aon8s1 | your-test-image | | | READY | | ... | ... | | | ... | +----------------------+-------------------+--------+-------------+--------+
-
Select the identifier (
ID
) or name (NAME
) of the desired image. -
Create a VM in the default folder:
yc compute instance create \ --name test-vm-from-image \ --zone ru-central1-a \ --create-boot-disk name=disk1,size=5,image-id=fd8gkcd3l6ov84aon8s1 \ --public-ip \ --ssh-key ~/.ssh/id_rsa.pub
This command creates a VM with a 5 GB boot disk from the pre-loaded image named
test-vm-from-image
.- The name must be unique within the folder.
- The name may contain lowercase Latin letters, numbers, and hyphens.
- The first character must be a letter. The last character can't be a hyphen.
- The maximum length of the name is 63 characters.
Note
The VM name is used to generate the FQDN only once, when creating the VM. If the FQDN is important to you, choose an appropriate name for the VM at the creation stage.
The
yc-user
user will be created on the VM with the public key from the~/.ssh/id_rsa.pub
file. The VM gets a public IP address. To create a VM without a public IP, remove the--public-ip
flag.
Use the Create method for the Instance
resource.
If you don't have Terraform yet, install it and configure the Yandex.Cloud provider.
To create a VM from a custom image:
-
In the configuration file, describe the parameters of resources that you want to create:
Note
If you already have suitable resources, such as a cloud network and subnet, you don't need to describe them again. Use their names and IDs in the appropriate parameters.
yandex_compute_instance
: Description of the VM:name
: VM name.platform_id
: The platform.resources
: The number of vCPU cores and the amount of RAM available to the VM. The values must match the selected platform.boot_disk
: Boot disk settings. Specify the identifier of the uploaded image.network_interface
: Network settings. Specify the ID of the selected subnet. To automatically assign a public IP address to the VM, setnat = true
.metadata
: In the metadata, pass the public key for accessing the VM via SSH. For more information, see VM instance metadata.
yandex_vpc_network
: Description of the cloud network.yandex_vpc_subnet
: Description of the subnet that the VM will be connected to.
Example configuration file structure:
resource "yandex_compute_instance" "vm-1" { name = "vm-from-image" platform_id = "standard-v2" resources { cores = <number of vCPU cores> memory = <RAM in GB> } boot_disk { initialize_params { image_id = "<image ID>" } } network_interface { subnet_id = "${yandex_vpc_subnet.subnet-1.id}" nat = true } metadata = { ssh-keys = "<user name>:<SSH key contents>" } } resource "yandex_vpc_network" "network-1" { name = "network1" } resource "yandex_vpc_subnet" "subnet-1" { name = "subnet1" zone = "<availability zone>" network_id = "${yandex_vpc_network.network-1.id}" }
For more information about the resources you can create using Terraform, see the provider documentation.
-
Make sure that the configuration files are correct.
-
In the command line, go to the directory where you created the configuration file.
-
Run the check using the command:
terraform plan
If the configuration is described correctly, the terminal displays a list of created resources and their parameters. If there are errors in the configuration, Terraform points them out.
-
-
Deploy the cloud resources.
-
If the configuration doesn't contain any errors, run the command:
terraform apply
-
Confirm that you want to create the resources.
Afterwards, all the necessary resources are created in the specified folder. You can check resource availability and their settings in management console.
-