安装 Ansible
Ansible 是一种无代理(agentless)自动化工具,您只需将其安装在单个主机(称为控制节点)上即可。
从控制节点出发,Ansible 可以通过 SSH、Powershell 远程处理以及其他多种传输方式,远程管理整套设备和机器(称为受控节点)。这一切都通过简单的命令行界面完成,无需数据库或守护进程。
控制节点要求
对于您的控制节点(运行 Ansible 的机器),您几乎可以使用任何安装了 Python 的类 UNIX 机器。这包括 Red Hat、Debian、Ubuntu、macOS、BSD 以及在 Windows Subsystem for Linux (WSL) 发行版下的 Windows 系统。原生 Windows(无 WSL)不支持作为控制节点;更多信息请参阅 Matt Davis 的博客文章。
受控节点要求
受控节点(被 Ansible 管理的机器)不需要安装 Ansible,但需要 Python 来运行 Ansible 生成的 Python 代码。受控节点还需要一个用户账户,该账户能够通过 SSH 连接到节点并具备交互式 POSIX shell。
注意
模块要求可能存在例外情况。例如,网络模块不需要在受控设备上安装 Python。请参阅您所使用模块的相关文档。
节点要求摘要
您可以在 ansible-core 控制节点 Python 支持 和 ansible-core 支持矩阵 章节中找到有关每个 Ansible 版本的控制节点和受控节点要求(包括 Python 版本)的详细信息。
选择要安装的 Ansible 包和版本
Ansible 的社区包主要有两种分发方式
ansible-core:一个极简的语言和运行时包,包含一组 内置模块和插件。ansible:一个规模更大的“全能”包,增加了社区精心挑选的 Ansible 集合 (Collections),用于自动化各种设备。
选择适合您需求的包。以下说明使用 ansible 作为包名称,但如果您倾向于从最小化安装开始并单独安装所需的 Ansible 集合,则可以将其替换为 ansible-core。
ansible 或 ansible-core 包可能在您操作系统的包管理器中可用,您可以自由使用您喜欢的方法进行安装。更多信息请参见 在特定操作系统上安装 Ansible 指南。这些安装说明仅涵盖使用 pip 安装 python 包的官方支持方法。
有关包中包含的 ansible-core 版本,请参阅 Ansible 包发布状态表。
使用 pipx 安装和升级 Ansible
在某些系统上,由于操作系统开发人员的限制,可能无法使用 pip 安装 Ansible。在这种情况下,pipx 是一个广泛可用的替代方案。
这些说明不包含安装 pipx 的步骤;如果需要相关指导,请继续参考 pipx 安装说明以获取更多信息。
安装 Ansible
在您的环境中使用 pipx 安装完整的 Ansible 包
$ pipx install --include-deps ansible
您可以安装最小化的 ansible-core 包
$ pipx install ansible-core
或者,您可以安装特定版本的 ansible-core
$ pipx install ansible-core==2.12.3
升级 Ansible
要将现有的 Ansible 安装升级到最新发布版本
$ pipx upgrade --include-injected ansible
安装额外的 Python 依赖项
要安装可能需要的额外 Python 依赖项,以下是以安装 argcomplete Python 包为例的说明
$ pipx inject ansible argcomplete
包含 --include-apps 选项,使额外 Python 依赖项中的应用程序在您的 PATH 中可用。这允许您从 shell 执行这些应用程序的命令。
$ pipx inject --include-apps ansible argcomplete
如果您需要从 requirements 文件安装依赖项(例如在安装 Azure 集合时),可以使用 runpip。
$ pipx runpip ansible install -r ~/.ansible/collections/ansible_collections/azure/azcollection/requirements.txt
使用 pip 安装和升级 Ansible
定位 Python
找到并记录您希望用于运行 Ansible 的 Python 解释器的路径。以下说明将此 Python 称为 python3。例如,如果您确定要使用位于 /usr/bin/python3.9 的 Python 来安装 Ansible,请指定该路径而不是 python3。
确保 pip 可用
要验证您首选的 Python 是否已经安装了 pip
$ python3 -m pip -V
如果一切正常,您应该看到类似以下的内容
$ python3 -m pip -V
pip 21.0.1 from /usr/lib/python3.9/site-packages/pip (python 3.9)
如果是这样,则 pip 可用,您可以继续执行 下一步。
如果您看到类似 No module named pip 的错误,您需要在继续之前在选定的 Python 解释器下安装 pip。这可能意味着需要安装额外的操作系统包(例如 python3-pip),或者通过运行以下命令直接从 Python 打包权威机构安装最新的 pip
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python3 get-pip.py --user
在运行 Ansible 之前,您可能还需要执行一些额外的配置。有关更多信息,请参阅关于 安装到用户站点 的 Python 文档。
安装 Ansible
在选定的 Python 环境中使用 pip 为当前用户安装完整的 Ansible 包
$ python3 -m pip install --user ansible
您可以为当前用户安装最小化的 ansible-core 包
$ python3 -m pip install --user ansible-core
或者,您可以安装特定版本的 ansible-core
$ python3 -m pip install --user ansible-core==2.12.3
升级 Ansible
要将此 Python 环境中现有的 Ansible 安装升级到最新发布版本,只需在上述命令中添加 --upgrade 即可
$ python3 -m pip install --upgrade --user ansible
将 Ansible 安装到容器中
与其手动安装 Ansible 内容,不如直接构建一个执行环境(Execution Environment)容器镜像,或者使用可用的社区镜像作为您的控制节点。详情请参阅 执行环境入门。
为开发而安装
如果您正在测试新功能、修复 Bug 或以其他方式与开发团队合作修改核心代码,您可以安装并运行来自 GitHub 的源码。
注意
仅当您正在修改 ansible-core 或尝试开发中的功能时,才应安装并运行 devel 分支。这是一个变化极快的代码库,可能随时变得不稳定。
有关参与 Ansible 项目的更多信息,请参阅 Ansible 社区指南。
有关创建 Ansible 模块和集合的更多信息,请参阅 开发者指南。
使用 pip 从 GitHub 安装 devel
您可以使用 pip 直接从 GitHub 安装 ansible-core 的 devel 分支
$ python3 -m pip install --user https://github.com/ansible/ansible/archive/devel.tar.gz
您可以将上述 URL 中的 devel 替换为 GitHub 上的任何其他分支或标签,以安装旧版本的 Ansible、带标记的 alpha 或 beta 版本以及发布候选版本。
从克隆仓库运行 devel 分支
ansible-core 可以轻松地从源码运行。您不需要 root 权限即可使用它,并且实际上无需安装任何软件。无需设置守护进程或数据库。
克隆
ansible-core仓库$ git clone https://github.com/ansible/ansible.git $ cd ./ansible
设置 Ansible 环境
使用 Bash
$ source ./hacking/env-setup
使用 Fish
$ source ./hacking/env-setup.fish
要抑制虚假警告/错误,请使用
-q$ source ./hacking/env-setup -q
安装 Python 依赖项
$ python3 -m pip install --user -r ./requirements.txt
在本地机器上更新
ansible-core的devel分支使用 pull-with-rebase,以便重放任何本地更改。
$ git pull --rebase
确认您的安装
您可以通过检查版本来测试 Ansible 是否安装正确
$ ansible --version
此命令显示的版本对应于已安装的相关 ansible-core 包。
要检查已安装的 ansible 包的版本
$ ansible-community --version
添加 Ansible 命令 shell 自动补全
您可以通过安装名为 argcomplete 的可选依赖项来添加 Ansible 命令行工具的 shell 自动补全功能。它支持 bash,并对 zsh 和 tcsh 提供有限支持。
有关安装和配置的更多信息,请参阅 argcomplete 文档。
安装 argcomplete
如果您选择了 pipx 安装说明
$ pipx inject --include-apps ansible argcomplete
如果您选择了 pip 安装说明
$ python3 -m pip install --user argcomplete
配置 argcomplete
有两种方法可以配置 argcomplete 以允许 Ansible 命令行工具进行 shell 补全:全局配置或单命令配置。
全局配置
全局补全需要 bash 4.2。
$ activate-global-python-argcomplete --user
这将把一个 bash 补全文件写入用户目录。使用 --dest 更改位置,或使用 sudo 全局设置补全。
单命令配置
如果您没有 bash 4.2,则必须独立注册每个脚本。
$ eval $(register-python-argcomplete ansible)
$ eval $(register-python-argcomplete ansible-config)
$ eval $(register-python-argcomplete ansible-console)
$ eval $(register-python-argcomplete ansible-doc)
$ eval $(register-python-argcomplete ansible-galaxy)
$ eval $(register-python-argcomplete ansible-inventory)
$ eval $(register-python-argcomplete ansible-playbook)
$ eval $(register-python-argcomplete ansible-pull)
$ eval $(register-python-argcomplete ansible-vault)
您应该将上述命令放入 shell 的配置文件中,例如 ~/.profile 或 ~/.bash_profile。
在 zsh 或 tcsh 中使用 argcomplete
请参阅 argcomplete 文档。
另请参阅
- 即席命令(ad hoc commands)介绍
基本命令示例
- 使用 Playbook
学习 Ansible 的配置管理语言
- 安装 Ansible 时,如何处理 Ansible 包依赖项所需的软件包依赖问题?
与 Ansible 安装相关的常见问题解答 (FAQ)
- 论坛
加入 Ansible 社区论坛以获取帮助并分享见解
- 实时聊天
如何加入 Ansible 聊天频道