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 General information:
-
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 Boot disk image, 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.
If you do not have a network, click Create network to create one:- In the window that opens, enter the network name and specify the folder to host the network.
- (Optional) To automatically create subnets, select the Create subnets option.
- Click Create network.
Each network must have at least one subnet. If there is no subnet, create one by selecting Create subnet.
-
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. With this, you can enable DDoS protection using the option below.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.
-
Select the appropriate security groups.
-
Expand the Additional section and select a method for internal IP address assignment in the Internal IPv4 address field:
Auto
: Assign a random IP address from the pool of IP addresses available in the selected subnet.List
: Select an internal IP address from the list of previously reserved IP addresses. Click Reserve to reserve an internal IP address in the selected subnet if needed.- Enable the DDoS protection option, if needed. The option is available if you previously selected the automatic IP assignment method in the public address settings.
-
(Optional) Create records for the VM in the DNS zone:
- Expand the DNS settings for internal addresses section and click Add record.
- Specify the zone, FQDN, and TTL for the record. When setting the FQDN, you can select
Detect automatically
for the zone.
You can add multiple records to internal DNS zones. For more information, see Cloud DNS integration with Compute Cloud. - To create another record, click Add record.
If you want to attach an additional network interface to your VM, click Add network interface and repeat the settings from this step for the new interface. You can add up to eight network interfaces to a single VM.
-
-
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. -
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 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-a | [10.129.0.0/24] | | e9bnlm18l70a******** | default-ru-central1-d | enpe3m3fa00u******** | | ru-central1-a | [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. -
--network-interface
: VM's network interface settings:subnet-name
: Name of the selected subnet.nat-ip-version=ipv4
: Public IP address. To create a VM without a public IP address, disable this parameter.
If you want to add multiple network interfaces to the VM, specify the
--network-interface
parameter as many times as you need. You can add up to eight network interfaces to a single VM. -
--create-boot-disk
: VM boot disk settings: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
: Path to the file with the public SSH key. 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
: VM's network interface settings. Specify the ID of the selected subnet. To automatically assign a public IP address to the VM, setnat = true
.If you want to add multiple network interfaces to the VM, specify the
network_interface
section as many times as you need. You can add up to eight network interfaces to a single VM. -
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 provide 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.