nginxinc.nginx
Ansible NGINX 角色
此角色会在目标主机上安装 NGINX(NGINX 开源版)、NGINX Plus、NGINX Agent 和/或 NGINX Amplify 代理。
[!重要] 此角色仍在积极开发中,可能会存在未识别的问题,角色变量可能会随着开发进展而变化。
角色需求
NGINX
根据你的目标 NGINX 使用情况,可能需要在能够使用该角色之前获取许可证或 API 密钥/令牌:
产品 | 要求 |
---|---|
NGINX | 无 |
NGINX Plus | NGINX Plus 许可证(许可证密钥和 crt 文件) |
NGINX Agent | 兼容的控制平面和(可选)NGINX One SaaS 控制台数据平面令牌 |
NGINX Amplify | 在 NGINX Amplify SaaS 控制台中找到的 API 密钥 |
Ansible
如果你想使用此角色,需要使用支持的 Ansible 核心版本和 Jinja2 以及一些 Ansible 集合。
为了方便使用,可以在 Ansible 主机上运行以下四个命令来安装和/或升级 Ansible 核心、Jinja2 及上述 Ansible 集合:
pip install --upgrade -r https://raw.githubusercontent.com/nginxinc/ansible-role-nginx/main/.github/workflows/requirements/requirements_ansible.txt
curl -O https://raw.githubusercontent.com/nginxinc/ansible-role-nginx/main/.github/workflows/requirements/requirements_collections.yml
ansible-galaxy install --force -r requirements_collections.yml
rm -f requirements_collections.yml
这将确保你以经过全面测试的版本部署/运行此角色。
Ansible 核心
此角色大约是在 维护的 Ansible 核心和 Python 版本上进行开发和测试的。
注意: Ansible
2.18
不再支持yum
模块,因此在 Amazon Linux 2 达到 EoL 之前不支持此角色。使用 Ansible 核心时,您还需要安装以下 Ansible 集合:
--- collections: - name: ansible.posix version: 1.5.4 - name: community.general version: 9.2.0 - name: community.crypto # 仅在计划安装 NGINX Plus 时需要 version: 2.21.1 - name: community.docker # 仅在计划使用 Molecule 时需要(见下文) version: 3.11.0
需要使用 Ansible 的
become
参数作为 root 用户运行此角色。确保在目标主机上设置了适当的权限。可以在 Ansible 文档中查找如何安装 Ansible 核心的说明。
可以在 Ansible collections 指南中查找如何安装 Ansible 集合的说明。
[!提示] 如果你不想管理个别集合,还可以选择安装 Ansible 社区发行版(仍称为 Ansible 而非 Ansible 核心)。
Jinja2
- 此角色使用 Jinja2 模板。Ansible 核心默认安装 Jinja2,但根据你的安装和/或升级路径,可能正在运行旧版本的 Jinja2。此角色正常运行所需的 Jinja2 最低版本为
3.1
。 - 可以在 Jinja2 网站 上找到安装 Jinja2 的说明。
测试套件(可选)
如果想为该角色作贡献,还需要安装 Ansible Lint 和 Molecule。
Ansible Lint(可选)
Ansible Lint 用于检查角色是否符合 Ansible 最佳实践和潜在的 Ansible/YAML 问题。
可以在 Ansible Lint 网站 中找到安装 Ansible Lint 的说明。
安装后,使用 Ansible Lint 非常简单,运行:
ansible-lint
为了方便使用,可以在 Ansible 主机上运行以下命令来安装和/或升级 Ansible Lint:
pip install -r https://raw.githubusercontent.com/nginxinc/ansible-role-nginx/main/.github/workflows/requirements/requirements_ansible_lint.txt
Molecule(可选)
Molecule 用于测试角色的各种功能。
可以在 Molecule 网站 中找到安装 Molecule 的说明。还需要安装 Molecule 插件包和 Docker Python SDK。
要运行任何 NGINX Plus Molecule 测试,您必须先将 NGINX Plus 许可证复制到角色的
files/license
目录中。你也可以将 NGINX Plus 存储库证书和密钥添加到本地环境。运行以下命令将这些文件导出为 base64 编码变量并执行 Molecule 测试:
export NGINX_CRT=$( cat <path to your certificate file> | base64 ) export NGINX_KEY=$( cat <path to your key file> | base64 ) molecule test -s plus
为了方便使用,可以在 Ansible 主机上运行以下命令来安装和/或升级 Molecule、Molecule 插件包以及 Docker Python SDK:
pip install --upgrade -r https://raw.githubusercontent.com/nginxinc/ansible-role-nginx/main/.github/workflows/requirements/requirements_molecule.txt
角色安装
此角色可以通过 Ansible Galaxy(Ansible 社区市场)或克隆此仓库进行安装。安装后,您需要使用 roles 关键字、import_role 模块或 include_role 模块 将角色包含在 Ansible 剧本中。
Ansible Galaxy
要在系统上安装该角色的最新稳定版本,请使用:
ansible-galaxy install nginxinc.nginx
或者,如果你已经安装了该角色,可以使用以下命令将角色更新到最新版本:
ansible-galaxy install -f nginxinc.nginx
要使用该角色,请在剧本中包含以下任务:
- name: Install NGINX
ansible.builtin.include_role:
name: nginxinc.nginx
Git
要从 GitHub 拉取角色的最新边缘提交,请使用:
git clone https://github.com/nginxinc/ansible-role-nginx.git
要使用该角色,请在剧本中包含以下任务:
- name: Install NGINX
ansible.builtin.include_role:
name: <path/to/repo> # 例如,如果在项目的 roles 目录中克隆仓库,则为 <roles/ansible-role-nginx>
支持的平台
NGINX Ansible 角色支持几乎所有 NGINX 开源版、NGINX Plus、NGINX Agent 和 NGINX Amplify 代理 支持的平台:
NGINX 开源版
AlmaLinux:
- 8
- 9
Alpine:
- 3.17
- 3.18
- 3.19
- 3.20
Amazon Linux:
- 2
- 2023
Debian:
- bullseye (11)
- bookworm (12)
Oracle Linux:
- 8
- 9
Red Hat:
- 8
- 9
Rocky Linux:
- 8
- 9
SUSE/SLES:
- 12
- 15
Ubuntu:
- focal (20.04)
- jammy (22.04)
- mantic (23.10)
- noble (24.04)
NGINX Plus
AlmaLinux:
- 8
- 9
Alpine:
- 3.16
- 3.17
- 3.18
- 3.19
Amazon Linux:
- 2
- 2023
Debian:
- bullseye (11)
- bookworm (12)
FreeBSD:
- 13
- 14
Oracle Linux:
- 8.1+
- 9
Red Hat:
- 8.1+
- 9
Rocky Linux:
- 8
- 9
SUSE/SLES:
- 12
- 15
Ubuntu:
- focal (20.04)
- jammy (22.04)
- noble (24.04)
NGINX Agent
AlmaLinux:
- 8
- 9
Alpine:
- 3.17
- 3.18
- 3.19
- 3.20
Amazon Linux:
- 2
- 2023
Debian:
- bullseye (11)
- bookworm (12)
FreeBSD:
- 13
- 14
Oracle Linux:
- 8
- 9
Red Hat:
- 8
- 9
Rocky Linux:
- 8
- 9
SUSE/SLES:
- 12
- 15
Ubuntu:
- focal (20.04)
- jammy (22.04)
- noble (24.04)
NGINX Amplify 代理
Amazon Linux:
- 2
Debian:
- buster (10)
- bullseye (11)
Red Hat:
- 8
- 9
Ubuntu:
- bionic (18.04)
- focal (20.04)
- jammy (22.04)
[!警告] 使用此角色在“兼容”但不支持的平台上编译 NGINX 开源版、使用各自的发行版包管理器安装 NGINX,或在 BSD 系统上安装 NGINX 开源版,风险自负。
角色变量
此角色有多个变量。所有这些变量的描述和默认值可以在 defaults/main/
目录中的以下文件中找到:
名称 | 描述 |
---|---|
main.yml |
NGINX 安装变量 |
agent.yml |
NGINX Agent 安装变量 |
amplify.yml |
NGINX Amplify 代理安装变量 |
bsd.yml |
BSD 安装变量 |
logrotate.yml |
日志轮转配置变量 |
selinux.yml |
SELinux 配置变量 |
systemd.yml |
Systemd 配置变量 |
同样,预设变量的描述和默认值可以在 vars/
目录中的以下文件中找到:
名称 | 描述 |
---|---|
main.yml |
支持的 NGINX 平台、模块和 Linux 安装变量列表 |
示例剧本
功能齐全的剧本示例可以在 molecule/
文件夹中的以下文件中找到:
名称 | 描述 |
---|---|
agent/converge.yml |
安装和配置 NGINX Agent 以连接到 F5 分布式云上的 NGINX One SaaS 控制平面 |
amplify/converge.yml |
安装和配置 NGINX Amplify 代理 |
default/converge.yml |
安装特定版本的 NGINX,安装各种 NGINX 支持的模块,调整 systemd 设置并设置日志轮转 |
distribution/converge.yml |
从发行版的包存储库而非 NGINX 的包存储库安装 NGINX |
downgrade/converge.yml |
降级到特定版本的 NGINX |
downgrade-plus/converge.yml |
降级到特定版本的 NGINX Plus |
plus/converge.yml |
安装 NGINX Plus 及各种 NGINX Plus 支持的模块 |
source/converge.yml |
从源代码安装 NGINX |
stable/converge.yml |
安装最新稳定版本的 NGINX |
uninstall/converge.yml |
卸载 NGINX |
uninstall-plus/converge.yml |
卸载 NGINX Plus |
upgrade/converge.yml |
升级 NGINX |
upgrade-plus/converge.yml |
升级 NGINX Plus |
version/converge.yml |
安装特定版本的 NGINX 和各种 NGINX 模块 |
[!注意] 如果通过 Ansible Galaxy 安装该仓库,则需要在示例剧本中将
include_role
变量从ansible-role-nginx
替换为nginxinc.nginx
。
其他 NGINX Ansible 集合和角色
您可以在 此处 找到 Ansible NGINX 核心集合的角色,用于安装和配置 NGINX 开源版、NGINX Plus 和 NGINX App Protect。
您可以在 此处 找到用于配置 NGINX 的 Ansible NGINX 配置角色。
您可以在 此处 找到用于安装和配置 NGINX App Protect WAF 和 NGINX App Protect DoS 的 Ansible NGINX App Protect 角色。
您可以在 此处 找到用于安装 NGINX Unit 的 Ansible NGINX Unit 角色。
许可证
作者信息
© F5, Inc. 2018 - 2024
Official Ansible role for installing NGINX
ansible-galaxy install nginxinc.nginx