Управление серверами из терминала с помощью Tugboat

Многие пользователи управляют своими удаленными серверами с помощью панели управления хостинг-провайдера.

Tugboat – это отличное открытое приложение, которое позволяет вам управлять серверами через интерфейс командной строки.

Данный мануал поможет установить Tugboat на сервер Ubuntu 14.04.

1: Установка Tugboat

Подключитесь к серверу по SSH.

Tugboat – это Ruby-приложение, а это значит, что его можно легко установить с помощью RubyGems.

Для начала установите на сервер Ruby:

sudo apt-get update
sudo apt-get install ruby ruby-dev build-essential

Затем можно установить Tugboat и system_timer (чтобы избежать отправки повторяющихся уведомлений).

sudo gem install tugboat
sudo gem install system_timer

2: Генерирование API-ключей

Чтобы Tugboat мог управлять вашими серверами, вы должны получить API-ключ своего хостинг-провайдера. Как правило, это очень просто делается с помощью панели управления. Вам нужно войти в свой аккаунт и генерировать ключ, если его еще нет.

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

Также вам нужен ID клиента.

3: Настройка Tugboat

Tugboat предоставляет команду первичной настройки:

tugboat authorize

Команда задаст вам ряд вопросов. Введите необходимые данные, чтобы связать Tugboat со своим аккаунтом.

В первые два запроса нужно скопировать и вставить значения API:

Enter your client key: Client_ID_from_API_page
Enter your API key: API_Key_from_API_page

Следующие 3 вопроса касаются данных авторизации SSH. Они позволяют приложению подключиться к вашим удаленным машинам.

Нажмите Enter, чтобы принять путь SSH по умолчанию. В зависимости от того, как вы обычно подключаетесь к серверам, вы можете изменить значение SSH user (например, на root). Нажмите Enter, чтобы принять стандартный порт, если вы не меняли его.

Enter your SSH key path (optional, defaults to ~/.ssh/id_rsa):
Enter your SSH user (optional, defaults to demo): root
Enter your SSH port number (optional, defaults to 22):

Затем приложение предложит вам заполнить стандартные параметры для создания нового сервера. Нажмите Enter, чтобы принять значения по умолчанию.

Enter your default region ID (optional, defaults to 1 (New York)):
Enter your default image ID (optional, defaults to 284203 (Ubuntu 12.04 x64)):
Enter your default size ID (optional, defaults to 66 (512MB)):
Enter your default ssh key ID (optional, defaults to none):

Приложение должно подтвердить, что ключи были приняты:

Authentication was successful.

Все выбранные вами параметры хранятся в скрытом файле .tugboat в домашнем каталоге:

nano ~/.tugboat
---
authentication:
client_key: xxxxxxxxxxxxxxxxxxxxxx
api_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
defaults:
ssh_key: ""
size: "66"
image: "284203"
region: "1"
ssh:
ssh_port: "22"
ssh_user: root
ssh_key_path: /home/demo/.ssh/id_rsa

Если в дальнейшем вы сгенерируете новый API ключ, вам нужно будет указать его вместо старого ключа в этом файле.

Также вам нужно будет проверить, может ли приложение подключиться к серверам:

tugboat verify

В разделе SSH можно настроить параметры сессии.

4: Подключение к серверу

Каждая команда tugboat начинается со tugboat, после чего указывается действие.

Запросите список серверов:

tugboat droplets
irssi (ip: xxx.xxx.xxx.xx, status: active, region: 1, id: 3150xx)
tug (ip: xxx.xxx.xxx.xxx, status: active, region: 4, id: 3372xx)
test (ip: xxx.xxx.xxx.xx, status: active, region: 4, id: 3373xx)
archtestmail (ip: xxx.xxx.xxx.xx, status: active, region: 4, id: 4328xx)
TugWrite (ip: xxx.xxx.xxx.xxx, status: active, region: 4, id: 4496xx)

Вывод похож на ваш экран веб-интерфейса. Здесь перечислены все доступные серверы.

Попробуйте подключиться к одному из серверов по SSH:

