Vscale Community

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


Использование SSH-ключей —простой и надёжный способ  обеспечения безопасности соединения с сервером.  В отличие от пароля, взломать SSH-ключ практически невозможно. Сгенерировать SSH-ключ очень просто.

Linux/MacOS

Откройте терминал и выполните команду:

$ ssh-keygen -t rsa

На консоль будет выведен следующий диалог:

Enter file in which to save the key (/home/user/.ssh/id_rsa):

Нажмите на клавишу Enter.  Далее система предложит ввести кодовую фразу для дополнительной защиты SSH-подключения:

Enter passphrase (empty for no passphrase):

Этот шаг можно пропустить. При ответе на этот и следующий вопрос просто нажмите клавишу Enter.

После этого ключ будет создан, а на консоль будет выведено следующее сообщение:

Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
476:b2:a8:7f:08:b4:c0:af:81:25:7e:21:48:01:0e:98 user@localhost

The key's randomart image is:

+--[ RSA 2048]----+

|+.o.             |

|ooE              |

|oo               |

|o.+..            |

|.+.+..  S .      |

|....+  o +       |

|  .o ....        |

|  .  .. .        |

|    ....         |

+-----------------+

Далее выполните в терминале команду:

$ cat ~/.ssh/id_rsa.pub

На консоль будет выведен ключ. Скопируйте его и вставьте в соответствующее поле:


Нажмите на кнопку “Добавить.”

Добавив ключ, выполните в терминале команду:

$ ssh root@[IP-адрес сервера]

После этого соединение с сервером будет установлено. Вводить пароль при этом не потребуется.

Windows

В OC Windows подключение к удаленным серверам по SSH возможно только с помощью клиента Putty. Скачать его можно здесь (ссылка взята с официального сайта). Putty не требует установки  - чтобы начать с ним работать, достаточно просто распаковать скачанный архив.

По завершении распаковки запустите файл puttygen.exe.

Выберите тип ключа SSH-2 RSA и длину 2048 бит, а затем нажмите на кнопку Generate:

Во время генерации водите курсором в пустой области окна (это нужно для создания псевдослучайности):




Сохраните сгенерированную пару ключей на локальной машине (кнопки Save public key и Save private key).

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

 

tglnkSSH 

Как сгенерировать SSH-ключ для доступа на сервер

Использование SSH-ключей —простой и надёжный способ  обе...

4 4 Vscale

Раздел: Руководства

В этой статье мы расскажем о том, как научим вас пользоваться нашим модулем для системы управления конфигурациями Ansible и покажем, как с его помощью можно автоматизировать развёртывание виртуальной инфраструктуры на базе Vscale.

Загрузка и первичная настройка

Прежде чем начинать работу с модулем, нужно выполнить несколько подготовительных операций. Сначала сгенерируем в панели управления токен для доступа к API.
Затем добавим переменную окружения VS_API_KEY и укажем полученный токен в качестве её значения:

$ export VS_API_KEY=5c22a088f3b37c933e7480399f1e09258d6977bcd1eb2401de29e8001c9bedc36

Cоздадим директории для SSH-ключей и библиотек:

$ mkdir -p vscale-ansible/{credentials,group_vars}

После этого сгенерируем SSH-ключ для доступа к серверам. Если вам требуется добавить уже имеющийся SSH-ключ, просто укажите путь к нему в конфигурационном файле (см. ниже):

$ ssh-keygen -f ./vscale-ansible/credentials/ansible

Откроем конфигурационный файл vscale-ansible/ansible.cfg и пропишем следующие настройки:

sudo_user = root
remote_user = root
host_key_checking = False
private_key_file = ./credentials/ansible
[ssh_connection]
control_path = %(directory)s/%%h-%%r

Создадим также файл vscale-ansible/inventory, в котором будут указаны имена управляемых с помощью Ansible хостов:

[fe-servers]
fe-[01:02]

[local]
localhost

После этого можно загружать модуль:

$ git clone https://github.com/vscale/ansible-vscale-modules.git ./library

Для удобства дальнейшей работы определим несколько переменных в файле vscale-ansible/group_vars/all.yml:

---
vscale_token: "{{ lookup('env', 'VS_API_KEY')}}"
key: "{{ lookup('file', 'credentials/ansible.pub') }}"

Тестовый сценарий: создание сервера

Попробуем написать сценарий, с помощью которого в Vscale будет создан новый сервер с нужными нам характеристиками. Создадим в текстовом редакторе файл createserver.yml и добавим следующие строки:

---

- name: Add SSH key
  connection: local
  gather_facts: no
  hosts:
    fe-servers
  tasks:
    - name: Add SSH key to Vscale account
      run_once: true
      vscale_ssh:
        token: "{{ vscale_token }}"
        name: "Ansible"
        public_key: "{{ key }}"
        state: present

В этом фрагменте мы описали процедуру добавления SSH-ключа, воспользовавшись двумя определёнными ранее переменными (token иpublic_key).
Далее описываем параметры сервера, который требуется создать:

- name: Create scalet for inventory hosts
      vscale_scalets:
        token: "{{ vscale_token }}"
        name: "{{ inventory_hostname }}"
        plan: small
        location: spb0
        image: ubuntu_14.04_64_002_master
        key_name: "Ansible"
        collect_facts: "yes"
        power_state: "started"
        state: present
      register: server
- set_fact:
        ansible_ssh_host: "{{ server['scalet']['public_address']['address'] }}"

Далее установим на нашем сервере Nginx:

- name: Install NGINX and fill disk
  remote_user: root
  hosts:
    - fe-servers
  tasks:
    - name: Install NGINX
      apt:
        pkg: nginx
        update_cache: yes
        state: latest
    - name: Filling disk
      command: dd if=/dev/zero of=/large.file bs=100M count=150 creates=/large.file

В этом фрагменте мы не только описали стандартную процедуру установки Nginx, но и заполнили диск. Мы сделали это намеренно, чтобы вы смогли протестировать следующую часть нашего сценария:

В ней мы запускаем проверку свободного места на диске. Если свободный объём диска составляет меньше 3 Gb, конфигурация сервера будет автоматически обновлена до более производительной.

Вот и всё. Сохраним внесённые изменения и выполним команду:

$ ansible-playbook -i inventory createserver.yml

Описанный сценарий для тестирования вы можете найти в нашем репозитории.

Установка ПО на серверах

Мы только что рассмотрели пример сценария, который просто создаёт новый сервер. Возможности использования нашего модуля таким элементарными примером не исчерпываются. Мы подготовили для вас сценарии, с помощью которых можно не только создать сервер, но и сразу же установить на нём ПО — берите и пользуйтесь:

Если вы не ещё не установили модуль по приведенной выше инструкции, то можете просто клонировать репозиторий со сценариями, а затем подключить наш модуль с помощью команды git submodule:

$ git clone https://github.com/vscale/ansible-playbooks.git
$ cd ansible-playbooks
$ git submodule init
$ git submodule update

У этого способа есть определённые преимущества: если мы подключаем какой-то репозиторий в виде подмодуля, он всегда остаётся в рабочем, консистентном состоянии. Даже если мы обновим репозиторий в основной ветке и в нём что-то “сломается”, ваш подмодуль после обновления не будет изменён.

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

Заключение

Ansible — инструмент эффективный и очень удобный в работе.  Его огромная популярностью во многом объясняется низким порогом вхождения.  Если вы ознакомились с приведёнными в статье примеры сценариев, то вы увидели, насколько просты их структура и синтаксис. Наверняка вы сможете написать что-то своё  — документация API вам в помощь. И если у вас получится что-то интересное, будем рады, если вы поделитесь результатами с сообществом.

tglnkServer 

Управление серверами Vscale через Ansible

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

3 0 Vscale

Раздел: Руководства

Vscale API расположен по адресу https://api.vscale.io/v1.

С его помощью можно осуществлять те же действия, что и через панель управления: 

  • создавать и удалять серверы;
  • изменять конфигурацию сервера на более производительную ;
  • отключать, включать и перезагружать серверы;
  • получать информацию о платежах и списаниях со счёта;
  • работать с тикет-системой (создавать новые тикеты, отправлять комментарии, закрывать тикеты).

