[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

【Ansible 2.12】在WSL2中使用Docker构建CentOS 6的Ansible执行环境

大家好。
最近,我胃痛、发冷,睡不着觉,体力没了。

本文介绍如何“在 WSL2 中使用 Docker 构建运行 CentOS 6 环境的 Ansible 执行环境”。

强烈建议迁移旧环境,例如 CentOS 6 环境,但由于各种原因,某些环境可能会保留。

当前版本的 Ansible 基本上不兼容这些环境。
因此,我们准备了一个简单易用的流程,用于使用 Docker 为旧版本构建环境。

在解释前提的同时,我们会一步一步地解释和解释步骤。

前言

  • 我们不建议在 CentOS 6 上运行。
    这只是对 CentOS 6 的紧急应对
  • 您使用的版本不再受支持。
    这也是为了紧急使用,不建议使用。

执行环境

■ Linux 环境
操作系统:AlmaLinux 版本 8.5(WSL2 环境)
Shell:Bash
Docker:26.1.0,内部版本 9714adc

■ Windows 环境
操作系统:Windows11 Pro(版本:23H2)
语言设置:更改为日语

■ CentOS 6 环境(Vagrant + VirtualBox)
操作系统:CentOS 6.9(bento / centos-6.9)
Vagrant:2.4.1
VirtualBox:7.0.18 r162988(Qt5.15.2)
IP:192.168.33.15

前提解释

问:为什么 CentOS 6 环境需要单独的 Ansible 环境?

答:较新版本的 Ansible(2.13 或更高版本)不再支持 CentOS 6 的标准 Python 2.6,因此无法再加载 playbook。

问:为什么在 WSL2 中使用 Docker?

答:主要使用的 Ansible 环境是 AlmaLinux 8 (WSL2),在其中运行更容易,包括管理 playbook。

问:是 Docker 而不是 pyenv 吗?

A. 总结:从我的角度来看,Docker 更方便、更容易。

  1. (因为不经常使用)如果使用Python版本控制,迁移到PC时重建会很麻烦。
  2.  Dockerfile可以被其他人用来创建同样的环境,复用性更强。
  3.  作为基础设施工程师,使用 Docker 比使用 Python 版本控制更好。乐趣获得知识
  4. (从我的心理学角度)即使你忘记了你输入了什么,通过查看 Dockerfile 也很容易做一些事情。

问:为什么选择 Ansible-core 2.12?

答:2.12 是与 2.6 兼容的受管节点 Python 的最新次要版本。

*如果您确实想在控制节点上运行Python 2.7或3.7,请使用Python 2.11。

施工步骤

1.WSL2准备

由于这不是本文的主题,我将简要解释一下。

启用“Windows 功能”下的“虚拟机平台”。

然后,在 Microsoft Store 中安装“Windows Subsystem for Linux”和“AlmaLinux 8 WSL”。

您可以通过启动“AlmaLinux 8 WSL”并设置首次启动的用户名和密码来使用它。

2.Docker准备

首先,安装 Docker。

#dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo #dnf install docker-ce #systemctl start docker #systemctl启用docker #docker --version Docker版本26.1.0, build 9714adc *以作者环境为例

3. 创建Dockfile

决定要工作的目录并在其中创建 Dockerfile。

我正在使用位置 /home/AlmaLinux/docker-study/,但请随意根据需要配置它。

# 镜像规格 FROM almalinux:8.9 # 将时间刻度更改为日本时间 RUN ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime # 安装所需的软件包 RUN dnf -y install \ python38 \ python38-devel \ sshpass \ openssh -clients \ && rm -rf /var/cache/dnf/* \ && dnf clean all # 安装 Ansible2.12 RUN pip3 --no-cache-dir install ansible-core==2.12.10 # 指定并自动绑定挂载目标创建 # & 访问容器 WORKDIR /work 时的默认目标

来自 almalinux:8.9

它与 WSL2 使用的发行版和主要版本相匹配。

运行 ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

设置为日本时间。

留下日志等的时候,如果时间是UTC的,就会不同步,会很麻烦,所以我想暂时设置一下时间。

运行 dnf -y 安装 \

AlmaLinux 8的Appstream存储库中的东西,python3.8(3.9也可以)

并且,由于 sshpass 和 openssh-client 可能不包含在与 ssh 相关的映像中,因此请安装它们。

&& rm -rf /var/cache/dnf/* \

删除 dnf(≒yum) 缓存以减小 Docker 镜像的大小。

看来下面介绍的dnf clean all命令可能删除不了,所以先手动删除。

&& dnf 清理全部

删除 dnf(≒yum) 缓存以减小 Docker 镜像的大小。

为什么是“&&”而不是“RUN”?

减少 Docker 镜像的大小。

每次执行 RUN 时,容量都会随着 Docker 镜像中添加更多层而增加。
因此,我们将通过将可以在一次 RUN 中组合在一起的部分进行分组来减少容量。

运行 pip3 --no-cache-dir 安装 ansible-core==2.12.10

由于格式已从 Ansible 2.10 或更高版本更改为 2.9 或更早版本,因此为轻量级主体部分指定“ansible-core”。
其中,指定2.12.10,这是2.12的最新版本。

如果你想重用你已经使用了很长时间的playbook,最好指定“ansible==2.9.27(或者你已经使用了很长时间的版本)”以实现兼容性。
*如果版本太旧,将要求您使用Python 2系列或3.8或更早版本,因此您需要进行调整。

补充:关于收藏

由于“ansible-core”具有最小配置,因此只能使用基本集合(ansible.builtin)。

如果您想在使用“ansible-core 2.12.10”时使用许多模块,请指定“ansible==5.10.0”,这是一个包含“ansible-core 2.12.10”和模块关系的社区包。

但是,图像尺寸会更大。
另外,如果您正在编写安装剧本所需的集合,我认为仅使用“ansible-core”没有问题。

集合关系和版本支持比较复杂,因此本文仅使用基础的“ansible-core”。

工作目录/工作

这指定了 Dockerfile 中的工作目录。
这次,我们指定绑定安装的目标目录。

如果指定 WORKDIR,它将自动创建,无需 mkdir(Linux 端命令),从而减少描述量。
当您进入容器时,配置也会保留,因此您可以直接从绑定安装开始工作。

4. docker构建

从 Dockerfile 创建图像。

#docker build -t ansible2.12:v1 -f Dockerfile . #docker images 存储库标签 图像 ID 创建大小 ansible2.12 v1 58f4663b655b 14 秒前 286MB

我能够成功创建一个存储库名称为“ansible2.12”且标签名称为“v1”的映像。

5. docker run(绑定挂载)

作者正在通过链接 WSL2 和 VScode 来编写 playbook 等。

因此,为 Ansible 2.12 work 准备一个名为 work 的目录,并将其绑定挂载为共享目录。

#cd /home/username/docker-study *验证作者作品放置目录 #docker run -it --name Ansible2.12 --mount type=bind,src=./work,dst=/work ansible2 .12: v1

我写了发布博客的相对路径src=./work,所以请在“work”目录所在的位置执行上面的内容。
写绝对路径没有问题,随意。

6.启动执行环境

让我们运行一下吧。

#docker run -it --name Ansible2.12 --mount type=bind,src=./work,dst=/work ansible2.12:v1 [root@cf3c2fa0c4d8 work]#

在执行的同时,我使用“-it”选项连接到容器。
WORKDIR 也已启用并已移至“/work”。

7、Ping测试

作为快速测试 Ansible 是否存在任何问题,让我们使用 ansible-core 的标准集合 (ansible.builtin) 中的 ping 模块。

[root@cf3c2fa0c4d8 work]# ansible -m ping -ihosts targetnode [弃用警告]:ansible-core 2.13 将需要目标上有 Python 2.7 或更高版本。当前版本:2.6.6(r266:84292,2016 年 8 月 18 日,15) :13:37) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)]。此功能将在版本 2.13 中删除。可以通过在 targetnode | SUCCESS = 中设置 deprecation_warnings=False 来禁用弃用警告。 > { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }

有警告,但由于目标(受管节点)是 CentOS 6 (Python 2.6),因此
仅通知“You can only use Python 2.7 or later from ansible-core 2.13 (warning)”,所以它不是没有问题。

ping成功到达CentOS 6环境进行验证。

完成

这样就完成了整个过程。

之后,只需放置剧本和库存即可开始工作。

我将在接下来的文章中为 CentOS 6 撰写 Ansible 文章。

最后

我尝试在 CentOS 6 环境中使用 Ansible 轻松运行它,但无法使用当前版本运行它。
写这篇文章的原因是提前做好准备,以避免最终不得不手动完成的痛苦,因为构建专用环境并验证它很麻烦。

我使用 Docker 是因为我认为这是最快的方法,但它仍然简单方便。 (我会在操作方面闭上眼睛。)
我希望将来在我的基础设施工程工作中更多地使用它。

我希望这篇文章能为阅读它的人提供一些有用的知识/信息。
感谢您阅读本文。

参考资料

发布和维护 | Ansible 官方
https://docs.ansible.com/ansible/latest/reference_appendices/release_and_maintenance.html

Dockerfile 参考 — Docker-docs-ja 24.0
文档https://docs.docker.jp/engine/reference/builder.html

使用绑定挂载 | Docker 文档
https://docs.docker.jp/storage/bind-mounts.html

层 — Docker-docs-ja 24.0 文档 | Docker 文档
https://docs.docker.jp/build/guide/layers.html

云/服务器设计及搭建
(点此查看服务页面)

如果您觉得这篇文章有帮助,请点赞!
3
加载中...
3 票,平均:1.00 / 13
338
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

写这篇文章的人

关于作者

里面

2022 年加入 Beyond 职业生涯 属于
系统解决方案部门
LPIC-3 我有 304 和 AWS SAA 我的
常规饮料只有三种选择:牛奶、可乐和红茶。