使用 Ansible 自动化在我的 Mac 上安装软件

在本演示中,我使用 Ansible 在 macOS 上安装了我必备的写作工具之一 Asciidoctor。
3 位读者喜欢这篇文章。
Getting started with Perlbrew

freephotocc 通过 Pixabay CC0

在大多数系统中,有几种方法可以安装软件。您使用哪种方法取决于您要安装的应用程序的来源。有些软件以可下载的向导的形式提供,引导您完成安装过程,而另一些软件只是您可以直接下载并运行的文件。

在 macOS 上,可以通过 Unix 命令(如 HomebrewMacPorts)获得大量的开源应用程序库。使用命令进行软件安装的优点在于您可以自动化它们,而我最喜欢的自动化工具是 Ansible。将 Ansible 与 Homebrew 结合使用是一种高效且可重复的方式来安装您最喜欢的开源应用程序。

本文演示了如何使用 Ansible 在 macOS 上安装我必备的写作工具之一 Asciidoctor。Asciidoctor 是一个开源文本处理器,这意味着它接收以特定格式(在本例中为 Asciidoc)编写的文本,并将其转换为其他流行的格式(例如 HTML、PDF 等)以供发布。Ansible 是一个开源、无代理且易于理解的自动化工具。通过使用 Ansible,您可以简化和自动化您的日常任务。

注意:虽然此示例使用 macOS,但此信息适用于所有与 Ansible 兼容的平台上的各种开源软件(包括 Linux、Windows、Mac 和 BSD)。

安装 Ansible

您可以使用 Python 包管理器 pip 安装 Ansible。首先,安装 pip

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python ./get-pip.py

接下来,使用 pip 安装 Ansible

$ sudo python -m pip install --user ansible

使用 Homebrew 安装 Ansible

或者,您可以使用 Homebrew 包管理器 安装 Ansible。如果您已经使用 pip 安装了 Ansible,请跳过此步骤,因为您已经实现了相同的结果!

$ brew install ansible

配置 Ansible

要设置 Ansible,您首先必须创建一个清单文件,指定您希望 Ansible 脚本(称为playbook)操作的计算机。

在终端中或使用您喜欢的文本编辑器创建一个清单文件。在终端中,键入以下命令,将 your-host-name 替换为您计算机的名称

$ cat << EOF >> inventory
[localhost\]
your-host-name
EOF

如果您不知道计算机的主机名,可以使用 hostname 命令获取它。或者,转到 Apple 菜单,打开系统偏好设置,然后单击共享。您计算机的主机名位于共享偏好设置窗格顶部的计算机名称下方。

使用 Ansible 安装 Asciidoctor

在此示例中,我仅在正在使用的计算机上安装应用程序,该计算机也称为localhost。首先,创建一个 playbook.yml 文件并复制以下内容

- name: Install software
  hosts: localhost 
  become: false 
  vars:
    Brew_packages: 
      - asciidoctor 
    install_homebrew_if_missing: false

在第一个 YAML 序列中,您命名 playbook (Install software),提供目标 (localhost),并确认不需要管理权限。您还创建了两个变量,您可以在 playbook 后面使用:Brew_packagesinstall_homebrew_if_missing

接下来,创建一个名为 pre_tasks 的 YAML 映射,其中包含确保在运行 playbook 的计算机上安装 Homebrew 本身的逻辑。通常,Ansible 可以验证是否安装了应用程序,但是当该应用程序是帮助 Ansible 首先做出该决定的包管理器时,您必须手动进行操作:

pre_tasks:
      - name: Ensuring Homebrew Is Installed
        stat:
          path: /usr/local/bin/brew
        register: homebrew_check

      - name: Fail If Homebrew Is Not Installed and install_homebrew_if_missing Is False
        fail:
          msg: Homebrew is missing, install from https://brew.sh.cn
        when:
          - not homebrew_check.stat.exists
          - not install_homebrew_if_missing

      - name: Installing Homebrew
        shell: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
        when:
          - not homebrew_check.stat.exists
          - install_homebrew_if_missing

最后,创建一个名为 tasks 的 YAML 映射,其中包含对 Homebrew 模块(它是 Ansible 的内置模块)的调用,以便在尚未安装 Asciidoctor 的情况下安装它

  tasks:
    - name: Install Asciidoctor
      homebrew: 
        name: asciidoctor
        state: present

运行 Ansible playbook

您可以使用 ansible-playbook 命令运行 Ansible playbook

$ ansible-playbook -i inventory playbook.yml

-i 选项指定设置 Ansible 时创建的 inventory 文件。您可以选择添加 -vvvv 来指示 Ansible 在运行 playbook 时格外详细,这在进行故障排除时非常有用。

在 playbook 运行后,验证 Ansible 是否已成功在您的主机上安装 Asciidoctor

$ asciidoctor -v
Asciidoctor X.Y.Z https://asciidoctor.org
 Runtime Environment (ruby 2.6.8p205 (2021-07-07 revision 67951)...

适应自动化

您可以在本文的示例 playbook 中将更多软件添加到 Brew_packages 变量中。只要有可用的 Homebrew 包,Ansible 就会安装它。Ansible 仅在需要时才采取行动,因此您可以将安装的所有软件包都留在 playbook 中,从而有效地构建在计算机上期望的所有软件包的清单。

如果您发现自己在使用另一台计算机,可能是因为您在工作或购买了一台新计算机,您可以一次性快速安装所有相同的应用程序。更好的是,如果您切换到 Linux,Ansible playbook 仍然有效,可以通过使用 Linux 版 Homebrew 或通过进行一些简单的更新来切换到其他包管理器。

接下来阅读什么
My photo
Servesha 是一名技术作家。她对 Linux、容器和诗歌充满热情。她为 OpenShift 写作。

评论已关闭。

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.