系统相关
首页 > 系统相关> > 使用 Ansible Tower 构建 CockroachDB 控制平面

使用 Ansible Tower 构建 CockroachDB 控制平面

作者:互联网

然而,一些客户在公共云使用方面面临限制,而是更喜欢自己的私有云。安装和部署 CockroachDB 集群非常简单,但如果您的目标是广泛采用公司和简化维护(即软件升级),则很难击败控制平面的便利性。

在这篇博客中,我使用 Ansible Tower 作为基石系统来创建一个简单的控制平面。Tower的企业级功能允许您创建用户和权限,管理凭据和环境,以执行基本上任何脚本或脚本工作流程。此外,它还有一个方便的功能来创建基本的GUI,即调查,我利用它来接受用户输入。

这个想法是,组织中的任何用户都可以登录到Tower,创建一个集群,指定其特征(大小,节点数,区域等)并接收数据库连接字符串。然后,Tower 将使用现有的服务器清单(或创建新的虚拟机),安装和部署 CockroachDB,并返回连接详细信息。当然,您可以随意添加安装前和安装后脚本。

设置

Ansible Tower,现在演变为一个名为Red Hat Ansible Automation Platform的新产品,是一个授权产品。所以我安装了AWX,这是一个免费和开源的上游项目。

AWX 需要一个 Kubernetes 环境,在我的笔记本电脑上,我使用 Minikube 创建了一个单节点 K8s 集群。

AWX启动并运行后,是时候对其进行配置并将其与其他组件集成了。

执行环境
首先,我们需要一个执行环境,即 Tower 将用于运行我们的“CockroachDB 集群创建”脚本的 k8s Pod 映像。Ansible 提供了一个名为ansible/awx-ee的基础映像,我在 Dockerfile 下面扩展了它,并发布了ason Dockerhub。fabiog1901/awx-ee

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集群,但由于我没有,所以我使用公共云。假设对于私有云,我们还将安装私有云python SDK,例如OpenStack SDK或VMWare vSphere SDK;这个想法是创建一个 docker 映像,其中包含脚本所需的所有库。

在这里,我将该 docker 映像添加为 Tower 中的默认执行环境

存储库项目

必须执行的内容通过项目提供给塔。Tower 与 GitHub 集成,因此我们可以使用存储库作为我们的 Tower 项目。我创建的示例存储库包含一个用于创建群集的 playbook 和另一个用于销毁群集的 playbook。该剧本需要一个 Ansible Collection,cockroachdb-collection,它具有创建虚拟机和部署 CockroachDB 的角色和模块。由于我们已将集合的详细信息放在文件中,因此 Tower 会在运行时自动获取集合。collections/requirements.yml

图像描述

模板

塔模板描述了需要运行的内容。我创建了一个“CockroachDB Create”模板,该模板通过调查收集集群信息,并在我的项目中运行该文件。create.yaml

请注意,为了简洁起见,我忽略了许多其他细节,例如凭证(AWS 密钥、SSH 密钥等)、局部变量、用户创建等。

标签:Ansible,构建,Tower,CockroachDB,控制平面,限制,系统,创建
来源: