Локальные клиенты для управления виртуальными машинами

Terraform

Что такое Terraform?

Terraform - это инструмент для безопасного и эффективного построения, изменения и создания версий инфраструктуры. Terraform может управлять многими популярными платформами (OpenStack в том числе), а также собственными решениями.

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

Инфраструктура, которой может управлять Terraform, включает в себя компоненты низкого уровня, такие как виртуальные машины, хранилище и сеть, а также компоненты высокого уровня, такие как записи DNS, функции SaaS и т.д.

OpenStack

Для работы со сценариями и простых запросов вы можете использовать клиент командной строки, такой как openstack-client . Этот клиент позволяет использовать API Identity, Compute, Block Storage и Object Storage через интерфейс командной строки. Кроме того, каждый проект OpenStack имеет связанный клиентский проект, который включает привязки Python API и интерфейс командной строки (CLI).

Для получения информации о клиентах командной строки см. эту статью.

Установка OpenStack клиента под Linux

Используйте команду pip для установки клиентов OpenStack в системе Mac OS X или Linux. Это просто, и это гарантирует, что вы получите последнюю версию клиента из хранилища Python. Кроме того, pip позволяет обновить или удалить пакет.

Вы должны установить клиент для каждого проекта отдельно, но python-openstackclient охватывает несколько проектов.

Установите или обновите клиентский пакет:

 $ sudo pip install [ --upgrade ] python-PROJECTclient

Где PROJECT - название проекта.

Например, установите клиент openstack :

 $ sudo pip install python-openstackclient

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

 $ sudo pip install --upgrade python-openstackclient

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

 $ sudo pip uninstall python-openstackclient

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

Для получения полной информации о клиентах OpenStack, см. Руководство пользователя OpenStack, Руководство администратора OpenStack и Справочник по интерфейсу командной строки OpenStack .

Установка OpenStack CLI под Windows, вариант 1

Требования

  • Установка должна выполняться под учётной записью администратора.
  • До запуска OpenStack CLI вам нужно установить Python 2.7. Загрузите и установите последнюю версию с официального сайта.
  • Также вам надо установить Git Bash - загрузите и установите его с официального сайта.
  • Также вам надо установить Python-систему управления пакетами , pip. Чтобы его установить, запустите Git Bash. Введите команду easy_install (из пакета setuptools):
    C:\>easy_install pip
  • (в качестве альтернативы можно установить вот этот бинарник).
  • Кроме того, лучше устанавливать CLI в виртуальной среде, поэтому установите virtualenv с помощью pip install virtualenv в Git Bash.

Данная инструкция протестирована на Windows 10 под учётной записью администратора.

Использование виртуальной среды для установки

  1. Запустите Git Bash.
  2. После установки virtualenv с использованием команды pip install virtualenv, создайте виртуальную среду. Используйте переменную {name} чтобы дать название вашей виртуальной среде:

     PS C:\Python27> virtualenv {name}
    

    Например:

     PS C:\Python27> virtualenv openstack-cli
    
  3. Для активации виртуальной среды введите команду:

    PS C:\Python27> .\openstack-cli\Scripts\activate
    