tugboat ssh TugWrite
Droplet fuzzy name provided. Finding droplet ID...done, 3150xx (ourDroplet)
Executing SSH (ourDroplet)...
Warning: Identity file /home/demo/.ssh/id_rsa not accessible: No such file or directory.
root@xxx.xxx.xxx.xx's password:

Приложение запросит пароль к root@TugWrite. Если на этом сервере настроена аутентификация по SSH-ключам, вам не нужно будет даже вводить пароль.

Выйдите с сервера, чтобы вернуться в Tugboat.

Функция, которая присутствует везде в Tugboat – это «Fuzzy name matching». Это означает, что Tugboat распознает неоднозначные команды.

Например, вы могли бы достичь такого же результата, набрав:

tugboat drop

Tugboat расширит drop до droplets и выполнит необходимое действие.

5: Управление серверами

Tugboat позволяет выполнить все те же действия, что и панель управления.

Извлечение информации о сервере

Чтобы получить больше информации о конкретном сервере, введите:

tugboat info server_name
Name:             irssi
ID:               3150xx
Status:           active
IP:               xxx.xxx.xxx.xx
Region ID:        1
Image ID:         479972
Size ID:          66
Backups Active:   false

Эта команда выведет сведения о сервере: ID образа, поддержку бэкапа и многое другое.

Управление состоянием сервера

С помощью Tugboat вы можете управлять состоянием ваших серверов.

Чтобы запустить сервер, введите:

tugboat start server_name

Чтобы перезапустить сервер, введите:

tugboat restart server_name

Чтобы выключить сервер:

tugboat halt server_name

Создание и удаление серверов

Чтобы удалить сервер, введите:

tugboat destroy server_name

Поскольку это имеет необратимые последствия, вас попросят подтвердить действие до удаления сервера:

Droplet fuzzy name provided. Finding droplet ID...done, 4530xx (blahblah)
Warning! Potentially destructive action. Please confirm [y/n]:

Чтобы подтвердить действие, введите y и Enter.

Чтобы создать новый сервер, используйте такой синтаксис:

tugboat create server_name

Без дополнительных аргументов эта команда создаст сервер в соответствии с критериями в разделе default файла ~/.tugboat .

Чтобы изменить это поведение, нужно передать команде дополнительные флаги. Используйте команду «help» вместе с «create» в качестве дополнительного аргумента, чтобы получить сведения об использовании create:

tugboat help create
Usage:
tugboat create NAME
Options:
-k, [--keys=KEYS]  # A comma separated list of SSH key ids to add to the droplet
-s, [--size=N]     # The size_id of the droplet
-r, [--region=N]   # The region_id of the droplet
-i, [--image=N]    # The image_id of the droplet
Create a droplet.

Как видите, при создании сервера вы можете внедрить любой загруженный на сайт SSH-ключ и указать размер, регион и базовый образ.

Ниже вы узнаете, как найти соответствующие значения для этих параметров.

Настройка создания серверов

Вы можете сами выбрать настройки, которые хотите использовать для создания серверов, запросив доступные опции.

Чтобы просмотреть список доступных размеров серверов и их ID, введите:

tugboat sizes
Sizes:
512MB (id: 66)
1GB (id: 63)
2GB (id: 62)
4GB (id: 64)
8GB (id: 65)
16GB (id: 61)
32GB (id: 60)
48GB (id: 70)
64GB (id: 69)
96GB (id: 68)

Как видите, каждый размер связан с идентификатором, который используется для ссылки на это значение.

То есть если вы, например, захотите создать сервер в 2 ГБ, вы можете выполнить следующую команду:

tugboat create -s 62 server_name

Аналогичная команда доступна для просмотра доступных регионов:

tugboat regions
Regions:
New York 1 (id: 1)
Amsterdam 1 (id: 2)
San Francisco 1 (id: 3)
New York 2 (id: 4)

Вы также можете легко встроить загруженные SSH-ключи. Чтобы найти ключ, введите:

tugboat keys
SSH Keys:
Work key (id: 12345)
Home key (id: 56789)

Команда для просмотра доступных образов выглядит немного сложнее — потому, что по умолчанию она показывает сохраненные снапшоты:

