Интерфейс командной строки для управления сервисами Timeweb Cloud и простой SDK 💫
См. также полный справочник по командам: Command Line Interface (CLI) Reference 📜
Содержание:
- Установка
- Обновление
- Начало работы
- Представление информации
- Управление облачными серверами
- Управление образами
- Управление базами данных
- Управление балансировщиками нагрузки
- Управление объектным хранилищем
- Управление кластерами Kubernetes
- Управление DNS
- Управление сетями (VPC)
- Управление Firewall
- Управление проектами
- Коrнфигурация
- Автодополнение команд
- Использование twc в качестве SDK
- Убедитесь, что на компьютер установены Python не ниже версии 3.7 и пакетный менеджер pip. См. инструкцию.
- Установите пакет twc-cli с помощью pip командой:
pip install twc-cli
В зависимости от установленных на компьютере версий Python вам может потребоваться использовать команду pip3 вместо pip.
- Убедитесь, что на компьютер установен Python не ниже версии 3.7 и пакетный менеджер pip. См. инструкцию.
- Установите пакетный менеджер pipx по инструкции.
- Установите пакет twc-cli:
pipx install twc-cli
- Убедитесь, что на компьютер установены Python не ниже версии 3.7 и пакетный менеджер pip. См. инструкцию.
- Скачайте пакет twc-cli в формате
.tar.gz
со страницы загрузок. - Перейдите в терминале в директорию где расположен файл .tar.gz и установите его с помощью pip:
pip install ./twc_cli-2.1.1.tar.gz
- Убедитесь, что на компьютер установен Python не ниже версии 3.7. См. инструкцию.
- Скачайте пакет в формате
.pyz
со страницы загрузок. - а) Приложение в формате zipapp не требует установки, вы можете сразу запустить программу следующим образом:
python twc-cli-2.1.1.pyz --help
- б) Вы можете поместить файл в директорию из PATH, например так (на UNIX-подобных системах):
install -m755 twc-cli-2.1.1.pyz /usr/local/bin/twc
Рекомендуем регулярно обновлять twc. Если вы установили twc с помощью pip, то команда для обновления будет выглядеть так:
pip install -U twc-cli
pipx:
pipx upgrade twc-cli
Обновление пакетов в форматах .tar.gz
и .pyz
нужно выполнять вручную по инструкции по установке.
Следующий однострочный скрипт позволит скачать актуальный zipapp-пакет с GitHub:
curl -sS -w %{redirect_url} https://github.com/timeweb-cloud/twc/releases/latest | cut -d / -f 8 | sed s/v// | xargs -I {} curl -sSLo twc_cli-{}.pyz https://github.com/timeweb-cloud/twc/releases/download/v{}/twc_cli-{}.pyz
Проверить наличие обновлений вручную вы можете на странице релизов в GitHub или в PyPI. Актуальный релиз помечен как Latest
.
Прежде всего нужно получить токен доступа в панели управления Timeweb Cloud. Перейдите в раздел Токены API и выпустите новый токен с любым сроком действия.
Откройте терминал и запустите команду:
twc config
Введите токен и нажмите Enter. twc сохранит на вашем компьютере конфигурационный файл с токеном. На этом настройка утилиты завершена, вы можете начать управлять сервисами.
twc содержит встроенную справку на английском языке. Через неё можно получить информацию обо всех доступных командах и опциях. Вызвать справку можно запустив twc опцией с --help
:
twc --help
twc имеет множество субкоманд с различной степенью вложенности. Опция --help
доступна на каждом уровне вложенности для всех субкоманд. Например так можно последовательно прочитать справку по командам для управления облачными серверами:
twc server --help
twc server create --help
В этом руководстве пользователя нет исчерпывающего описания всех доступных команд, субкоманд и их опций. Обращайтесь к встроенной справке twc или CLI Reference для информации. Далее описаны вероятные сценарии использования утилиты, способы конфигурации и некоторые полезные приёмы.
По умолчанию twc старается выводить данные на экран в человекочитаемом виде: таблицы, списки или отформатированный текст. Через опцию --output
(-o
) можно выбрать машиночитаемые форматы.
Формат | Описание |
---|---|
default |
Отформатированный текст или таблица (по умолчанию) |
raw |
Тело ответа в необработанном "сыром" виде |
json |
JSON с сортировкой ключей |
yaml |
YAML с сортировкой ключей |
Некоторые объекты, возвращаемые от API из-за большого числа ключей удобней просматривать в YAML. Например, чтобы увидеть полную информацию об облачном сервере выполните команду:
twc server get -o yaml 1235631
ID сервера можно получить запросив их список командой twc server list
.
response_id: 80903661-f587-43ca-abfc-d610ac3bc50c
server:
avatar_id: null
boot_mode: std
comment: ''
configurator_id: 11
cpu: 2
cpu_frequency: '3.3'
created_at: '2023-02-04T15:08:20.000Z'
disks:
- id: 8260143
is_mounted: true
is_system: true
size: 30720
status: done
system_name: vda
type: nvme
used: 0
- id: 8471677
is_mounted: true
is_system: false
size: 40960
status: done
system_name: vdb
type: nvme
used: 0
id: 1235631
is_ddos_guard: false
location: ru-1
name: dev-1
networks:
- bandwidth: 200
ips:
- ip: x.x.x.x
is_main: true
ptr: example.tld
type: ipv4
type: public
- ips:
- ip: 172.16.16.51
type: ipv4
nat_mode: dnat_and_snat
type: local
os:
id: 79
name: ubuntu
version: '22.04'
preset_id: null
ram: 2048
software: null
start_at: '2023-02-20T12:12:15.000Z'
status: 'on'
vnc_pass: soG7u7JA
Чтобы постоянно использовать определённый формат вывода задайте переменную окружения TWC_OUTPUT_FORMAT
или параметр output_format
в конфигурационном файле.
Некоторые команды имеют опцию --filter
(-f
) для фильтрации коллекций (списков) по их ключам.
Обратите внимание, что --filter
действует только на формат вывода по умолчанию и не влияет на вывод в других форматах (см. --output
). Для фильтрации JSON используйте утилиту jq, а для фильтрации YAML — yq.
Рассмотрим фильтрацию на примере списка облачных серверов. Следующая команда выведет только серверы, которые имеют статус on
, то есть включены:
twc server list -f status:on
Фильтровать можно одновременно по нескольким критериям перечислив пары ключ:значение
через запятую. Эта команда покажет все включённые серверы в локации ru-1
:
twc server list -f status:on,location:ru-1
Для фильтра по локациям также можно использовать алиас region
.
При фильтрации полагайтесь на имена полей, которые содержатся в JSON/YAML, а не на имена столбцов в таблице.
Поддерживается поиск по вложенным ключам. Так, например, имя (name
) и версия (version
) операционной системы являются дочерними от ключа os
. Для того, чтобы обратиться к дочернему ключу, нужно записать его через точку. Фильтр нечувствителен к регистру. Вот так можно посмотреть серверы, на которые установлена ОС Ubuntu 22.04:
twc server list -f os.name:ubuntu,os.version:22.04
Фильтр по вложенным ключам не будет работать с ключами, которые содержат списки. Для серверов это ключи networks
и disks
. Используйте JSON или YAML для сложных запросов.
В Timeweb Cloud серверы можно создавать на основе готовых пресетов или собрать свою конфигурацию через конфигуратор.
Для создания сервера как минимум нужно три обязательных параметра: имя, пресет или конфигуратор и образ.
Пресет (опция --preset-id
) определяет основные параметры сервера, такие как RAM, объём системного диска, тип диска, количество vCPU и др. Получить список всех доступных пресетов можно следующей командой:
twc server list-presets
Обратите внимание, что пресет также определяет локацию (регион) создания сервера. Вот так можно посмотреть все доступные пресеты для локации ru-1
(Россия, Санкт-Петербург) с типом диска NVMe SSD:
twc server list-presets -f location:ru-1,disk_type:nvme
Другой обязательный параметр это образ (опция --image
). Timeweb Cloud предлагает готовые к работе образы популярных операционных систем, получить их список можно командой:
twc server list-os-images
Можно использовать как числовой ID (os_id
) образа, так и имя операционной системы в формате <name>-<version>-<codename>
. codename
добавляется только для образов ОС Windows, образы GNU/Linux можно однозначно идентифицировать и по шаблону <name>-<version>
, например, debian-11
. Ещё одно возможное значение это UUID пользовательского образа диска (доступно с версии v1.1.0).
Пример создания сервера на основе пресета с готовым образом ОС:
twc server create --name dev-1 --image ubuntu-22.04 --preset-id 2573 --ssh-key ~/.ssh/id_rsa.pub
Для создания сервера с произвольной конфигурацией необходимо указать как минимум объём RAM, объём диска и число vCPU:
twc server create --name dev-1 --image ubuntu-22.04 --cpu 2 --ram 2G --disk 50G --ssh-key ~/.ssh/id_rsa.pub --region ru-1
Значения --ram
и --disk
поддерживают запись в M
, G
и T
.
В качестве аргумента опции --ssh-key
вы можете передать путь до публичного SSH-ключа на вашем компьютере, имя или ID уже добавленного в личный кабинет ключа. Ранее добавленный ключ не будет загружен повторно.
Добавлено в версии v2.1.0 Опционально можно задать опцию --region
для выбора локации.
Посмотрите встроенную справку по созданию серверов twc server create --help
, чтобы изучить все доступные опции.
Как и в панели усправления вам доступна установка программ из маркетплейса при создании или переустановке сервера.
Получите ID ПО командой list-software
:
$ twc server list-software
ID NAME OS
2 ISPmanager 6 Lite 39, 73, 58, 57, 47, 61
17 LAMP 39, 47, 58, 79, 73, 67, 61
18 GitLab 39, 47, 79
20 VestaCP 39, 47, 58
21 ISPmanager 6 Business 39
23 Portainer 47, 39, 58, 79, 61, 67
24 Ruby on Rails 47, 79
25 Docker 47, 61, 79
26 Redmine 47, 61, 79
...
91 NextCloud 79
В колонке OS
перечислены ID (os_id
) операционных систем для которых доступен софт. При создании сервера необходимо передать как ID софта, так и ID или имя соответствующей операционной системы.
Например, установка Nextcloud будет выглядеть так:
twc server create --name my-nextcloud --preset-id 2451 --image ubuntu-22.04 --software-id 91
ubuntu-22.04
соотвествует os_id
79
. Все соответствия можно найти по выводу команды twc server list-os-images
.
Предусмотрена возможность переустановки ОС сервера.
twc server reinstall --help
Переустановить ОС на сервере 1234567
:
twc server reinstall 1234567
Будет установлена та же ОС или пользовательский образ, что были установлены ранее. Также можно установить другую операционную систему или образ. Например, AlmaLinux 9.0:
twc server reinstall --image almalinux-9.0 1234567
Возможно также установить доп. ПО, см. twc server list-software
.
twc server reinstall --image ubuntu-22.04 --software-id 91 1234567
Здесь опцию --image
можно опустить, twc автоматически подставит ID операционной системы, которая в текущий момент установлена на сервере. Если ОС совместима с указанным ПО, то операция завершится успешно, иначе сервер не будет изменён.
Warning
Обратите внимание, что при переустановке сервера с выбранным ПО будет также переустановлена ОС!
Выполните следующую команду, чтобы увидеть список всех облачных серверов на вашем аккаунте:
twc server list
В некоторых случаях будет удобна опция --ids
, которая вместо таблицы покажет список ID серверов.
См. также Фильтрация списков, опция --filter.
Команда get
отобразит информацию о конкретном сервере:
twc server get 1234567
Будет напечатана стандартная таблица. Для полного вывода добавьте опцию -o yaml
.
Отдельно доступен просмотр информации по сетям и подключённым дискам.
Информация о дисках:
twc server get --disks 1234567
twc server disk list 1234567 # идентичный результат
Информация о сетях:
twc server get --networks 1234567
Обратите внимание, что команда выше покажет информацию как о публичной, так и о приватной сети. Следующая команда покажет только публичную сеть:
twc server ip list 1234567
Опция --status
позволит отобразить на экране лишь статус сервера без посторонней информации. Если статус не равен on
twc завершит работу с кодом выхода 1
. Это применимо в Shell-скриптах для автоматизации. Например, так можно выполнить команды при условии, что сервер включён:
if twc server get --status 1234567 >/dev/null 2>&1; then
# команды
fi
twc server resize --help
Вы можете изменить CPU, RAM и ширину сетевого канала в бо́льшую или меньшую сторону, диски только в бо́льшую. Возможен переход с конфигуратора на пресет и обратно.
Чтобы перейти на (другой) пресет выполните:
twc server resize --preset-id 1234 1234567
Где 1234567
это ID сервера.
Изменение отдельных параметров (CPU, RAM, диск) приводит к переходу на конфигуратор:
twc server resize --cpu 4 --ram 8G 1234567
Чтобы изменить пропускную способность сети:
twc server resize --bandwidth 300 1234567
Все операции требуют перезагрузки виртуальной машины для применения новых параметров, перезапуск будет выполнен автоматически.
Команда ip
предоставляет интерфейс для работы с публичными IP-адресами.
twc server ip --help
Следующая команда добавит к серверу дополнительный IPv4-адрес:
twc server ip add --ipv4 1234567
Опцию --ipv4
можно опустить, по умолчанию применяется IPv4.
Задать PTR mail.example.org
для IP-адреса 123.123.123.123
:
twc server ip set --ptr mail.example.org 123.123.123.123
В управлении дисками доступен просмотр подключённых дисков, добавление/удаление дисков, а также настройка автоматических резервных копий диска.
twc server disk --help
Добавить дополнительный диск к серверу 1234567
:
twc server disk add --size 50g 1234567
Команда backup
реализует интерфейс для работы с резервными копиями дисков. Резервная копия представляет собой образ блочного устройства.
twc server backup --help
Добавлено в версии v2.0.0. Для того, чтобы включить регулярное резервное копирование основного диска для сервера 1234567
выполните:
twc server backup schedule --enable --keep 3 $(twc server disk list -o default 1234567 | awk '$4~/True/{print $1}')
Диск будет бэкапиться ежедневно с хранением трёх последних копий.
Посмотреть текущие настройки автоматического копирования диска 7654321
:
twc server backup schedule --status 7654321
Просмотр списка бэкапов по ID диска:
twc server backup list 7654321
Следующая команда покажет список бэкапов по всем дискам для сервера 1234567
:
twc server disk list -o default 1234567 | awk 'NR>1{print $1}' | xargs -L 1 twc server backup list
Создать резервную копию диска 7654321
:
twc server backup create 7654321
Восстановить резервную копию диска 7654321
:
twc server backup restore 7654321 1234567
Здесь 1234567
это ID резервной копии.
Добавлено в версии v1.1.0.
twc image --help
Сервис образов позволяет делать копии блочных устройств и хранить их для создания новых виртуальных машин.
Учитывайте, что образы имеют привязку к локациям — для создания ВМ в другой локации сперва необходимо загрузить образ в новю локацию. Пока сервис доступен только в ru-1
(Санкт-Петербург).
twc image create --help
Сперва получите ID диска, образ которого нужно создать:
twc server disk list SERVER_ID
Следующая команда создаст образ диска 7654321
и напечатает на экран UUID образа.
twc image create 7654321
Можно одной командой сразу сделать образ системного диска сервера (1234567
):
twc image create $(twc server disk list -o default 1234567 | awk '$4~/True/{print $1}')
Можно отслеживать прогресс создания образа командой:
watch echo Progress: $(twc image get uuid_образа -o json | jq .image.progress)%
watch будет каждые 2 секунды проверять прогресс. Нажмите Ctrl
+C
для выхода.
Note
Предварительно необходимо специальным образом подготовить образ диска. См. инструкцию.
twc image upload --help
В twc пока реализована только загрузка образа по прямой HTTP-ссылке. Загрузите файл с расширением vmdk, vhd, vhdx, vdi, raw, img или qcow2 в любое хранилище, где можно получить прямую ссылку. Затем выполните команду вида:
twc image upload --name my-custom-image https://example.com/custom-image.qcow2
В ответ команда напечатает UUID образа.
Добавлено в версии v1.2.0.
twc db --help
twc db create --help
Просмотрите список доступных пресетов конфигурации баз данных. Пресеты различаются в зависимости от СУБД.
twc db list-presets
Вы можете отфильтровать пресеты по СУБД в поле type
. Следующая команда покажет пресеты для MySQL:
twc db list-presets -f type:mysql
Создайте базу данных:
twc db create --name db-dev --type mysql8 --login app --preset-id 327
После нажатия Enter twc предложит ввести пароль для базы данных. Вместо интерактивного ввода вы можете использовать опцию --password
и ввести пароль прямо в командной строке. Учтите, что печатать пароль в командной строке может быть небезопасно.
Команда создаст инстанс СУБД MySQL 8 db-dev
с юзером app
. Имя базы данных для подключения будет default_db
. Смотрите параметры подключения в выводе команды:
twc db get -o yaml 123456
Где 123456
это ID инстанса СУБД.
Вы можете сразу при создании БД указать параметры СУБД, например:
twc db create --name db-dev --type mysql8 --login app --preset-id 327 --param max_connections=200 --param max_allowed_packet=64M
twc db set --help
С помощью этой команды вы можете изменять свойства инстанса и параметры СУБД. Например для БД ID 123456
:
twc db set --param max_connections=200 123456
Изменить отображаемое имя инстанса СУБД (не изменяет имя базы данных):
twc db set --name db-dev-1 123456
twc balancer --help
TODO
Добавлено в версии v1.3.0
twc s3 --help
Команда storage
или s3
позволяет управлять бакетами в объектном хранилище.
Note twc не реализует методы S3 API, поэтому для работы с объектами внутри бакетов используйте готовые S3-клиенты такие как s3cmd или rclone, cм. Получение конфигурации для S3-клиентов ниже.
Вы можете создавать или удалять бакеты через любой S3-совместимый клиент или через twc. S3-клиенты всегда будут создавать приватный бакет с минимальным пресетом, пресет и тип бакета позже можно сменить через twc.
Чтобы создать бакет сперва узнайте ID пресета, список пресетов можно получить командой:
twc s3 list-presets
Пресет можно не указывать, тогда будет выбран минимальный с 10 Гб диска.
Создать новый бакет:
twc s3 mb --preset-id 1234 имя-бакета
По умолчанию бакет будет приватный, вы можете задать опцию --type public
, чтобы сделать его публичным.
Обратите внимание, что при создании бакетов через twc (и API Timeweb Cloud) к имени бакета будет добавлен уникальный для аккаунта префикс. Имя созданного бакета будет отображено сразу по выполнении команды. Префикс не добавляется при создании бакетов через S3-клиенты.
Просмотр списка бакетов:
twc s3 ls
В списке работает фильтрация.
Изменить тип бакета с приватного на публичный:
twc s3 set --type public имя-бакета
Изменить пресет бакета:
twc s3 set --preset-id 1234 имя-бакета
twc s3 subdomain --help
Успешно привязать домен можно если у него есть CNAME-запись s3.timeweb.com
. Например:
twc s3 subdomain add my-bucket.example.com имя-бакета
Запросить SSL-сертификат Let's Encrypt для домена (будет продлеваться автоматически):
twc s3 subdomain gencert my-bucket.example.com
twc s3 genconfig --help
Поддерживается генерация конфигов для утилит s3cmd и rclone.
Чтобы сгенерировать конфигурационный файл для s3cmd выполните:
twc s3 genconfig --client s3cmd
Конфигурация будет распечатана в терминал, но её также можно сразу записать в файл.
Если вы впервые настраивате s3cmd выполните (на Linux/Mac):
twc s3 genconfig --client s3cmd > ~/.s3cfg
Если вы уже пользовались s3cmd, то вероятно захотите сохранить конфигурацию в другой файл:
twc s3 genconfig --client s3cmd > ~/.s3cfg-twc
В таком случае для использования s3cmd добавляйте к командам опцию -c ~/.s3cfg-twc
.
Если ваша командная оболочка не поддерживает операторы >
, >>
для перенаправления вывода, то вы можете воспользоваться опцией --save
, чтобы сохранить конфигурацию в файл. Например (Windows cmd.exe):
twc s3 genconfig --client s3cmd --save %USERPROFILE%\.s3cfg
Note Осторожно:
--save
перезапишет файл, если он уже существует.
Для генерации конфига rclone выполните:
mkdir -p ~/.config/rclone
twc s3 genconfig --client rclone >> ~/.config/rclone/rclone.conf
Далее можно работать с объектами в бакете по схеме twc
:
rclone ls twc:/
Добавлено в версии v2.3.0
twc cluster --help
Перед созданием кластера вы можете просмотреть доступные для кластера параметры:
- Версии Kubernetes:
twc cluster list-k8s-versions
- Доступные сетевые драйверы:
twc cluster list-network-drivers
- Пресеты конфигурации нод:
twc cluster list-presets -f type:worker
Все эти параметры можно указать в команде создания кластера, например:
twc cluster create --name myproj-dev \
--k8s-version v1.22.17 \
--network-driver canal \
--ingress \
--add-worker-group name=gr-1,preset=443,count=2 \
--add-worker-group name=gr-2,preset=399,count=4
В самом простом случае необходимо указать только имя кластера:
twc cluster create --name myproj-dev
В таком случае будут применены параметры по умолчанию: cетевой драйвер canal
, Ingress, одна группа воркер-нод, одна воркер-нода с минимальным пресетом (1Гб RAM, 1 CPU).
Для управления кластером используйте утилиту kubectl или любой другой клиент для Kubernetes (например, Lens)
Чтобы получить KubeConfig выполните команду:
twc cluster kubeconfig 123456 --save config.yaml
где 123456
ID кластера. ID можно посмотреть в выоде команды twc cluster list
.
Теперь можно работать с кластером через kubectl:
kubectl --kubeconfig config.yaml get nodes
Увеличить число нод в группе 54321
на два:
twc cluster group scale-up 54321 2
Уменьшить число нод на два:
twc cluster group scale-down 54321 2
Добавить новую группу нод:
twc cluster group add --name group-2 --preset-id 443 --count 2
Значения для --preset-id
можно получить командой twc cluster list-presets -f type:worker
.
Добавлено в версии v2.4.0
twc domain --help
Добавить домен для управления можно следующей командой:
twc domain add example.com
Note Команда выше всего-лишь добавит домен в систему. Для того, чтобы редактировать DNS обязательно нужно изменить NS-серверы домена на NS Timeweb Cloud.
Добавить поддомен subdomain
:
twc domain subdomain add subdomain.example.com
Если ваш домен зарегистрирован на 2LD, то есть в зоне второго уровня (например, example.spb.ru
), то для создания поддомена используйте опцию --2ld
:
twc domain subdomain add subdomain.example.spb.ru --2ld
Поддомены четвёртого, пятого и т.д. уровней создаются аналогичным образом с указанием полного имени (FQDN). Для 2LD также всегда нужно добавлять опцию --2ld
.
Вывести список доменов:
twc domain list
Опция -a
(--all
) позволит отобразить полный список включающий все поддомены.
Вывести информацию по отдельному домену:
twc domain info example.com
Просмотреть список DNS-записей домена:
twc domain record list example.org
Опция -a
(--all
) позволит отобразить также записи со всех поддоменов. Заметьте, что у записей есть ID, он потребуется для редактирования существующих записей.
Добавить A-запись для домена example.com
:
twc domain record add example.com --type A --value 127.128.129.130
Добавить MX-запись с приоритетом 10:
twc domain record add example.com --type MX --value mx.example.com --prio 10
Добавить SPF-запись:
twc domain record add example.com --type TXT --value 'v=spf1 ip4:127.128.129.130 ~all'
и так далее. Команда для изменения существующей записи выглядит аналогично:
twc domain record update example.com 53162075 --type A --value 127.128.129.131
Здесь 53162075
это ID DNS-записи.
Добавить DMARC-запись:
twc domain record add _dmarc.example.com --type TXT --value 'v=DMARC1;p=quarantine;rua=mailto:postmaster@example.com'
Чтобы добавить/изменить записи на доменах третьего уровня (на 2LD) или их поддоменах указывайте опцию --2ld
.
Добавлено в версии v2.4.0
twc vpc --help
или
twc network --help
twc network create 10.0.10.0/24
Команда вернёт идентификатор сети. Этот ID нужно будет использовать при создании сервисов, чтобы добавить их в сеть.
Используйте опцию --region
чтобы явно задать локацию, в которой будет создана сеть. По умолчанию — ru-1
(Санкт-Петербург).
Показать список сетей:
twc network list
Показать список сервисов в сети:
twc network show network-0d48ed0787f84aa681c346a62342a0a1
Показать список сетевых портов:
twc network port list network-0d48ed0787f84aa681c346a62342a0a1
Смотрите другие команды в справке twc vpc --help
.
Добавлено в версии v2.4.0
twc firewall --help
Правила файрвола представляют собой записи с указанием CIDR (одного или нескольких IP-адресов), портов, протокола и направления трафика. Правила для удобства менеджмента объединяются в группы. Можно создать ограниченное количество групп и правил, см.Firewall.
Задача: запретить к серверу любой траафик кроме SSH и ICMP (пинг) для любых IP-адресов. Решение:
- Создать группу правил
- Добавить правило разрешающее трафик на 22-й порт TCP
- Добавить правило разрешаюющее трафик ICMP
- Слинковать (применить) группу правил на сервер
Созданную группу правил можно слинковать со многими другими серверами.
Продолжая задачу из предыдущего пункта получаем следующее практическое решение. Создаём группу правил с нужными правилами:
twc firewall rule add -G --ingress --cidr 0.0.0.0/0 22/TCP ICMP
В ответ команда напечатает ID группы правил и ID каждого созданного правила. Здесь будет два правила для 22/TCP и ICMP соответственно.
Здесь использована опция -G
(--make-group
), которая создаёт новую группу и добавляет в неё все перечисленные правила. С помощью опции -g
(--group
) можно добавить правла в уже существующую группу. См. все опции в справке. Команда для редактирования правила работает аналогично twc firewall rule update --help
.
Создать новую группу (без правил):
twc firewall group create --name 'basic_firewall'
Показать список групп правил:
twc firewall group list
Показать список правил в заданной группе:
twc firewall rule list a46c71de-36c2-46b9-9dff-a85761545c68
Здесь a46c71de-36c2-46b9-9dff-a85761545c68
это ID группы правил.
Чтобы применить правила файрвола к сервису (это может быть облачный сервер, балансировщик нагрузки или база данных) нужно слинковать сервис с нужной группой правил. Команда выглядит следующим образом:
twc firewall link server 12345678 fe497e70-e3a9-43af-9da5-c9367ed1f991
Первый аргумент (server
) задаёт тип сервиса, с которым будет произведено действие, за ним следует ID сервиса и ID группы правил файрвола. Чтобы удалить все правила вместо команды link
используйте аналогичную команду unlink
. Чтобы удалить одно конкретное правило используйте команду вида:
twc firewall rule remove fe497e70-e3a9-43af-9da5-c9367ed1f991
Показать все правила применённые на сервере:
twc firewall show server 1234567
Список правил можно фильтровать. Например, так можно посмотреть все правила для TCP:
twc firewall show server 1234567 -f proto:tcp
Добавлено в версии v1.1.0.
twc project --help
Проекты позовляют логически разбить сервисы на аккаунте на группы. По умолчанию все сервисы на аккаунте добавляются в стандартный проект.
Посомтреть список проектов:
twc project list
Проекты можно создавать, удалять и редактировать. При удалении проекта все сервисы в нём будут перемещены в проект по умолчанию.
Субкомманда resource
позволяет выпонлять операции над ресурсами (сервисами) проекта.
twc project resource --help
Можно вывести на экран список всех ресурсов проекта:
twc project resource list 12345
Здесь 12345
это ID преокта.
Изменено в версии v2.0.0. Переместить сервер 1234567
в проект 54321
:
twc project resource move --server 1234567 54321
Конфигурационный файл представляет из себя обычный текст в формате TOML в кодировке UTF-8. Его можно редактировать любым текстовым редактором.
twc сохраняет конфигурацию в домашней директории пользователя.
На операционных системах семейства Windows конфигурация сохраняется в скрытый файл .twcrc
(не имеет расширения). Найти путь к домашнему каталогу можно через переменную среды USERPROFILE
, обычно она имеет значение вида c:\Users\имя_пользователя
. Файл также может называться .twcrc.toml
(доступно с версии v2.0.0).
На операционных системах семейств Linux, Mac, BSD и других UNIX-подобных конфигурация сохраняется в HOME
в файл .twcrc
. Обычно /home/имя_пользователя/.twcrc
.
Добавлено в версии v1.3.0. Выполните следующую команду чтобы посмотреть путь до конфигурационного файла:
twc config file
Поддерживаемые параметры:
Параметр | Описание |
---|---|
token |
Токен доступа Timeweb Cloud. Параметр записывается автоматически при вызове twc config |
output_format |
Соответствует опции --output (-o ) |
project_id |
ID проекта, куда будет добавлен ресурс после создания |
region |
Локация по умолчанию для новых ресуерсов |
Параметры в конфигурационном файле имеют самый низкий приоритет, twc применит значения этих параметров если они не переданы в командной строке и не заданы как переменные окружения.
Добавлено в версии v1.3.0. Вы можете без ручного редактирования файла задать параметры конфигурации командой twc config set
.
По умолчанию будет задан параметр для профиля default
, например:
twc config set output_format=yaml
Укажите конкретный профиль опцией --profile
(-p
), если их несколько:
twc config set -p dev output_format=yaml
Добавлено в версии v2.0.0. Удалить параметр из конфигурации можно командой twc config unset параметр
.
Добавлено в версии v1.3.0. Если вам нужно обновить токен (например, после того как перевыпустили его) запустите twc config
, введите имя профиля и новый токен.
twc поддерживает ряд переменных окружения (они же переменные среды), которые могут быть использованы для конфигурации во время выполнения. Прочитайте страницу о переменных окружения в Википедии.
Переменная | Опция | Описание |
---|---|---|
TWC_TOKEN |
Токен доступа | |
TWC_PROFILE |
--profile , -p |
Имя профиля |
TWC_CONFIG_FILE |
--config , -c |
Путь до конфигурационного файла |
TWC_DEBUG |
--verbose , -v |
Включить подробный лог |
TWC_OUTPUT_FORMAT |
--output , -o |
Формат вывода (default , raw , json , yaml ) |
TWC_PROJECT |
--project-id |
ID проекта, куда будет добавлен ресурс после создания |
TWC_LOG |
Параметры логирования через запятую, допустимые параметры: log_response |
|
TWC_REGION |
--region |
Локация по умолчанию для новых ресуерсов |
Опции командной строки имеют высший приоритет над переменными окружения. Таким образом, если одновременно будут заданы переменная окружения и соответствующая ей опция, то будет использовано значение переданное как аргумент опции.
Ниже перечислены параметры конфигурации в порядке понижения приоритета:
--profile
,-p
,--config
,-c
TWC_TOKEN
TWC_PROFILE
,TWC_CONFIG_FILE
Наличие конфигурационного файла при использовании переменной TWC_TOKEN
необязательно.
Вы можете работать с несколькими аккаунтами Timeweb Cloud используя один или несколько конфигурационных файлов.
В командной строке используйте опции --config
(-с
) и --profile
(-p
) для указания пути к конфигурационному файлу и имени профиля соответственно.
Профиль представляет собой секцию конфигурационного файла, в которой содержится список параметров.
Так выглядит стандартный файл:
[default]
token = "здесь_ваш_токен"
В этом примере есть только один профиль — default
. Он используется по умолчанию.
Чтобы добавить дополнительный профиль вы можете отредактировать конфигурационный файл вручную или вызвать команду twc config
(доступно с версии v1.3.0). Интерактивный сеанс будет выглядеть так:
$ twc config
You already have TWC CLI configured, continue? [y/N]: y
Enter profile name [default]: dev
Enter API token for 'dev': eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCIsImtp...
Done! Configuration is saved in /home/user/.twcrc
Конфигурационный файл станет выглядеть так:
[default]
token = "токен_для_default"
[dev]
token = "токен_для_dev"
Теперь можно переключаться между профилями с помощью опции -p
.
Показать список серверов для профиля default
:
twc server list
Показать список серверов для профиля dev
:
twc -p dev server list
Вы можете использовать переменные окружения вместо опций -p
и -c
. Это может быть полезно при автоматизации через Shell-скрипты. См. раздел Переменные окружения ниже.
twc использует популярную библиотеку Python Requests для выполнения HTTP-запросов.
В requests уже реализована поддержка переменных окружения HTTP_PROXY
, HTTPS_PROXY
, ALL_PROXY
и NO_PROXY
. Подробнее об их применении можно прочитать в документации Requests.
Экспортируйте в оболочку переменные окружения. Замените адрес прокси на актуальный.
Linux/Mac:
export HTTP_PROXY=http://10.10.1.10:3128
export HTTPS_PROXY=http://10.10.1.10:1080
Windows:
set HTTP_PROXY=http://10.10.1.10:3128
set HTTPS_PROXY=http://10.10.1.10:1080
Для работы c SOCKS-прокси необходимо установить дополнительную библиотеку Python — PySocks. Ею поддерживаются протоколы HTTP, SOCKS4 и SOCKS5.
Linux/Mac:
export ALL_PROXY=socks5://localhost:1080
Windows:
set ALL_PROXY=socks5://localhost:1080
Если вы хотите отправлять через прокси также и DNS-запросы, то замените схему socks5
на socks5h
:
export ALL_PROXY=socks5h://localhost:1080
Для генерации скрипта автодополнения команд twc использует функционал библиотеки Typer.
Установить скрипт автодополнения:
twc --install-completion
twc автоматически распознает командную оболочку, поддерживаются: Bash, Zsh, Fish, PowerShell.
В twc реализован почти полнофункциональный клиент API Timeweb Cloud.
Методы, которые не будут здесь реализованы:
- работа с токенами доступа;
- управление ограничениями доступа к аккаунту;
- методы для выделенных серверов;
- работа с доменами за исключением редактирования DNS.
Установите пакет twc-cli в систему или в виртуальное окружение. Импортируйте в свой код класс TimewebCloud
из модуля twc.api.client
. В простейшем случае вам нужно создать объект этого класса передав в его конструктор строку с токеном. После этого можно обращаться к методам класса. Все методы возвращают объект requests.Response.
Пример кода для получения списка облачных серверов:
import os
import json
from twc import TimewebCloud
client = TimewebCloud(os.getenv("TIMEWEB_CLOUD_TOKEN"))
print(json.dumps(client.get_servers().json(), ensure_ascii=False, indent=2))
Есть собственные исключения в модуле twc.api.exceptions
. В конструктор класса TimewebCloud
можно передать функцию-декоратор, которая обернёт метод _request()
. Все исключения унаследованы от TimewebCloudException
.
Пример обработки ошибок через декоратор:
import os
import sys
import textwrap
from twc import TimewebCloud
from twc.api import TimewebCloudException, UnauthorizedError
def handle_errors(func):
def wrapper(self, *args, **kwargs):
try:
return func(self, *args, **kwargs)
except UnauthorizedError as err:
sys.exit(f"Error: {err}")
except TimewebCloudException as err:
sys.exit(
textwrap.dedent(
f"""
Status code: {err.status_code}
Error code: {err.error_code}
Message: {err.message}
Response ID: {err.response_id}
"""
).strip()
)
return wrapper
client = TimewebCloud(
os.getenv("TIMEWEB_CLOUD_TOKEN"),
request_decorator=handle_errors,
)
ssh_keys = client.get_ssh_keys().json()
См. расширенный пример в модуле twc.apiwrap
.
Методы задокументированы в коде в докстрингах, а также на https://timeweb.cloud/api-docs.