然而,一些客户在公共云使用方面面临限制,而是更喜欢自己的私有云。安装和部署 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,控制平面,限制,系统,创建 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。