Yandex.Cloud
  • Services
  • Why Yandex.Cloud
  • Pricing
  • Documentation
  • Contact us
Get started
Yandex Compute Cloud
  • Getting started
    • Overview
    • Creating a Linux VM
    • Creating a Windows VM
    • Creating instance groups
  • Step-by-step instructions
    • All instructions
    • Creating VMs
      • Creating a Linux VM
      • Creating a Windows VM
      • Creating a VM from a set of disks
      • Create a VM with disks restored from snapshots
      • Creating a VM from a custom image
      • Creating a preemptible VM
      • Creating a VM with a GPU
    • DSVM
      • Overview
      • Creating a VM from a public DSVM image
    • Placement groups
      • Creating a placement group
      • Deleting a placement group
      • Creating a VM instance in a placement group
      • Adding a VM to a placement group
      • Removing a VM instance from a placement group
    • Images with pre-installed software
      • Creating a VM from a public image
      • Configuring software
      • Working with a VM based on a public image
      • Getting a list of public images
    • Getting information about a VM
      • Getting information about a VM
      • Viewing serial port output
    • Managing VMs
      • Stopping and starting a VM
      • Attaching a disk to a VM
      • Detaching a disk from a VM
      • Moving a VM to a different availability zone
      • Making a VM's public IP address static
      • Updating a VM
      • Changing VM computing resources
      • Deleting a VM
    • Working on VMs
      • Connecting to a VM via SSH
      • Connecting to a VM via RDP
      • Working with Yandex.Cloud from inside a VM
      • Installing NVIDIA drivers
    • Creating new disks
      • Creating an empty disk
    • Disk management
      • Creating a disk snapshot
      • Updating a disk
      • Deleting a disk
      • Deleting a disk snapshot
    • Creating new images
      • Uploading your image
    • Managing images
      • Deleting a disk image
    • Managing the serial console
      • Getting started
      • Connecting to a serial console via SSH
      • Connecting to a serial console via CLI
      • Start your terminal in the Windows SAC
      • Disabling access to the serial console
    • Creating instance groups
      • Creating a fixed-size instance group
      • Creating a fixed-size instance group with a load balancer
      • Creating an automatically scaled instance group
      • Creating an instance group from Container Optimized Image
    • Getting information about instance groups
      • Getting a list of groups
      • Getting information about a group
      • Getting a list of instances in a group
    • Managing instance groups
      • Update a group
      • Configure application health check on the VM
      • Update a group
        • Incremental update
        • Updating without downtime
      • Stop a group
      • Start a group
      • Delete a group
    • Dedicated hosts
      • Creating a VM in a group of dedicated hosts
      • Creating a VM on a dedicated host
  • Yandex Container Optimized Solutions
  • Scenarios
    • Configuring NTP time synchronization
    • Running instance groups with auto scaling
  • Concepts
    • Relationship between resources
    • Virtual machines
      • Overview
      • Platforms
      • vCPU performance levels
      • Graphics accelerators (GPUs)
      • Preemptible VMs
      • Network on a VM
      • Live migration
      • Placement groups
      • Statuses
      • Metadata
    • Disks
      • Overview
      • Disk snapshots
    • Images
    • Instance groups
      • Overview
      • Access
      • Instance template
      • Variables in an instance template
      • Policies
        • Overview
        • Allocation policy
        • Deployment policy
        • Scaling policy
      • Scaling types
      • Auto-healing
      • Update
        • Overview
        • Allocating instances across zones
        • Deployment algorithm
        • Rules for updating instance groups
      • Statuses
    • Dedicated host
    • Backups
    • Quotas and limits
  • Access management
  • Pricing policy
    • Current pricing policy
    • Archive
      • Before January 1, 2019
      • From January 1 to March 1, 2019
      • From March 1 to May 1, 2019
  • Compute API reference
    • Authentication in the API
    • gRPC
      • Overview
      • DiskPlacementGroupService
      • DiskService
      • DiskTypeService
      • HostGroupService
      • HostTypeService
      • ImageService
      • InstanceService
      • PlacementGroupService
      • SnapshotService
      • ZoneService
      • InstanceGroupService
      • OperationService
    • REST
      • Overview
      • Disk
        • Overview
        • create
        • delete
        • get
        • list
        • listOperations
        • update
      • DiskPlacementGroup
        • Overview
        • create
        • delete
        • get
        • list
        • listDisks
        • listOperations
        • update
      • DiskType
        • Overview
        • get
        • list
      • HostGroup
        • Overview
        • create
        • delete
        • get
        • list
        • listHosts
        • listInstances
        • listOperations
        • update
      • HostType
        • Overview
        • get
        • list
      • Image
        • Overview
        • create
        • delete
        • get
        • getLatestByFamily
        • list
        • listOperations
        • update
      • Instance
        • Overview
        • addOneToOneNat
        • attachDisk
        • create
        • delete
        • detachDisk
        • get
        • getSerialPortOutput
        • list
        • listOperations
        • removeOneToOneNat
        • restart
        • start
        • stop
        • update
        • updateMetadata
        • updateNetworkInterface
      • PlacementGroup
        • Overview
        • create
        • delete
        • get
        • list
        • listInstances
        • listOperations
        • update
      • Snapshot
        • Overview
        • create
        • delete
        • get
        • list
        • listOperations
        • update
      • Zone
        • Overview
        • get
        • list
      • Operation
        • Overview
        • get
      • InstanceGroup
        • Overview
        • createFromYaml
        • update
        • list
        • get
        • delete
        • start
        • stop
        • create
        • listAccessBindings
        • setAccessBindings
        • updateFromYaml
        • listLogRecords
        • listInstances
        • updateAccessBindings
        • listOperations
  • Questions and answers
    • General questions
    • Virtual machines
    • Disks and snapshots
    • Licensing
    • All questions on the same page
  1. Step-by-step instructions
  2. Creating VMs
  3. Creating a VM from a custom image

