云网牛站
所在位置:首页 > Linux教程 > 在Fedora Linux系统中使用Ansible配置Podman容器的方法

在Fedora Linux系统中使用Ansible配置Podman容器的方法

2021-05-16 09:48:33作者:夏蓝稿源:云网牛站

本文介绍如何在Linux系统上安装和配置Ansible,以及如何使用它来管理和配置Podman容器,以Fedora操作系统版本为例。在复杂的IT基础架构中,有许多重复性任务,成功运行这些任务并不容易,人为错误总是带来失败的机会。在Ansible的帮助下,您可以通过与Playbook一起执行的远程主机执行所有任务,并且这些Playbook可以根据需要重复使用多次。

 

Ansible简介

Ansible是Red Hat赞助的开源基础设施自动化工具。它可以解决大型基础结构所带来的所有问题,例如安装和更新软件包,进行备份,确保特定服务始终运行等等。您可以使用YAML编写的Playbook来做到这一点。Ansible Playbook可以反复使用,从而使系统管理员的工作变得不那么复杂。Playbook还消除了重复的任务,可以轻松进行修改。但是我们有许多自动化工具,例如Ansible,为什么要使用它?与其他一些配置管理工具不同,Ansible是无代理的:您无需在受管节点上安装任何东西。

 

Podman简介

Podman是一个开源容器引擎,用于开发、管理和运行容器映像。但是什么是容器?每次创建任何新应用程序并将其部署在物理服务器、云服务器或虚拟机上时,您面临的最常见问题就是可移植性和兼容性。容器在操作系统级别进行虚拟化,因此它们仅包含必需的库和应用程序服务。容器的好处包括:可移植性、隔离、缩放、轻、快速启动、较小的磁盘和内存要求。

简而言之:在为任何应用程序构建容器映像时,所有必需的依赖项都打包到了容器中。现在,您可以在任何主机OS上运行该容器,而不会出现任何可移植性和兼容性问题。

Podman的主要亮点是它没有守护程序,因此不需要root特权即可运行容器。您可以在Dockerfile的帮助下构建容器映像,或者从Docker Hub、fedoraproject.org或Quay中提取映像。

 

为什么用Ansible配置Podman的说明

Ansible提供了一种可以轻松多次运行重复性任务的方法。它还为AWS、GCP和Azure等云提供商,Docker和Podman等容器管理工具以及数据库管理提供了大量模块。Ansible还有一个社区(Ansible Galaxy),您可以在其中找到由来自世界各地的贡献者创建的大量Ansible角色。所有这些使Ansible对于DevOps工程师和系统管理员而言是一个很好的工具。

借助DevOps,应用程序的开发步伐很快。开发可以在任何操作系统上运行的应用程序至关重要。

 

安装Ansible

首先,安装Ansible:

$ sudo dnf install ansible -y

参考:安装Ansible(在Fedora/RHEL 8/CentOS 8/Debian/Ubuntu/Arch/openSUSE中)

 

配置Ansible

Ansible需要ssh才能在受管节点上工作,因此首先生成一个密钥对:

$ ssh-keygen

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

注:从https://docs.ansible.com/ansible/latest/user_guide/connection_details.html上的Ansible文档中,可以完成以下操作以使用Ansibles ssh-agent设置ssh密钥:

$ ssh-agent bash 

$ ssh-add ~/.ssh/id_rsa

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

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

这是清单文件。在这里,方括号用于将组分配给某些特定节点:

[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 {

"ansibe_facts": {

"discovered_interpreter_python": "/usr/bin/python"

},

"changed": false,

"ping": "pong"

}

[mahesh@fedora new] $

现在创建您的第一个Playbook,它将在受管节点上安装Podman。首先创建一个扩展名为.yml的文件:

$ vim name_of_playbook.yml

该Playbook应如下所示。第一个字段是Playbook的名称。主机字段用于提及清单中提到的主机名或组名。become: yes表示升级特权,并且任务包含将要执行的所有任务,这里名称指定任务名称,yum是用于安装软件包的模块,在名称字段下方指定软件包名称,状态用于安装或删除软件包:

在Fedora Linux系统中使用Ansible配置Podman容器的方法

检查文件中是否有语法错误:

$ ansible-playbook filename --syntax-check

现在运行Playbook:

$ ansible-playbook filename

您应该获得如下输出:

[mahesh@fedora new] $ ansible-playbook

在Fedora Linux系统中使用Ansible配置Podman容器的方法

现在创建一个新的Playbook,从Docker Hub中提取一个image。您将使用podman_image模块从Docker Hub提取版本2-alpine的httpd image:

在Fedora Linux系统中使用Ansible配置Podman容器的方法

现在检查拉出的image:

[mahesh@fedora new] $ podman images

在Fedora Linux系统中使用Ansible配置Podman容器的方法

创建一个新的Playbook以运行httpd image:

在Fedora Linux系统中使用Ansible配置Podman容器的方法

检查容器是否正在运行:

[mahesh@fedora new] $ podman ps

在Fedora Linux系统中使用Ansible配置Podman容器的方法

现在要停止正在运行的容器,请将状态值从开始更改为不存在:

在Fedora Linux系统中使用Ansible配置Podman容器的方法

当您运行podman ps命令时,您将看不到任何运行中的容器:

[mahesh@fedora new] $ podman ps

在Fedora Linux系统中使用Ansible配置Podman容器的方法

podman_container可以实现许多功能,例如重新创建容器、重新启动容器、检查容器是否正在运行等等。

 

相关主题

在Fedora系统上使用Ansible在AWS中组织SSH密钥(设置和运行playbook)

精选文章
热门文章