tugboat images
My Images:
Ubuntu Basic setup (id: 4799xx, distro: Ubuntu)
Arch default (id: 4811xx, distro: Arch Linux)
LAMP Ubuntu (id: 4908xx, distro: Ubuntu)
LAMP Success (id: 5838xx, distro: CentOS)

Любой из этих образов можно использовать как базовый, указав его ID.

Чтобы получить более полный список, включающий все предварительно настроенные дистрибутивы и приложения, добавьте флаг –g (global).

tugboat images -g
My Images:
. . .
Global Images:
CentOS 5.8 x64 (id: 1601, distro: CentOS)
CentOS 5.8 x32 (id: 1602, distro: CentOS)
Debian 6.0 x64 (id: 12573, distro: Debian)
Debian 6.0 x32 (id: 12575, distro: Debian)
. . .

Вы увидите длинный список доступных образов с ID.

Эти данные вы можете использовать в разделе default файла ~/.tugboat.

Другое управление

Чтобы сделать снапшот с помощью команды snapshot, введите:

tugboat snapshot name_of_snapshot server_to_snapshot

Чтобы изменить размер сервера, вам нужно указать критерии размера в команде resize. Ваш сервер должен быть включен, чтобы операция прошла успешно:

tugboat resize droplet_name -s size_ID

Чтобы сбросить пароль root, просто выполните команду password-reset:

tugboat password-reset server_name

Вы получите электронное письмо с новым паролем, который был установлен на сервере.

Система справки

Tugboat предоставляет очень хорошую справочную систему. Общую справку вы можете получить с помощью команды:

tugboat help

Команда выведет список доступных команд.

Чтобы получить более подробную справку по какой-либо конкретной команде, укажите эту команду после help. Например:

tugboat help authorize

5: Другие настройки

SSH-ключи

Как и большинство приложений, использующих SSH, с правильно настроенными SSH-ключами Tugboat работает лучше.

Если вы уже создали пару ключей и загрузили открытый ключ в свою учетную запись, чтобы использовать для создания серверов, вы можете скопировать секретный ключ на сервер Tugboat.

Для этого войдите в компьютер, который используется для доступа ко всем серверам. Перейдите в каталог конфигурации ssh:

cd ~/.ssh

С помощью scp скопируйте закрытый ключ на сервер Tugboat:

scp id_rsa tugboat_username@tugboat_server_ip:/home/tugboat_username/.ssh/

Войдите на сервер Tugboat. Измените владельца файла id_rsa – передайте файл пользователю Tugboat.

sudo chown tugboat_username:tugboat_username ~/.ssh/id_rsa

Теперь вы можете подключиться к серверам, которые были созданы с помощью этого ключа, без пароля:

tugboat ssh example_server

Не забудьте изменить файл конфигурации, чтобы использовать этот ключ для создания нового сервера.

Использование Tugboat и screen

Мультиплексор терминала screen невероятно полезно использовать вместе с Tugboat.

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

Это особенно удобно при работе с несколькими сеансами SSH, что и позволяет Tugboat.

Чтобы установить screen в Ubuntu, введите:

sudo apt-get update
sudo apt-get install screen

Запустите приложение:

screen

Теперь вы работаете в сеансе терминала screen.

Чтобы подключиться к серверу, введите:

tugboat ssh server1

Создайте новое окно:

Ctrl-a c

Зажмите Ctrl и нажмите а, а затем с.

Подключитесь к новому серверу, введя:

tugboat ssh server2

Чтобы переключаться между серверами, нажмите:

Ctrl-a n

Чтобы удалить окно, введите:

Ctrl-a k

Читайте также:

Заключение

Tugboat – отличный инструмент для управления серверами без необходимости покидать терминал. Он обеспечивает унифицированный интерфейс для отслеживания ваших серверов и управления сеансами.

Правильная настройка Tugboat устраняет трудности, связанные с необходимостью непрерывного обслуживания файла hosts или перехода между терминальными окнами и окнами браузера.

Если вы обнаружили какие-либо проблемы с программным обеспечением или хотите внести свой вклад в проект, посетите страницу Tugboat на Github.

Tags: ,