NGINX, Inc. has been hard at work following the release of the original, separate Ansible roles for the open source NGINX software and NGINX Plus. We are now releasing a new, unified NGINX Ansible role.
This new Ansible role replaces the previous separate Ansible roles, which are no longer being maintained or updated. We will continue to develop the new Ansible role to support customer use cases as they change.
The new Ansible role can install either open source NGINX or NGINX Plus and has additional features, including:
- Uploading NGINX configuration files from your host to the NGINX host
- Dynamically creating NGINX configurations based on user variables
- Choosing between the stable and mainline branches of open source NGINX
- Enabling metrics collection with the NGINX
stub_statusmodule or NGINX Plus API module, which replaces and deprecates the Status module in NGINX Plus R13 and later
- Enabling the NGINX Plus live activity monitoring dashboard
- Installing NGINX Amplify on your host system
The new NGINX Ansible role is hosted at Ansible Galaxy, a free site for sharing, finding, and downloading roles. Downloading Ansible roles from Ansible Galaxy is a great way to jump‑start your automation projects.
Installing the new NGINX Ansible role from Ansible Galaxy is very simple. Run:
$ ansible-galaxy install nginxinc.nginx
You can then deploy NGINX or NGINX Plus on a local machine with a simple Ansible playbook:
--- - hosts: localhost remote_user: root roles: - nginxinc.nginx
You can also configure Ansible to deploy to a cloud provider using a dynamic inventory. For sample instructions for an AWS EC2 inventory, see the AWS blog.
For example, the following playbook deploys NGINX to a dynamic inventory containing the
--- - hosts: tag_user_ubuntu become: true remote_user: ubuntu roles: - nginxinc.nginx
Deploying NGINX Plus within a cloud provider additionally requires you to define the location of the certificate and key for your NGINX Plus subscription. The recommended pathway for the license is the files subfolder within the NGINX Ansible role. To use a different location, specify it using Ansible variables.
--- - hosts: tag_user_ubuntu become: true remote_user: ubuntu roles: - nginxinc.nginx vars: type: plus license: certificate: /path/to/certificate key: /path/to/key
For more details, including the list of variables you can specify, visit the GitHub repository for the NGINX Ansible role. We also welcome your questions and contributions on GitHub.