Yandex Cloud
August 30, 2022

Создадим ВМ для сервисных нужд

До этого момента мы рассматривали варианты создания ВМ только для того чтобы понять как это делается. Сейчас же мы создадим ВМ, которая будет работать на постоянной основе и будет предназначена для сервисных нужд.

Здесь будет установлен определённый набор софта, предназначенный для дальнейшего использования. И именно на эту ВМ установим сервисы, которые будут помогать нам в дальнейшей работе.

Поехали!

Создадим скрипт для cloud-init: vi cloud-init.yaml

#cloud-config
  version: v1
  package_update: true
  package_upgrade: true
  write_files:
   - encoding: b64
     content: VGVzc3R0dC4uLg==
     owner: root:root
     path: /opt/test
     permissions: '0644'
  packages:
  - git
  - htop
  - mc
  - tree
  - make
  - iftop
  - iotop
  - dstat
  - nginx
  - gcc
  - gdb
  datasource:
   Ec2:
    strict_id: false
  users:
  - default
  - name: cameda
    gecos: Alexey Volkov
    groups: sudo
    shell: /bin/bash
    sudo: ['ALL=(ALL) NOPASSWD:ALL']
    lock_passwd: false
    passwd: $6$rounds=4096$WhW2cxlj/QX90$Jic1yPwlpiWV98oX8akplpOX4e7pgJlWHCfKAyPiMf7xP1AqI7iocN/gjWQNX9WuIUf14LVgxJluajfOInk.u.
    ssh_authorized_keys:
      - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDI98mJDBN9cnp6HOdBYTQILeAhUSDvDfoqA9iLmVPDyPLFRWs7tE4BjCAcFD6a3M50QIboCaohfa7h+PWksYibab7I3QHOR7y9pCW8FGonGRw2ACvt906qlaWHFj7jWOxuihFoiRROKqLCW5YE/Yc4XFIvW1gu3JQdvQ1wemWvujsI8EHE6PI1pEg7/41y6kn3IhNHIr8WRLe4dPyPGjwc4LpBCcaRSJiX4YjVXynSIHNk365UrL+nGv8ix7bW5FNCgGqSgfUTVCfMYLzQ/gYHPVQrcIvCeHjkwluH8Z3gXeN3OliejBjpLi+IWIzd9K6UADSUNU8oL+9941tDidp8APoe7RbB4h3bY6k8Bhy0yxohgQS2OWSYd1mjeEx8Ba5wzJKqfpUgmcPdrBJnBwLgLMFQyEfYG6vTPkYWAKEvkkJ6ZiA4tdoQvCb+B0xJV/ivHyLtoi3LFE59mbQFDUy8O51vX9JjBDLwzyTEeslWp7uOP66Ti5Q5ucNXbs5yXTU= cameda@cameda-osx"

Зарезервируем статический адрес.

yc vpc address create \
   --folder-id $FOLDER_ID \
   --name cam-service \
   --description "Service VM IP" \
   --external-ipv4 zone=ru-central1-a \
   --labels work=cam-service \
   --async
export IP=$(yc vpc address get cam-service --format=json | jq -r ".external_ipv4_address" | jq -r ".address")

Создадим ВМ на базе Ubuntu 20.04:

export SG=$(yc vpc sg get cam-default --format json | jq -r '.id')
export ZONE_ID=ru-central1-a
export FOLDER_ID=$(yc config get folder-id)
export SA=$(yc iam service-account get cam-instance-sa --format json | jq -r '.id')
export SUBNET_ID=$(yc vpc subnet get subnet-a --format json | jq -r '.id')
yc compute instance create \
--folder-id $FOLDER_ID \
--name cam-service \
--description "Service machine" \
--hostname cam-service \
--zone $ZONE_ID \
--platform standard-v3 \
--create-boot-disk image-family=ubuntu-2004-lts,size=65,type=network-ssd \
--image-folder-id standard-images \
--memory 16 \
--cores 4 \
--core-fraction 100 \
--network-settings type=standard \
--network-interface subnet-id=$SUBNET_ID,nat-ip-version=ipv4,nat-address=$IP,security-group-ids=$SG \
--metadata serial-port-enable=1 \
--metadata-from-file='user-data=cloud-init.yaml' \
--service-account-id $SA \
--async

Полезные ссылки.

SA у нас уже готов: https://teletype.in/@cameda/w93lPMPQWS4
Выберем зону доступности А: https://teletype.in/@cameda/S34zdiTcbUM
Сеть и подсети создали ранее: https://teletype.in/@cameda/ZbTkF70KWK9
SG будем использовать со стандартными открытыми портами: https://teletype.in/@cameda/WIoqKmpMNLM