vRealize Automation поддерживает работу с облачными платформами, превращая частное облако в гибридное. Более полная и качественная интеграция реализована с облаком Amazon: развертывание и управление инстансами EC2, выполнение скриптов, создание мультиоблачных приложений… Предлагаю быстро настроить и протестировать самим.
Настройки на стороне AWS
Создание политики
Для подключения vRA к AWS потребуется пользователь с программным доступом, для него нужно создать политику доступа. Пользователя можно сделать администратором (Administrator Access), но лучше всегда обходиться минимальным набором прав:
- Сервис AIM: Services -> AIM;
- Создайте новую политику: Policies -> Create policy;
- В JSON задайте следующие права:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeImages", "ec2:DescribeKeyPairs", "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVolumes", "ec2:DescribeVpcAttribute", "ec2:DescribeAddresses", "ec2:DescribeAvailabilityZones", "ec2:DescribeImageAttribute", "ec2:DescribeInstanceAttribute", "ec2:DescribeVolumeStatus", "ec2:DescribeVpnConnections", "ec2:DescribeRegions", "ec2:DescribeTags", "ec2:DescribeVolumeAttribute", "ec2:DescribeNetworkInterfaces", "ec2:DescribeNetworkInterfaceAttribute", "ec2:DisassociateAddress", "ec2:GetPasswordData", "ec2:ImportKeyPair", "ec2:ImportVolume", "ec2:CreateVolume", "ec2:DeleteVolume", "ec2:AttachVolume", "ec2:ModifyVolumeAttribute", "ec2:DetachVolume", "ec2:AssignPrivateIpAddresses", "ec2:UnassignPrivateIpAddresses", "ec2:CreateKeyPair", "ec2:DeleteKeyPair", "ec2:CreateTags", "ec2:AssociateAddress", "ec2:ReportInstanceStatus", "ec2:StartInstances", "ec2:StopInstances", "ec2:ModifyInstanceAttribute", "ec2:MonitorInstances", "ec2:RebootInstances", "ec2:RunInstances", "ec2:TerminateInstances", "elasticloadbalancing:RegisterInstancesWithLoadBalancer", "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", "elasticloadbalancing:DescribeLoadBalancerAttributes", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeInstanceHealth" ], "Resource": "*" } ] }
- Далее введите имя новой политики, например vRA2AWS и её описание.
Создание пользователя
- Сервис AIM: Services -> AIM;
- Создайте пользователя: Users -> Add user;
- Задайте имя (User name) и отметьте тип доступа Programmatic access;
- Теперь выдайте пользователю права: Attach existing policies directly, в поле Filter policies введите имя созданной политики (у меня это vRA2AWS) и выберите найденную политику;
- Create user;
- Важно! Для работы с API создаётся ключ, состоящий из Access key ID и Secret access key, обязательно сохраните их (можно скачать файлом по кнопке “Download .csv”). Если Вы не сохранили секретный ключ, то его можно сгенерировать повторно в настройках пользователя.
Создание группы безопасности
Группа безопасности (Security Group) – набор правил фильтрации трафика или просто настройки файервола. Создайте новую группу безопасности для работы Ваших инстансов (например, для доступа по http и https) и удаленного управления ими (rdp, ssh):
- Cервис VPC: Services -> VPC;
- Новая группа: Security Groups -> Create Security Group;
- Добавьте правила фильтрации входящего трафика: выберите Вашу группу -> вкладка Inbound -> Edit;
- Добавьте нужные Вам порты/протоколы, например http, https, rdp, ssh. В качестве источника запросов для http и https – всё (Anywhere, 0.0.0.0/0), а управление лучше ограничивать только Вашим внешним IP/сетью;
- Закажите инстанс с новой группой безопасности и протестируйте доступ.
Настройка облака на стороне vRA
Подключение к AWS
- Infrastructure -> Endpoints -> Endpoints;
- New -> Cloud -> Amazon EC2;
- Введите имя ендпоинта для EC2;
- Введите Access key ID и Secret access key, полученные при создании пользователя на AWS (шаг “Создание пользователя”).
Для проверки наличия соединения с EC2, выберите Ваш ендпоинт и запустите Data Collection. Если процесс завершается с ошибкой, то смотрите последние логи: Infrastructure -> Monitoring -> Log.
Подключение через прокси
При работе через проски-сервер важно обеспечеть доступность всех используемых на стороне Amazon серверов (запросы к ним идут с сервера IaaS). Наиболее вероятной ошибкой соединения будет: «Workflow ‘AmazonEC2EndpointDataCollection’ failed with the following exception: A WebException with status ProtocolError was thrown. Inner Exception: The remote server returned an error: (407) Proxy Authentication Required.».
Если Вы используете ближайший к нам регион EU (Frankfurt), то нужен доступ до ec2.eu-central-1.amazonaws.com (все адреса смотрите в документации: AWS Regions and Endpoints), некоторые запросы уходят на адрес ec2.amazonaws.com и переадресуются на us-east-1.
В vRA для использования прокси-сервера создаётся отдельный Proxy endpoint:
- New -> Network and Security -> Proxy;
- На вкладке General введите адрес прокси-сервера (без протокола) и порт, и user/password при необходимости;
- На вкладке Associations добавьте связь с endpoint Amazon EC2.
Ещё одна возможная ошибка: «Workflow ‘AmazonEC2EndpointDataCollection’ failed with the following exception: A WebException with status NameResolutionFailure was thrown. Inner Exception: The remote name could not be resolved: ‘http’.»
В качестве решения можете указать URL-адрес службы конфигурации Amazon EC2 через ендпоинт Custom Properties:
amazon.AmazonEC2Config.ServiceURL = https://ec2.eu-central-1.amazonaws.com (см. https://kb.vmware.com/s/article/52260).
Создание Fabric Group
Используемые регионы AWS указываются в Fabric Groups как обычные локальные кластера: Infrastructure > Endpoints > Fabric Groups. Можете создать новую fabric group для публичных облаков или отредактировать имеющуюся, добавив нужные регионы AWS.
Подготовка ключей
Для подключения к инстансам EC2 потребуется пара ключей:
- Infrastructure -> Reservation -> Key Pairs;
- Для нового ключа укажите имя и выберите эндпоинт;
- После успешного создания ключа на AWS (управление ключами на AWS: EC2 -> Network & Security – > Key Pairs) он появится в интерфейсе vRA.
Если необходимо использовать свои старые ключи, созданные на стороне AWS, то после выполнения Data Collection они появятся в vRA (иногда это происходит далеко не сразу, терпение). Отредактируйте ключ, подгрузив в vRA файл закрытого ключа или его содержимое.
Создание резервирования
Создание резервирования для Amazon EC2 интуитивно понятно и не сильно отличается от стандартной процедуры. Вместо указания ресурсов и квот нужно выбрать доступный регион и группы безопасности, либо VPC и подсети. Здесь же указывается пара ключей для доступа к инстансам.
Подготовка блюпринтов
Для заказа инстансов Amazon EC2 осталось только подготовить блюпринты. Процесс также похож на создание стандартного блюпринта для виртуальной машины на vSphere. Вместо шаблона VM выберите образ Amazon, а вместо ресурсов выбрать доступные пользователям типы инстансов (инстансы настраиваются в Infrastructure -> Administration -> Instance Types). Можно публиковать блюпринт, выдавать на него права и приступать к тестированию:
Важно! Обязательно изучите доступные для использования настраиваемые свойства (custom properties). Например, свойство Amazon.Extensions.UserData позволяет передать скрипт в поле “User data” для настройки инстанса. Только есть небольшая проблема с передачей символов конца строки в многострочных скриптах, замените их на “{LF}”:
Исходный скрипт:
#!/bin/bash yum update -y yum -y install tomcat tomcat-admin-webapps systemctl enable tomcat systemctl restart tomcat
Конечный скрипт одной строкой:
#!/bin/bash{LF}sudo yum update -y{LF}sudo yum -y install tomcat tomcat-admin-webapps{LF}sudo systemctl enable tomcat{LF}sudo systemctl restart tomcat
Такая же замена сработает и для скриптов на PowerShell.
С инстансами Amazon EC2 можно использовать программные компоненты vRA. Для этого при установке программного агента укажите в Cloud Provider не vsphere, а ec2.
Управление AWS из vRO
Работа с AWS, как и с vSphere, не ограничивается созданием и удалением инстансов/виртуальных машин. Для создания полноценных процессов автоматизации есть плагин для оркестратора: https://marketplace.vmware.com/vsx/solutions/vmware-vrealize-orchestrator-plug-in-for-amazon-web-services-version-1-1-0-1-1-0