Ansible 是世界上最受欢迎的自动化引擎之一。它能让你自动化几乎任何事情,从本地系统的设置到大量的平台和应用。它是跨平台的,因此你可以将其用于各种操作系统。请继续阅读以获取有关如何在 Fedora 中获取最新 Ansible,以及它的一些更改和改进,以及如何使用它。
发布版本和功能
Ansible 2.8 最近发布了,其中包含许多修复、功能和增强。仅仅几天之后,它就可在 Fedora 29 和 30 以及 EPEL 中获取。两周前发布了后续版本 2.8.1。同样,新版本在几天内就可以在 Fedora 中获取。
使用 sudo 能够非常容易地从官方仓库安装:
$ sudo dnf -y install ansible
2.8 版本有很长的更新列表,你可以在 2.8 的迁移指南中阅读查看。但其中包含了一些好东西,比如 Python 解释器发现功能 。Ansible 2.8 现在会试图找出哪个 Python 是它所运行的平台的首选版本。如果失败,Ansible 会使用后备列表。但是,你仍然可以使用变量 ansible_python_interpreter 来设置 Python 解释器。
另一个变化使 Ansible 在各个平台上更加一致。由于 sudo 专用于 UNIX/Linux,而其他平台并没有,因此现在在更多地方使用 become。这包括了命令行开关。例如,-ask-sudo-pass 已变成了 -ask-become-pass,提示符也变成了 BECOME password:。
2.8 和 2.8.1 版本中还有许多其他功能。有关所有细节,请查看 GitHub 上的官方更新日志。
使用 Ansible
也许你不确定 Ansible 是否可以实际使用。别担心,你并不是唯一一个这样想的,因为它太强大了。但事实证明,它并不难以使用,在一个家庭内的几台电脑(甚至一台电脑)上设置都可以。
Modularity使 Fedora 能够在仓库中提供替代版本的 RPM 软件包。每个 Fedroa 版本可以原生构建不同应用、语言运行时和工具版本的多个版本。
Fedora Magazine 大约一年前就写了 Fedora 28 服务器版的模块化。那时,它只是一个有附加内容的可选仓库,并且明确只支持服务器版。到目前为止,它已经发生了很多变化,现在模块化是 Fedora 发行版的核心部分。一些软件包已完全变成模块。在编写本文时,Fedora 30 的 49,464 个二进制 RPM 软件包中的 1,119(2.26%)来自模块(关于这个数字的更多信息)。
模块化基础知识
由于许多软件包有不同的版本会让人难以承受(并且难以管理),所以包被分组为模块,它可以代表一个应用程序、一个语言运行时或任何其他合理的组。
模块通常有多个流,这通常代表软件的主要版本。它可以并行使用,但在给定系统上只能安装每个模块的一个流。
为了不让用户因为太多选择而难以承受,每个 Fedora 版本都有一组默认,因此只需要在需要时做出决定。
最后,为了简化安装,可以根据用例使用预定义的 profile 选择性地安装模块。例如,数据库模块可以作为客户端,服务端或同时安装。
实际使用模块化
当你在 Fedora 系统上安装 RPM 软件包时,它很可能它来自模块流。你可能没有注意到的原因之一是模块化的核心原则之一是在你探究之前保持不可见。
让我们比较以下两种情况。首先,安装流行的 i3 平铺窗口管理器,然后安装极简化的 dwm 窗口管理器:
$ sudo dnf install i3
...
Done!
正如所料,上面的命令会在系统上安装 i3 包及其依赖项。这里没有其他事情发生。但另一个会怎么样?
$ sudo dnf install dwm
...
Enabling module streams:
dwm 6.1
...
Done!
感觉是一样的,但后台发生了一些事情 。它启用了默认的 dwm 模块流(6.1),并且安装了模块中的 dwm 包。
为了保持透明,输出中有一条关于模块自动启用的消息。但除此之外,用户不需要了解模块化的任何信息,以便按照他们一贯的方式使用他们的系统。
但如果他们使用模块化方式呢?让我们看看如何安装不同版本的 dwm。
使用以下命令查看可用的模块流:
$ sudo dnf module list
...
dwm latest ...
dwm 6.0 ...
dwm 6.1 [d] ...
dwm 6.2 ...
...
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
输出显示 dwm 模块有四个流,6.1 是默认值。
要安装不同版本的 dwm 包,例如,安装 6.2 的流。启用它,然后使用以下两个命令安装软件包:
$ sudo dnf module enable dwm:6.2
...
Enabling module streams:
dwm 6.2
...
Done!
$ sudo dnf install dwm
...
Done!
最后,让我们看下配置,以 PostgreSQL 为例。
$ sudo dnf module list
...
postgresql 9.6 client, server ...
postgresql 10 client, server ...
postgresql 11 client, server ...
...
要安装 PostgreSQL 11 服务端,使用以下命令:
$ sudo dnf module install postgresql:11/server
请注意,除了启用流之外,我们可以指定配置从而使用一条命令安装模块。
可以立即安装多个版本。要添加客户端工具,使用下面的命令:
$ sudo dnf module install postgresql:11/client
还有许多其他带有多个流的模块可供选择。在编写本文时,Fedora 30 中有 83 个模块流。包括两个版本的 MariaDB、三个版本的 Node.js、两个版本的 Ruby 等等。