使用 Ansible 配置 Podman 容器

在本文中,你将学习如何在 Fedora Linux 上安装、配置 Ansible,以及如何使用它来管理、配置 Podman 容器。

使用 Ansible 配置 Podman 容器

在复杂的 IT 基础设施中,有许多重复性任务。成功运行这些任务并不容易。运行失败大多数是人为错误引发。在 Ansible 帮助下,你可以通过远程主机来执行所有任务,这些远程主机按照 行动手册 playbook 执行,行动手册可以根据需要重复使用多次。在本文中,你将学习如何在 Fedora Linux 上安装、配置 Ansible,以及如何使用它来管理、配置 Podman 容器。

Ansible

Ansible 是一个由红帽赞助的开源基础设施自动化工具。它可以处理大型基础设施带来的所有问题,例如安装和更新软件包、备份、确保特定服务持续运行等等。你用 YAML 写的行动手册来做这些事。Ansible 行动手册可以反复使用,使系统管理员的工作不那么复杂。行动手册减少了重复任务,并且可以轻松修改。但是我们有很多像 Ansible 一样的自动化工具,为什么要用它呢?与其他一些配置管理工具不同,Ansible 是无代理的:你不必在受管节点上安装任何东西。

Podman

Podman 是一个开源的容器引擎,用于开发、管理和运行容器镜像。但什么是容器呢?每当你创建任何新应用程序并将其部署在物理服务器、云服务器或虚拟机上时,你面临的最常见问题是可移植性和兼容性。这就是容器出现的原因。容器在操作系统级别上进行虚拟化,因此它们只包含所需的库和应用程序服务。容器的好处包括:

  • 便携性
  • 隔离性
  • 扩展性
  • 轻量级
  • 快速启动
  • 更小的磁盘和内存需求

简而言之:当你为任何应用程序构建容器镜像时,所有必需的依赖项都被打包到容器中。你现在可以在任何主机操作系统上运行该容器,没有任何可移植性和兼容性问题。

Podman 的关键亮点在于它没有守护程序,因此不需要 root 权限来运行容器。你可以借助 Dockerfile 构建容器镜像,或者从 Docker Hub、fedoraproject.orgQuay 上拉取镜像。

为什么用 Ansible 配置 Podman?

Ansible 提供了一种轻松多次运行重复任务的方法。它还为云提供商(如 AWS、GCP 和 Azure)、容器管理工具(如 Docker 和 Podman)与数据库管理提供了大量模块。Ansible 还有一个社区(Ansible Galaxy),在这里你可以找到大量 Ansible 角色 Roles ,它们由来自世界各地的贡献者创建。因为这些,Ansible 成为了 DevOps 工程师和系统管理员手中的好工具。

借助 DevOps,应用程序的开发步伐很快。开发的应用不局限于任意操作系统,这点至关重要。这就是 Podman 出现的地方。

安装 Ansible

首先,安装 Ansible:

“`
$ sudo dnf install ansible -y

“`

配置 Ansible

Ansible 需要在受管节点上运行 ssh,所以首先生成一个 密钥对 Key Pair

“`
$ ssh-keygen

“`

生成密钥后,将密钥复制到受管节点。

输入 yes,然后输入受管节点的密码。现在可以远程访问受管主机。

为了能够访问受管节点,你需要将所有主机名或 IP 地址存储在清单文件中。默认情况下,这是在 ~/etc/ansible/hosts

这是 库存 inventory 文件的样子。方括号用于将组分配给某些特定的节点。

“`
[group1]
green.example.com
blue.example.com
[group2]
192.168.100.11
192.168.100.10

“`

检查所有受管节点是否可以到达。

“`
$ ansible all -m ping

“`

你可以看到如下输出:

“`
[mahesh@fedora new] $ ansible all -m ping
fedora.example.com I SUCCESS {
“ansibefacts”: {
“discovered
interpreter_python”: “/usr/bin/python”
},
“changed”: false,
“ping”: “pong”
}
[mahesh@fedora new] $

“`

现在创建你的第一个 行动手册 playbook ,它将在受管节点上安装 Podman。首先用 .yml 拓展名创建一个任意名称的文件。

“`
$ vim nameofplaybook.yml

“`

行动手册应该如下所示。第一个字段是行动手册的名称。主机字段(hosts)用于提及清单中提到的主机名或组名。become: yes 表示升级权限,以及任务(tasks)包含所要执行的任务,这里的名称(name)指定任务(tasks)名称,yum 是安装软件包的模块,下面在名称字段(name)指定软件包名称,在状态字段(state)指定安装或删除软件包。

“`

  • name: Playbook for podman.
    hosts: fedora.example.com
    tasks:

    • name: Pull httpd:2-alpine image from dockerhub.
      podman_image:
      name: docker.io/httpd
      tag: 2-alpine

“`

现在检查已拉取的镜像:

“`
[mahesh@fedora new] $ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/httpd 2-alpine fa848876521a 11 days ago 57 MB

[mahesh@fedora new] $

“`

创建一个新的行动手册来运行 httpd 镜像。更多信息请查看 podman_container 模块文档。

“`

via: https://fedoramagazine.org/using-ansible-to-configure-podman-containers/

作者:mahesh1b 选题:lujun9972 译者:DCOLIVERSUN 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

主题测试文章,只做测试使用。发布者:eason,转转请注明出处:https://aicodev.cn/2021/05/16/%e4%bd%bf%e7%94%a8-ansible-%e9%85%8d%e7%bd%ae-podman-%e5%ae%b9%e5%99%a8/

Like (0)
eason的头像eason
Previous 2021年5月16日 下午7:17
Next 2021年5月17日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信