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 PlusNGINX AgentNGINX 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 角色。

许可证

Apache 许可证,版本 2.0

作者信息

Alessandro Fael Garcia

Grzegorz Dzien

Tom Gamull

© F5, Inc. 2018 - 2024

安装
ansible-galaxy install nginxinc.nginx
许可证
apache-2.0
下载
3.5M
拥有者
Welcome to this part of the NGINX open source world. We're constantly expanding our ecosystem designed to help you create the best web and app experience around