在大多数系统中,有几种方法可以安装软件。您使用哪种方法取决于您要安装的应用程序的来源。有些软件以可下载的向导的形式提供,引导您完成安装过程,而另一些软件只是您可以直接下载并运行的文件。
在 macOS 上,可以通过 Unix 命令(如 Homebrew 和 MacPorts)获得大量的开源应用程序库。使用命令进行软件安装的优点在于您可以自动化它们,而我最喜欢的自动化工具是 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_packages
和install_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 或通过进行一些简单的更新来切换到其他包管理器。
评论已关闭。