Creating a VM from a public image
To create a VM:
-
In the management console
, open the folder to create your VM in. -
At the top right, click Create resource.
-
In the list that opens, select Virtual machine instance.
-
Under Basic parameters:
-
Enter the VM name. The naming requirements are as follows:
- The name must be from 3 to 63 characters long.
- It may contain lowercase Latin letters, numbers, and hyphens.
- The first character must be a letter and the last character cannot be a hyphen.
-
Select an availability zone to place your VM in.
-
-
Under Image/boot disk selection, select a public image with the software you want to use.
-
(Optional) If you want to add more disks to the VM, select them under Disks and file storages by clicking the Disks tab.
-
(Optional) If you want to add more file stores to the VM, add them under Disks and file storages by clicking the File storages tab. Create the storages first.
-
Under Computing resources:
- Choose a platform.
- Specify the guaranteed share and the required number of vCPUs as well as the amount of RAM.
Note
Each public image has its own minimum requirements for a VM. A GitLab image from Yandex Cloud Marketplace, for instance, requires at least 4 virtual cores and 8 GB of RAM.
-
Under Network settings:
-
Enter a subnet ID or select a cloud network from the list. You can select the search scope: in the current folder or in all folders. If you do not have a network, click
Create network to create one:-
In the window that opens, enter the folder to host the new network, as well as the network name.
-
In the Advanced field, enable Create subnets (each network must have at least one subnet).
-
Click Create.
-
-
In the Public IP field, choose a method for assigning an IP address:
Auto
: Assign a random IP address from the Yandex Cloud IP pool.List
: Select a public IP address from the list of previously reserved static addresses. For more information, see Converting a dynamic public IP address to static.No address
: Do not assign a public IP address.
-
(Optional) Enable DDoS protection in the Advanced field, if required.
-
Select the appropriate security groups in the Security groups field (if there is no such field, the VM will be enabled for all incoming and outgoing traffic).
-
-
Under Access, specify the information required to access the instance:
-
(Optional) Select or create a service account. With a service account, you can flexibly configure access rights for your resources.
-
(Optional) Enable VM access via OS Login. The option is available for Linux images from Cloud Marketplace with
OS Login
in their names.Note
This feature is in the Preview stage. To get access, contact tech support
or your account manager. -
Enter the username in the Login field.
-
In the SSH key field, paste the contents of the public key file.
Note
On VMs with access via OS Login enabled, provide your custom SSH keys through metadata.
-
(Optional) Enable access to the serial console in the Advanced field, if required.
-
If you want to add several users with SSH keys to the VM at the same time, specify these users' data under Metadata.
In public Linux images provided by Yandex Cloud, the functionality of connecting over SSH using login and password is disabled by default.
-
-
Click Create VM.
VM creation takes several minutes. When the VM status changes to RUNNING
, proceed to configuring software. You can monitor VM statuses on the list of VMs in the folder.
If you do not 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 a description of the CLI create VM command:
yc compute instance create --help
-
Prepare the key pair (public and private keys) for SSH access to the VM.
-
Select one of the Yandex Cloud Marketplace public images.
You can also view image IDs in the management console
when creating a VM or on the image page in Cloud Marketplace, under Product IDs.To get a list of available images using the YC CLI, run this command:
yc compute image list --folder-id standard-images
Result:
+----------------------+-------------------------------------+--------------------------+----------------------+--------+ | ID | NAME | FAMILY | PRODUCT IDS | STATUS | +----------------------+-------------------------------------+--------------------------+----------------------+--------+ ... | fdvk34al8k5n******** | centos-7-1549279494 | centos-7 | dqni65lfhvv2******** | READY | | fdv7ooobjfl3******** | windows-2016-gvlk-1548913814 | windows-2016-gvlk | dqnnc72gj2is******** | READY | | fdv4f5kv5cvf******** | ubuntu-1604-lts-1549457823 | ubuntu-1604-lts | dqnnb6dc7640******** | READY | ... +----------------------+-------------------------------------+--------------------------+----------------------+--------+
-
Select a subnet:
yc vpc subnet list
Result:
+----------------------+---------------------------+----------------------+----------------+-------------------+-----------------+ | ID | NAME | NETWORK ID | ROUTE TABLE ID | ZONE | RANGE | +----------------------+---------------------------+----------------------+----------------+-------------------+-----------------+ | b0c6n43f9lgh******** | default-ru-central1-a | enpe3m3fa00u******** | | ru-central1-a | [10.130.0.0/24] | | e2l2da8a20b3******** | default-ru-central1-b | enpe3m3fa00u******** | | ru-central1-b | [10.129.0.0/24] | | e9bnlm18l70a******** | default-ru-central1-d | enpe3m3fa00u******** | | ru-central1-d | [10.128.0.0/24] | +----------------------+---------------------------+----------------------+----------------+-------------------+-----------------+
-
Create a VM in the default folder:
yc compute instance create \ --name first-instance \ --zone ru-central1-a \ --network-interface subnet-name=default-ru-central1-a,nat-ip-version=ipv4 \ --create-boot-disk image-folder-id=standard-images,image-family=centos-7 \ --ssh-key ~/.ssh/id_ed25519.pub
Where:
-
--name
: VM name. The naming requirements are as follows:- The name must be from 3 to 63 characters long.
- It may contain lowercase Latin letters, numbers, and hyphens.
- The first character must be a letter and the last character cannot be a hyphen.
Note
The VM name is used to generate an internal FQDN only once: when creating a VM. If the internal FQDN is important to you, choose an appropriate name for the VM at the creation stage.
-
--zone
: Availability zone that corresponds to the selected subnet. -
subnet-name
: Name of the selected subnet. -
nat-ip-version=ipv4
: Public IP address. To create a VM without a public IP, disable this parameter. -
image-family
: Image family, such ascentos-7
. This option allows you to install the latest version of the OS from the specified family. -
--ssh-key
: Public SSH key path. The VM will automatically create a user namedyc-user
for this key.When creating a VM from a Yandex Cloud Marketplace public image, make sure to provide an SSH key to the VM. By default, SSH access with a username and password is disabled for such images.
If you want to add several users with SSH keys to the VM at the same time, specify these users' data using the
--metadata-from-file
parameter. -
Once you are done, all the resources you need will be created in the specified folder. You can verify that the resources are there and their configuration is correct using the management console
yc compute instance list
When a VM is created, it is assigned an IP address and hostname (FQDN). This data can be used for SSH access.
You can make a public IP address static. For more information, see Making a VM's public IP address static.
If you don't have Terraform, install it and configure the Yandex Cloud provider.
-
In the configuration file, describe the parameters of the resources you want to create:
resource "yandex_compute_disk" "boot-disk" { name = "<disk_name>" type = "<disk_type>" zone = "<availability_zone>" size = "<disk_size>" image_id = "<image_ID>" } resource "yandex_compute_instance" "linux-vm" { name = "linux-vm" platform_id = "standard-v3" zone = "<availability_zone>" resources { cores = "<number_of_vCPU_cores>" memory = "<GB_of_RAM>" } boot_disk { disk_id = yandex_compute_disk.boot-disk.id } network_interface { subnet_id = yandex_vpc_subnet.subnet-1.id nat = true } metadata = { user-data = "#cloud-config\nusers:\n - name: <username>\n groups: sudo\n shell: /bin/bash\n sudo: 'ALL=(ALL) NOPASSWD:ALL'\n ssh-authorized-keys:\n - ${file("<path_to_public_SSH_key>")}" } } resource "yandex_vpc_network" "network-1" { name = "network1" } resource "yandex_vpc_subnet" "subnet-1" { name = "subnet1" zone = "<availability_zone>" v4_cidr_blocks = ["192.168.10.0/24"] network_id = yandex_vpc_network.network-1.id }
Where:
-
yandex_compute_disk
: Boot disk description:-
name
: Disk name. -
type
: Disk type. -
zone
: Availability zone to host the disk. -
size
: Disk size in GB. -
image_id
: ID of the image to create the VM from. You can get the image ID from the list of public images.You can also view image IDs in the management console
when creating a VM or on the image page in Cloud Marketplace, under Product IDs.
-
-
yandex_compute_instance
: Description of the VM:-
name
: VM name. -
platform_id
: Platform. -
zone
: Availability zone to host the VM. -
resources
: 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 disk ID. -
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, provide the username and public key for accessing the VM via SSH. For more information, see VM metadata.If you want to add several users with SSH keys to the VM at the same time, specify these users' data in a file and supply it under
metadata
.
-
-
yandex_vpc_network
: Description of the cloud network. -
yandex_vpc_subnet
: Description of the subnet your VM will connect to.
Note
If you already have suitable resources, such as a cloud network and subnet, you do not need to describe them again. Use their names and IDs in the appropriate parameters.
For more information about the resources that you can create using Terraform, see the provider documentation
. -
-
Make sure the configuration files are correct.
-
In the command line, go to the directory where you created the configuration file.
-
Run a check using this command:
terraform plan
If the configuration is described correctly, the terminal will display a list of created resources and their parameters. If the configuration contains any errors, Terraform will point them out.
-
-
Deploy cloud resources.
-
If the configuration does not contain any errors, run this command:
terraform apply
-
Confirm creating the resources: type
yes
in the terminal and press Enter.
Once you are done, all the resources you need will be created in the specified folder. You can verify that the resources are there and their configuration is correct using the management console
or the following CLI command:yc compute instance list
-
When a VM is created, it is assigned an IP address and hostname (FQDN). This data can be used for SSH access.
You can make a public IP address static. For more information, see Making a VM's public IP address static.