Взаимодействие осуществляется при помощи стандартных HTTP-запросов. Для обмена данными используется формат JSON.

В случае успешной обработки запроса API вернёт модель объекта в формате JSON. При возникновении ошибки вы получите её код и краткое описание (оно содержится в заголовке Vscale-Error-Message).

Документация с подробным описанием функций API опубликована здесь.

Генерация токена

Чтобы начать работу с API, нужно сначала пройти полную процедуру регистрации (включая СМС-подтверждение) и пополнить баланс. Для идентификации пользователей используются токены.  Чтобы получить токен, авторизуйтесь в панели управления и перейдите на страницу настроек.

В меню в левой части страницы выберите пункт “Управление токенами”.

Нажмите на кнопку “Создать токен”. Откроется следующее окно:


Введите краткое описание токена в соответствующее поле. Обратите внимание на флажок “Тип токена”.  Для работы с API  используются токены двух типов:

  • полнофункциональные — могут использоваться со всеми типами запросов для выполнения всех возможных операций;
  • токены read-only — могут использоваться только в GET-запросах; количество выполняемых с ними операций ограничено (например, просмотреть список серверов или доступных конфигураций с таким токеном можно, а вот создать новый сервер —  уже нет).

Задав нужные настройки, нажмите на кнопку “Сгенерировать токен”.  После этого новый токен будет добавлен в список. Его нужно будет передавать во всех запросах в заголовке X-Token.

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

Пример 1 создание нового сервера

Чтобы создать сервер через графический интерфейс, нужно выполнить следующие действия:  дать серверу имя, затем выбрать конфигурацию и образ ОС и, наконец, настроить способ доступа. При работе через API все необходимые характеристики сервера передаются в теле запроса. Обязательными для создания сервера параметрами являются следующие:

  • make_from — образ ОС, выбранный для установки на сервере:  debian_8.1_64_001_master, centos_7.1_64_001_master, ubuntu_14.04_64_002_master (о том, как получить список доступных образов, подробнее читайте здесь):
  • rplan — имя конфигурации сервера; из предыдущей статьи вы уже знаете, что мы предлагаем 5 доступных конфигураций. Вот их имена (в порядке возрастания): small, medium,large, huge, monster. Процедура получения списка конфигураций описана в документации к API.
  • do_start: true — служебный параметр, указывающий, что сервер нужно запускать сразу же после установки;
  • name —  имя сервера;
  • keys — идентификационный номер SSH-ключа, по которому будет осуществляться доступ на сервер (об управлении SSH-ключами подробнее см. здесь);
  • password — пароль (если требуется доступ по паролю)
  • locations — дата-центр, в котором будет размещён сервер (на сегодняшний день этот параметр может иметь только одно значение — spb).

Запрос на создание сервера выглядит так:

$ curl -i -X POST 'https://api.vscale.io/v1/scalets' -d '{"make_from":"ubuntu_14.04_64_002_master","rplan":"medium","do_start":true,"name":"My First Server","keys":[92],"location":"spb0"}' -H 'X-Token:5c22a088f3b37c933e7480399f1e09258d6977bcd1eb2401de29e8001c9bedc36'

В случае успешного создания сервера будет возвращён ответ вида: 

{  

  "private_address":{  

  },

  "name":"My Test Server",

  "hostname":"cs12600.vscale.io",

  "public_address":{  

 

  },

  "keys":[  

     {  

        "id":92,

        "name":"mykey"

     }

  ],

  "made_from":"ubuntu_14.04_64_002_master",

  "created":"27.08.2015 14:28:51",

  "ctid":12600,

  "status":"defined",

  "active":false,

  "locked":true,

  "deleted":null,

  "rplan":"medium",

  "location":"spb0"

}

Статус текущих операций