Creating a VM from a custom image

  • Before you start
  • Create a VM from the prepared 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

Management console
CLI
API
Terraform
  1. Open the folder where the VM will be created.

  2. Click Create resource.

  3. Select Virtual machine.

  4. 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.

  5. Select the availability zone to host the VM in.

  6. In the Disks section, click Add disk.

    1. In the Name field, enter the disk name.
    2. Set the required disk size.
    3. In the Disk designation section, choose Boot.
    4. Select the disk type: HDD or SSD.
    5. In the Content section, choose Image. A list of images that you uploaded opens.
    6. Select the necessary image.
    7. Click Add.
  7. Under Computing resources:

    • Choose a platform.
    • Specify the necessary number of vCPUs and amount of RAM.
  8. In the Network settings section, click Add network.

  9. In the window that opens, select the subnet to connect the VM to while being created.

  10. 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.
  11. 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 as ssh-keygen utilities on Linux and macOS or PuTTygen on Windows.
  12. 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.

  1. View the description of the CLI command for creating a VM:

    yc compute instance create --help
    
  2. Get a list of images in the default folder:

    yc compute image list
    +----------------------+-------------------+--------+-------------+--------+
    |          ID          |       NAME        | FAMILY | PRODUCT IDS | STATUS |
    +----------------------+-------------------+--------+-------------+--------+
    |         ...          |         ...       |        |             |  ...   |
    | fd8gkcd3l6ov84aon8s1 |  your-test-image  |        |             | READY  |
    |         ...          |         ...       |        |             |  ...   |
    +----------------------+-------------------+--------+-------------+--------+
    
  3. Select the identifier (ID) or name (NAME) of the desired image.

  4. 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:

  1. 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, set nat = 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.

  2. Make sure that the configuration files are correct.

    1. In the command line, go to the directory where you created the configuration file.

    2. 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.

  3. Deploy the cloud resources.

    1. If the configuration doesn't contain any errors, run the command:

      terraform apply
      
    2. 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.

In this article:
  • Before you start
  • Create a VM from the prepared image
Language
Careers
Privacy policy
Terms of use
© 2021 Yandex.Cloud LLC