本文介绍如何在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是用于安装软件包的模块,在名称字段下方指定软件包名称,状态用于安装或删除软件包:
检查文件中是否有语法错误: $ ansible-playbook filename --syntax-check 现在运行Playbook: $ ansible-playbook filename 您应该获得如下输出: [mahesh@fedora new] $ ansible-playbook
现在创建一个新的Playbook,从Docker Hub中提取一个image。您将使用podman_image模块从Docker Hub提取版本2-alpine的httpd image:
现在检查拉出的image: [mahesh@fedora new] $ podman images
创建一个新的Playbook以运行httpd image:
检查容器是否正在运行: [mahesh@fedora new] $ podman ps
现在要停止正在运行的容器,请将状态值从开始更改为不存在:
当您运行podman ps命令时,您将看不到任何运行中的容器: [mahesh@fedora new] $ podman ps
podman_container可以实现许多功能,例如重新创建容器、重新启动容器、检查容器是否正在运行等等。
相关主题 |