Ещё раз просмотрите пример ответа в предыдущем разделе и обратите внимание на поле status.  По логике вещей при успешном создании сервера должен быть возвращён статус created, но в приведённом примере соответствующий параметр имеет другое значение — defined.  Создавая серверы через графический интерфейс, изменение статусов можно наблюдать в режиме реального времени. В API такой возможности нет, и статусы объектов изменяются не моментально.

Просмотреть информацию о статусе всех текущих операций можно, выполнив GET-запрос на адрес https://api.vscale.io/v1/tasks:

$ curl -i https://api.vscale.io/v1/tasks

[{"location": "spb0", "d_insert": "2015-08-28 12:37:48", "id": "3a447f17-3577-4c16-b26c-27bd52faa7c1", "done": false, "scalet": 12835, "error": false, "d_start": "2015-08-28 09:37:48", "method": "scalet_create", "d_end": null}

Из приведённого примера ответа видно, что в текущий момент выполняется операция создания сервера (“method”: “scalet_create”), что она ещё не завершена (“done”: false) и что при её выполнении не обнаружено никаких ошибок (“error”: false).

Пример 2:  апгрейд конфигурации

C помощью API всегда можно перейти с текущей конфигурации на более производительную. Переход на менее производительную конфигурацию (даунгрейд) невозможен.

При создании сервера в предыдущем примере мы выбрали конфигурацию medium.  Чтобы изменить её large, нужно отправить следующий запрос:

$ curl 'https://api.vscale.io/v1/scalets/12600/upgrade'-X POST -d '{"rplan":"large"}' -H 'X-Token: 5c22a088f3b37c933e7480399f1e09258d6977bcd1eb2401de29e8001c9bedc36'

Как видно из приведённого примера, в теле запроса было передано имя новой конфигура ции в значении параметра rplan.

В случае успешного выполнения запроса будет возвращён ответ с информацией о сервере:

{"private_address": {}, "name": "New-Eyelid", "hostname": "cs12600.vscale.io", "public_address": {"address": "95.213.195.101", "netmask": "255.255.255.0", "gateway": "95.213.195.1"}, "keys": [{"id": 72, "name": "key"}], "made_from": "ubuntu_14.04_64_002_master", "created": "27.08.2015 14:28:51", "ctid": 12600, "status": "updated", "active": true, "locked": false, "deleted": null, "rplan": "medium", "location": "spb0"}

Пример 3: перезагрузка, включение и выключение сервера

Операции включения, выключения и перезагрузки серверов осуществляются с помощью PATCH-запросов:

# перезагрузка сервера

$ curl -i -X PATCH https://api.vscale.io/v1/scalets/12600/restart -d '{"id": "12600"}'  -H 'X-Token: 5c22a088f3b37c933e7480399f1e09258d6977bcd1eb2401de29e8001c9bedc36'

# выключение сервера

$ curl -i  -X PATCH https://api.vsсale.io/v1/scalets/12600/stop -d '{"id": "12600"}'  -H 'X-Token: 5c22a088f3b37c933e7480399f1e09258d6977bcd1eb2401de29e8001c9bedc36'

#включение сервера

$ curl -i  -X PATCH https://api.vsсale.io/v1/scalets/12600/start  -d '{"id": "12600"}'  -H 'X-Token: 5c22a088f3b37c933e7480399f1e09258d6977bcd1eb2401de29e8001c9bedc36'

 

Пример 4: удаление сервера

Удаление к серверу осуществляется с помощью DELETE-запроса:

$ curl -i -X DELETE https://api.vscale.io/v1/scalets/12600  -H 'X-Token: 5c22a088f3b37c933e7480399f1e09258d6977bcd1eb2401de29e8001c9bedc36'

В ответе будут возвращены параметры удалённого сервера.

 

Заключение

В этой статье мы привели лишь самые простые примеры работы с API. Обо всех функциях и возможностях API можно прочитать в официальной документации. Текущая версия API — первая. Если в ней, по вашему мнению, не хватает каких-либо функций, сообщите нам об этом. Ваши предложения и пожелания мы учтём в работе над второй версией.

tglnkAPI

Vscale API: краткое введение

Vscale API расположен по адресу https://api.vscale.io/v1...

6 4 Vscale

Раздел: Руководства

Показать больше