牛角号 #66
面向 Ansible 开发人员社区的时事通讯 第 66 期,2022 年 7 月 8 日(往期期刊)
欢迎来到牛角号,我们面向 Ansible 开发人员社区的时事通讯。如果您有任何问题或想分享的内容,欢迎在Matrix 上的 Ansible 社交室与我们聊天,并提及newsbot
,以便您的新闻条目被标记以供审核,以便在下一期的周刊中发布!
面向 Ansible 开发人员社区的时事通讯 第 66 期,2022 年 7 月 8 日(往期期刊)
欢迎来到牛角号,我们面向 Ansible 开发人员社区的时事通讯。如果您有任何问题或想分享的内容,欢迎在Matrix 上的 Ansible 社交室与我们聊天,并提及newsbot
,以便您的新闻条目被标记以供审核,以便在下一期的周刊中发布!
将 GitOps 与 Ansible 相结合的一大优势在于,您可以简化容器化应用程序的自动化交付和生命周期。
借助 GitOps 的功能,我们可以
将上述功能与 Ansible 相结合,您将拥有实现容器化应用程序在任何自动化位置的配置一致性所需的一切。
这引出了一个问题:“我们如何将 Ansible 和 GitOps 相结合来管理容器化应用程序的生命周期?”
很简单,通过创建一个与我的应用程序存储库中的 Git webhook 关联的 Ansible 工作流程。
您可能想知道什么是 Git webhook?
Git webhook 被定义为一种方法,用于在存储库上发生特定操作时,向外部 Web 服务器传递通知。
例如,当存储库更新时,这可能会触发一个事件,该事件可以触发 CI 构建、部署环境,或者在本例中,修改容器化应用程序的配置。
webhook 提供了在 Web 上跨应用程序执行指定命令的功能。自动化控制器提供了与 GitHub 和 GitLab 的 webhook 集成,但在本博客中,我们将与 GitHub 集成。
在本博客的以下部分,我将提供以下步骤的逐步过程:
GitHub 个人访问令牌 (PAT) 是将 Ansible 工作流程与您的 Git 存储库关联所需的凭据之一。
生成一个用于与自动化控制器一起使用的个人访问令牌 (PAT)。
单击页面底部的**生成令牌**按钮。
在准备好 PAT 后,下一步是创建一个 Git 存储库,当对该存储库进行更改时,它将由我们的 GitHub webhook 触发。
在本博客中,我将使用我的应用程序演示存储库。您可以随意使用自己的存储库或分叉此存储库以进行后续操作。
应用程序演示存储库非常简单,因为它包含
container_playbook.yml
group_vars/all.yml
requirements.yml
container_playbook.yml 是一个简单的剧本,它创建一个颜色容器,在特定端口启动它,并设置两个环境变量,APP_COLOR
和 tree
。
该container_playbook.yml
的示例
--- - name: Playbook to setup prereqs hosts: all become: true tasks: - name: Create a color container containers.podman.podman_container: name: colors image: docker.io/mmumshad/simple-webapp-color:latest state: started network: host ports: - "{{ host_port }}:{{ container_port }}" env: APP_COLOR: "{{ color }}" tree: "{{ tree }}"
group_vars/all.yml
是存储我的 Podman 容器修改的位置,这些修改将触发容器的更改。
该group_vars/all.yml
文件的示例
color: "BLUE" tree: "trunk" host_port: 8080 container_port: 8080
最后,我们有requirements.yml
文件,它确保我们有 containers.podman 集合可供剧本使用。
该requirements.yml
的示例
collections: - name: containers.podman
在存储库就位,GitHub PAT 设置后,接下来的步骤涉及创建我们的 Red Hat Ansible 自动化平台资源,这些资源将在应用程序演示存储库中发生 GitHub 推送事件时被触发。
在我的自动化控制器仪表板中,我首先需要创建我的凭据资源,以确保当我创建新的项目、工作流程和作业模板时,它们都可以轻松地附加我的应用程序演示 PAT 凭据。
在自动化控制器仪表板中:
在应用程序演示 PAT 凭据就位后,我需要另一个凭据来访问将运行 Podman 容器的主机。在本例中,它是一个 AWS 实例。
为了访问此主机,我将创建一个新的凭据,其中存储我的 AWS 私钥。
在凭据就位后,我需要创建一个清单,其中存储我的 AWS 实例的详细信息。
要添加我的 AWS 实例的详细信息,我将创建一个清单文件。
在**变量**中,提供以下 YAML
--- ansible_host: ansible_user: ec2-user
在凭据和清单资源设置好后,我将创建我的应用程序演示项目。此项目的目的是创建一个工作流程,该工作流程包含一个作业模板,该模板会在应用程序演示存储库发生更新时自动运行。
这确保了我对 Git 存储库中的 Podman 容器设置进行更改时,container_playbook.yml 会运行以进行相应的更改。
在自动化控制器仪表板中
接下来,创建工作流程模板。
在创建了 Ansible 自动化平台工作流程模板,并准备了包含所需文件的 GitHub 存储库后,下一步是为我们的存储库启用 webhook,例如app_demo。
默认情况下,GitHub 在传递有效负载时会验证 SSL 证书。如果您的自动化控制器 SSL 证书未签名,请确保禁用 SSL 验证。
App Demo 任务模板会在每次 Git 仓库更新时自动运行 **container_playbook.yml** 文件。
在您的自动化控制器仪表盘中创建任务模板
之前,已创建 App Demo 工作流。此工作流的目的是确保 App Demo 项目始终同步,并且只要对 App Demo 仓库进行更改,App Demo 任务就会运行容器剧本。
要测试一切是否正常工作,请前往运行 Podman 容器的主机。到达那里后,可以运行以下 podman ps 命令
$ sudo podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
注意:第一次运行 podman ps 时,您应该没有运行的容器,因为您还没有运行 App Demo 工作流。
转到您的 App Demo GitHub 仓库,修改 **app_demo/group_vars/all.yml** 文件,将 **color: "BLUE"** 更改为 **color: "YELLOW"**,然后将更改推送到 Git 仓库。
转到您的自动化控制器仪表盘,您应该看到 App Demo 工作流正在运行。完成后,在您的主机上,验证容器是否已应用更改。
$ ssh -i </path/to/private-key.pem> ec2-user@<IP> $ sudo podman exec -it colors env PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin TERM=xterm container=podman PYTHON_VERSION=3.7.0 PYTHON_PIP_VERSION=18.0 LANG=C.UTF-8 GPG_KEY=0D96DF4D4110E5C43FBFB17A2A347FA6AA65421D APP_COLOR=YELLOW tree=trunk HOME=/root
注意 Podman 容器现在正在运行,并且颜色为 YELLOW。
回到 App Demo 仓库,将颜色从 YELLOW 更改为 GREEN,然后将更改推送到 Git 仓库。
自动化控制器仪表盘将运行 App Demo 工作流,完成后,您可以重新运行主机上的相同 exec 命令,并看到颜色已更改为 GREEN。
$ ssh -i </path/to/private-key.pem> ec2-user@<IP> $ sudo podman exec -it colors env PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin TERM=xterm container=podman PYTHON_VERSION=3.7.0 PYTHON_PIP_VERSION=18.0 LANG=C.UTF-8 GPG_KEY=0D96DF4D4110E5C43FBFB17A2A347FA6AA65421D APP_COLOR=GREEN tree=trunk HOME=/root
本练习的目的是展示 Ansible 和 GitOps 的强大功能。它们可以为您的容器化应用程序提供关键的自动化功能。
虽然在演示中我们对应用程序进行了简单的颜色值更改,但想象一下,我们可以将这种功能应用于
所有这些还没有提到从以下方面继承的优势
这两个工具一起提供的用例和功能是无限的。
Ansible 开发者社区通讯 第 65 期,2022-07-01 (往期内容)
欢迎来到牛角号,我们面向 Ansible 开发人员社区的时事通讯。如果您有任何问题或想分享的内容,欢迎在Matrix 上的 Ansible 社交室与我们聊天,并提及newsbot
,以便您的新闻条目被标记以供审核,以便在下一期的周刊中发布!
Ansible 开发者社区通讯 第 64 期,2022-06-24 (往期内容)
欢迎来到牛角号,我们面向 Ansible 开发人员社区的时事通讯。如果您有任何问题或想分享的内容,欢迎在Matrix 上的 Ansible 社交室与我们聊天,并提及newsbot
,以便您的新闻条目被标记以供审核,以便在下一期的周刊中发布!
Ansible 开发者社区通讯 第 63 期,2022-06-17 (往期内容)
欢迎来到牛角号,我们面向 Ansible 开发人员社区的时事通讯。如果您有任何问题或想分享的内容,欢迎在Matrix 上的 Ansible 社交室与我们聊天,并提及newsbot
,以便您的新闻条目被标记以供审核,以便在下一期的周刊中发布!