Создание плоскости управления CockroachDB с помощью Ansible Tower
CockroachDB можно легко развернуть в общедоступном облаке с помощью Cockroach Cloud, предлагаемого Cockroach Labs DBaaS. С помощью нескольких щелчков мыши ваш выделенный или бессерверный кластер будет готов за считанные минуты, если не секунды. Подключайтесь и получайте прибыль.
Однако некоторые клиенты сталкиваются с ограничениями в отношении использования общедоступного облака, предпочитая вместо этого собственное частное облако. Установка и развертывание кластера CockroachDB очень просты, но очень трудно превзойти удобство плоскости управления, если ваша цель - широкое внедрение в компании и упрощенное обслуживание (например, обновление программного обеспечения).
Здесь же используется Ansible Tower в качестве краеугольной системы для создания простой плоскости управления. Функции корпоративного уровня Tower позволяют создавать пользователей и разрешения, управлять учетными данными и средами для выполнения практически любого сценария или рабочего процесса скрипта. Кроме того, в нем есть небольшая удобная функция для создания базовых графических интерфейсов - Survey, который используется для получения пользовательских данных.
Идея заключается в том, что любой пользователь в организации может войти в Tower, создать кластер, указав его характеристики (размер, количество узлов, регионов и т.д.) и получить строку подключения к базе данных. Затем Tower использует существующий список серверов (или создаст новые виртуальные машины), установит и развернет CockroachDB и вернет сведения о подключении. Конечно, вы можете добавлять сценарии до и после установки по своему желанию.
Установка
Ansible Tower, которая теперь превратилась в новый продукт под названием Red Hat Ansible Automation Platform, является лицензионным продуктом. Поэтому вместо этого установим AWX, исходный проект, который является бесплатным и с открытым исходным кодом.
Для AWX требуется среда Kubernetes, и нам потребуется создать кластер K8s с одним узлом, используя Minicube.
Теперь, когда AWX запущен, пришло время настроить его и интегрировать с другими компонентами.
Среда выполнения
Во-первых, нам нужна среда выполнения, то есть образ модуля k8s, который Tower будет использовать для запуска нашего скрипта «CockroachDB cluster create». Ansible предоставляет базовое изображение под названием ansible/awx-ee, который мы расширим, используя приведенный ниже файл Dockerfile, и опубликовал как fabiog1901/awx-ee
на Dockerhub.
FROM quay.io/ansible/awx-ee:latest
USER root
RUN pip install --upgrade pip
RUN ansible-galaxy collection install ansible.posix
RUN ansible-galaxy collection install community.general
RUN pip install boto boto3 botocore
RUN pip install google-api-core google-auth google-cloud-compute googleapis-common-protos
RUN pip install azure-common azure-core azure-identity azure-mgmt-compute azure-mgmt-core azure-mgmt-network azure-mgmt-resource
RUN pip install cockroachdb-cloud-client
USER 1000
Ничего сверхъестественного, просто добавьте несколько базовых коллекций Ansible и убедитесь, что установлены пакеты облачного провайдера python SDK. Идея состояла в том, чтобы создать кластер CockroachDB для частного облака, но, поскольку у нас его нет, вместо этого мы используем общедоступное облако. Предположим, что для частного облака мы также установим пакеты SDK Python для частного облака, например, OpenStack SDK или VMWare vSphere SDK; идея состоит в том, чтобы создать образ docker со всеми библиотеками, необходимыми для скрипта.
Здесь мы добавляем это изображение docker в качестве среды выполнения по умолчанию в Tower
Проект хранилища
То, что должно быть выполнено, предоставляется Tower через проект. Tower интегрируется с GitHub, поэтому мы можем использовать репозиторий в качестве нашего проекта Tower. Sample repo (образец репозитория), содержит руководство по созданию кластера и другое руководство по уничтожению кластера. Для плейбуков требуется Ansible Collection, cockroachdb-collection, в которой есть роли и модули для создания виртуальных машин и развертывания CockroachDB. Поскольку мы поместили сведения о коллекции в файл collections/requirements.yml
, коллекция извлекается автоматически во время выполнения с помощью Tower.
Шаблон
Шаблон Tower (Tower Template) - это то, что описывает то, что должно быть запущено. Нами будет создан шаблон «CockreachDB Create», который собирает информацию о кластере с помощью опроса и запускает файл create.yaml
в нашем проекте.
Пожалуйста, обратите внимание, что для краткости есть много других деталей, которые теряются из вида, таких как учетные данные (AWS keys, SSH key и т.д.), локальные переменные, создание пользователя и т.д.
Детали Survey:
Запуск
Теперь запустим наш шаблон. Нами созданного пользователя fabio
есть разрешение только на запуск задания «CockroachDB Create». Входим в систему с таким пользователем и нажимаем на значок ракеты, чтобы запустить задание.
Пожалуйста, обратите внимание, что Tower поддерживает сервер API, поэтому вы можете свободно создавать свой собственный клиент Tower и создавать лучшие графические интерфейсы - вы не ограничены опросом и шаблоном через стандартный интерфейс Tower, который вы видели на этих скриншотах. Создайте свой собственный веб-клиент, и пусть клиент вызывает шаблоны!
Подробная информация о том, как подключиться к кластеру, распечатана, но, конечно, у вас могут быть более эффективные механизмы уведомления, например, вы могли бы попросить Tower отправить электронное письмо или сообщение Slack.
Создание кластера на виртуальных машинах заняло около 2 минут, проверьте прошедшее время в правом верхнем углу.
Теперь можно получить доступ к своему кластеру и получать прибыль.
Расширьте возможности Tower для создания кластеров на CockroachCloud
Вы уже поняли, что с помощью Tower можно запускать практически все, что угодно: это не решение исключительно для создания кластеров CockroachDB в частной / общедоступной облачной инфраструктуре.
Чтобы подчеркнуть это, создадим новый шаблон (Template), который использует новый Ansible playbook, cc_create.yaml
, который позволяет мне создавать кластер CockroachCloud (кластер CockroachDB в службе Cockroach Labs DBaaS). CockroachCloud можно полностью управлять с помощью API, см. спецификацию OpenAPI. Из файла спецификации JSON создадим Python SDK, cockroachdb-cloud-client.
SDK позволяет нам создавать модули Ansible (все еще находящийся в стадии разработки проект), которые мы храним в той же cockroachdb-collection.
Новый шаблон имеет новый графический интерфейс Survey, что позволяет очень легко создать кластер CockroachCloud непосредственно из Tower, где вы можете проверять и отслеживать, кто и что может делать, а также настраивать такие вещи, как выставление счетов, отчетность и т. д.
Ниже приведен процесс для этого нового шаблона, и как только задание будет выполнено, вы увидите знакомое сообщение с подробной информацией о вновь созданном кластере
И просто для подтверждения, кластер также виден в консоли CockroachCloud.
Заключительные мысли
Это был небольшой простой пример того, как мы можем использовать такую систему, как Tower, для быстрого создания Control Plane. Хотя есть много аспектов, которые мы не рассмотрели, будем надеяться, что Tower может предложить с точки зрения корпоративных функций и простоты добавления новых рабочих процессов и сценариев для автоматизации или облегчения общих задач.
Однако выбор не ограничивается Tower. Есть интересный проект, за которым я слежу, под названием Ansible Semaphore. Он далеко не такой зрелый, как Tower, но за ним стоит следить.