This repository provides Ansible modules for configuring Citrix NetScaler instances. It uses the NITRO REST API. All form factors of Citrix NetScaler are supported.
The code here should be considered alpha quality and may be broken at times due to experiments and refactoring. Tagged releases should be stable. The most stable version will be availble with Ansible automatically.
Documentation is hosted at readthedocs.
Currently the following modules are implemented
- netscaler_cs_action. Configure content switching actions.
- netscaler_cs_policy. Configure content switching policies
- netscaler_cs_vserver. Configure content swtiching virtual servers.
- netscaler_lb_monitor. Configure load balancing monitors.
- netscaler_lb_vserver. Configure load balancing virtual servers.
- netscaler_server. Configure server instances.
- netscaler_service. Configure NetScaler services.
- netscaler_servicegroup. Configure NetScaler service groups.
- netscaler_ssl_cert_key. Configure NetScaler ssl certs
- netscaler_gslb_vserver. Configure GSLB vserver
- netscaler_gslb_service. Configure GSLB service
- netscaler_gslb_site. Configure GSLB sites
- NITRO Python SDK (available from https://www.citrix.com/downloads/netscaler-adc or from the "Downloads" tab of the Netscaler GUI)
- Ansible
- Python 2.7 or 3.x
Use of a python virtualenv during installation is recommended.
- Activate the virtualenv (
source bin/activate
) - Install all dependencies by running
pip install -r requirements.test.txt
from the project checkout. - Install the netscaler modules using
python install.py
- Install Ansible (
sudo pip install ansible
) - Install NetScaler SDK (
pip install deps/nitro-python-1.0_kamet.tar.gz
) - Install NetScaler modules (
sudo python install.py
). It tries to find the ansible installation directory and then copies the module files to the appropriate places.
If the ansible installation is on a dirctory that requires root access, the install script should be run with root privileges. If the isntallation script fails and you know where ansible is located on your system you can do a manual installation. Just copy the contents of the ansible-modules directory to the extras module directory and the netscaler.py file to the module_utils directory of ansible.
The modules are developed against the latest development version of ansible.
Some changes made by the core ansible developers caused the modules to lose backwards portability to ansible 2.4.
If you need the latest version of the modules present in this repository and are restricted to using ansible 2.4 you can use the backport branch backport_2.4 which contains the fixes needed for the modules to run under ansible 2.4 while also containing the latest changes.
This branch will be kept up to date with the master branch.
All modules are intended to be run on the ansible control machine or a jumpserver with access to the Citrix NetScaler appliance.
To do this you need to use the local_action
or the delegate_to
options in your playbooks.
There are sample playbooks in the samples
directory.
Detailed documentation for each module can be found in the htmldoc directory.
Documentation regarding the Citrix NetScaler appliance configuration in general can be found at the following link, http://docs.citrix.com/en-us/netscaler/11-1.html
There is also the ability to proxy module NITRO calls through a MAS to a target Netscaler.
In order to do that you need a NITRO Python SDK that has the MAS proxy calls capability and also follow these 2 steps.
- First acquire a nitro authentication token with the use of the
netscaler_nitro_request
mas_login
operation. - Next all subsequent module invocations should have the
mas_proxy_call
option set totrue
, replace thenitro_user
andnitro_pass
authentication options with thenitro_auth_token
acquired from the previous step and finally include theinstance_ip
option to instruct MAS to which netscaler to proxy the calls.
A sample playbook is provided in the samples directory. mas_proxied_server.yaml
-
ansible-modules.
Contains all the ansible modules available. These are the files that must be installed on an ansible control node in order for the functionality to be present -
tests.
Contains the test suite for the modules. It requires some extra dependencies than the plain modules in order to run. -
samples.
Contains some sample playbooks that combine more than one modules together to achieve a desired configuration. Examples of the modules' usage are also contained in the EXAMPLES section of the modules themselves. -
htmldoc.
Contains the html documentation for each module. -
utils.
Contains utilities mainly used for the authoring of the modules and are not relevant to the end user. -
documentation_fragments.
Contains the Citrix NetScaler specific documentation files for ansible. -
run_tests.py
. Top level script to run all the tests.
GPL V3 See LICENSE
COPYRIGHT 2017 CITRIX Systems Inc
Pull requests and issues are welcome.