Теперь, когда виртуальная среда активна, префикс изменится (он будет указывать на среду, которую вы сейчас используете:

    (openstack-cli) PS C:\Python27>

Установка клиента

Установите клиент OpenStack, который в свою очередь установит python-novaclient:

   (openstack-cli) PS C:\> pip install python-openstackclient

Openstack CLI успешно установлен.

Установка OpenStack CLI под Windows, вариант 2

  • Установите последнюю версию Python с официального сайта python.org/downloads/windows
  • Запустите PowerShell. Для этого в меню "Пуск" выберите "Пуск", Все программы, Стандартные, откройте папку "Windows PowerShell" и щелкните "Интегрированная среда сценариев Windows PowerShell".
  • Проверьте, что Python работает, командой 
    • pip
  • Команда выводит справочную информацию о приложении.
  • Если командная строка выведет ошибку, проверьте правильность путей для переменной PATH. Для этого в панели управления Windows откройте «дополнительные параметры системы». В открывшемся окне откройте вкладку «дополнительно». Нажмите «Переменные среды». Выберите переменную PATH и нажмите «изменить». Измените пути в соответствии с расположением установленного пакета Python.
  • Установите OpenStack cli командой: 
    • pip install python-openstackclient
  • Пройдя по ссылке https://infra.mail.ru/dashboard/project/api_access/ , скачайте OpenStack RC file v3.
  • Далее вам будет нужно загрузить переменные из этого файла к себе в Переменные окружения. Пример: $env:OS_AUTH_URL=https://infra.mail.ru:35357/v3/
  • После этих шагов python-openstackclient должен заработать. Можете для проверки выполнить команду 
    • openstack server list

  Эта команда должна вернуть список ваших серверов.

Пример команды загрузки образа в ваш проект на сервере MCS с помощью клиента командной строки:

  openstack image create --private --container-format bare --disk-format raw --file имя_файла.raw --property hw_qemu_guest_agent=yes --property os_require_quiesce=yes имя_образа

Установка Kubectl (для контейнеров / kubernetes) 

Локальный клиент для Kubernetes kubectl позволяет использовать команды для кластеров Kubernetes. Вы можете использовать kubectl для развертывания приложений, проверки ресурсов кластера и управления ими, а также для просмотра журналов. Полный список операций kubectl см. в разделе "Обзор kubectl".

Установка под Linux с помощью curl

Загрузите последнюю версию с помощью команды:

curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl 

Чтобы загрузить определенную версию, замените часть команды $(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt) на указанную версию.

Например, чтобы загрузить версию v1.17.0 для Linux, введите:

 curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.17.0/bin/linux/amd64/kubectl 

Сделайте исполняемый файл kubectl двоичным.

 chmod +x ./kubectl 

Переместите двоичный файл в ваш путь.

 sudo mv ./kubectl /usr/local/bin/kubectl 

Убедитесь, что вы установили последнюю версию:

 kubectl version 

Установка через менеджер пакетов Ubuntu / Debian

 sudo apt-get update && sudo apt-get install -y apt-transport-https curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list sudo apt-get update sudo apt-get install -y kubectl 

Установка на CentOS / Fedora

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubectl

Установка на macOS с помощью curl

Загрузите последнюю версию:

 curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl" 

Чтобы загрузить определенную версию, замените часть команды $(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt) на указанную версию.

Например, чтобы скачать версию v1.17.0 на macOS, введите:

 curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.17.0/bin/darwin/amd64/kubectl 

Сделайте исполняемый файл kubectl двоичным.

 chmod +x ./kubectl 

Переместите двоичный файл в ваш путь.

 sudo mv ./kubectl /usr/local/bin/kubectl 

Убедитесь, что вы установили последнюю версию:

 kubectl version 

Установка в Windows 

1. Загрузите последнюю версию v1.17.0 по этой ссылке.

Или, если у вас установлен curl , используйте эту команду:

 curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.17.0/bin/windows/amd64/kubectl.exe 

2. Чтобы узнать последнюю стабильную версию (например, для сценариев), посмотрите на https://storage.googleapis.com/kubernetes-release/release/stable.txt .

3. Добавьте двоичный файл в ваше окружение PATH (например по этой инструкции).

4. Проверьте, что версия kubectl совпадает с загруженной:

 kubectl version 

Установка с помощью Powershell от PSGallery 

Если вы работаете в Windows и используете менеджер пакетов Powershell Gallery, вы можете установить и обновить kubectl с помощью Powershell.

1. Запустите команды установки (не забудьте указать DownloadLocation):

 Install-Script -Name install-kubectl -Scope CurrentUser -Force install-kubectl.ps1 [-DownloadLocation <path>] 

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

Установщик создает $HOME/.kube и дает ему указание создать файл конфигурации.

2. Убедитесь, что вы установили последнюю версию:

 kubectl version 

Примечание. Обновление установки выполняется путем повторного запуска двух команд, перечисленных в шаге 1.

Проверка конфигурации kubectl 

Чтобы kubectl мог найти и получить доступ к кластеру Kubernetes, ему нужен файл kubeconfig, который создается автоматически при создании кластера (и предлагается к скачиванию на ваш ПК). По умолчанию конфигурация kubectl находится в ~/.kube/config .

Убедитесь, что kubectl правильно настроен, получив состояние кластера:

 kubectl cluster-info 

Если вы видите в ответ URL, значит, kubectl правильно настроен для доступа к вашему кластеру.

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

 The connection to the server <server-name:port> was refused - did you specify the right host or port? 

Пример запуска экземпляра инстанса через локальный клиент

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

Чтобы openstack вернул список доступных образов, вызовите Compute API через клиент openstack :

 $ openstack image list
 
+--------------------------------------+------------------+
| ID                                   | Name             |
+--------------------------------------+------------------+
| a5604931-af06-4512-8046-d43aabf272d3 | fedora-20.x86_64 |
+--------------------------------------+------------------+

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

 $ openstack flavor list
 
+----+-----------+-----------+------+-----------+------+-------+-----------+
| ID | Name      | Memory_MB | Disk | Ephemeral | Swap | VCPUs | Is_Public |
+----+-----------+-----------+------+-----------+------+-------+-----------+
| 1  | m1.tiny   | 512       | 0    | 0         |      | 1     | True      |
| 2  | m1.small  | 2048      | 20   | 0         |      | 1     | True      |
| 3  | m1.medium | 4096      | 40   | 0         |      | 2     | True      |
| 4  | m1.large  | 8192      | 80   | 0         |      | 4     | True      |
| 42 | m1.nano   | 64        | 0    | 0         |      | 1     | True      |
| 5  | m1.xlarge | 16384     | 160  | 0         |      | 8     | True      |
| 84 | m1.micro  | 128       | 0    | 0         |      | 1     | True      |
+----+-----------+-----------+------+-----------+------+-------+-----------+

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

Чтобы запустить экземпляр my_instance , выполните команду openstack server create с идентификаторами образов и openstack server create с именем сервера:

 $ openstack server create --image a5604931-af06-4512-8046-d43aabf272d3 --flavor 1 my_instance
 
+--------------------------------------+---------------------------------------------------------+
| Field                                | Value                                                   |
+--------------------------------------+---------------------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                                  |
| OS-EXT-AZ:availability_zone          | nova                                                    |
| OS-EXT-STS:power_state               | 0                                                       |
| OS-EXT-STS:task_state                | scheduling                                              |
| OS-EXT-STS:vm_state                  | building                                                |
| OS-SRV-USG:launched_at               | None                                                    |
| OS-SRV-USG:terminated_at             | None                                                    |
| accessIPv4                           |                                                         |
| accessIPv6                           |                                                         |
| addresses                            |                                                         |
| adminPass                            | 3vgzpLzChoac                                            |
| config_drive                         |                                                         |
| created                              | 2015-08-27T03:02:27Z                                    |
| flavor                               | m1.tiny (1)                                             |
| hostId                               |                                                         |
| id                                   | 1553694c-d711-4954-9b20-84b8cb4598c6                    |
| image                                | fedora-20.x86_64 (a5604931-af06-4512-8046-d43aabf272d3) |
| key_name                             | None                                                    |
| name                                 | my_instance                                             |
| os-extended-volumes:volumes_attached | []                                                      |
| progress                             | 0                                                       |
| project_id                           | 9f0e4aa4fd3d4b0ea3184c0fe7a32210                        |
| properties                           |                                                         |
| security_groups                      | [{u'name': u'default'}]                 |
| status                               | BUILD                                                   |
| updated                              | 2015-08-27T03:02:28Z                                    |
| user_id                              | b3ce0cfc170641e98ff5e42b1be9c85a                        |
+--------------------------------------+---------------------------------------------------------+

Важно

Для получения информации о портах по умолчанию, которые используют компоненты OpenStack, см. Брандмауэры и порты по умолчанию в Руководстве по установке OpenStack .

Оригинал статьи находится тут https://developer.openstack.org/api-guide/quick-start/ .

Также смотрите статью https://developer.openstack.org/api-guide/quick-start/api-quick-start.html .