Nutanix Ansible
Official nutanix ansible collection
About
Nutanix ansible collection nutanix.ncp is the official Nutanix ansible collection to automate Nutanix Cloud Platform (ncp).
It is designed keeping simplicity as the core value. Hence it is
- Easy to use
- Easy to develop
Checkout this blog for getting started with nutanix ansible module.
Version compatibility
Ansible
This collection and examples has been tested against following versions :
- ansible==5.0.1
- ansible-core==2.12.3
Python
This collection requires Python 2.7 or greater
Prism Central
For the 1.1.0 release of the ansible plugin it will have N-2 compatibility with the Prism Central APIs. This release was tested against Prism Central versions pc2022.1.0.2, pc.2021.9.0.5 and pc.2021.8.0.1.
For the 1.2.0 release of the ansible plugin it will have N-2 compatibility with the Prism Central APIs. This release was tested against Prism Central versions pc.2022.4, pc2022.1.0.2 and pc.2021.9.0.5.
For the 1.3.0 release of the ansible plugin it will have N-2 compatibility with the Prism Central APIs. This release was tested against Prism Central versions pc.2022.4, pc2022.1.0.2 and pc.2021.9.0.4.
For the 1.4.0 release of the ansible plugin it will have N-2 compatibility with the Prism Central APIs. This release was tested against Prism Central versions pc.2022.4, pc2022.1.0.2 and pc.2021.9.0.4.
For the 1.5.0 release of the ansible plugin it will have N-2 compatibility with the Prism Central APIs. This release was tested against Prism Central versions pc.2022.6, pc.2022.4.0.2 and pc2022.1.0.2.
For the 1.7.0 release of the ansible plugin it will have N-2 compatibility with the Prism Central APIs. This release was tested against Prism Central versions pc.2022.6, pc.2022.4 and pc2022.1.0.2.
For the 1.8.0-beta.1 release of the ansible plugin it will have N compatibility with the Prism Central APIs. This release was tested against Prism Central version pc.2022.6 .
Notes:
- Static routes module (ntnx_static_routes) is supported for PC versions >= pc.2022.1
-
Adding cluster references in projects module (ntnx_projects) is supported for PC versions >= pc.2022.1
-
For Users and User Groups modules (ntnx_users and ntnx_user_groups), adding Identity Provider (IdP) & Organizational Unit (OU) based users/groups are supported for PC versions >= pc.2022.1
Prism Central based examples: https://github.com/nutanix/nutanix.ansible/tree/main/examples/
Foundation
For the 1.1.0 release of the ansible plugin, it will have N-1 compatibility with the Foundation. This release was tested against Foundation versions v5.2 and v5.1.1
Foundation based examples : https://github.com/nutanix/nutanix.ansible/tree/main/examples/foundation
Foundation Central
For the 1.1.0 release of the ansible plugin, it will have N-1 compatibility with the Foundation Central . This release was tested against Foundation Central versions v1.3 and v1.2
Foundation Central based examples : https://github.com/nutanix/nutanix.ansible/tree/main/examples/fc
Karbon
For the 1.6.0 release of the ansible plugin, it will have N-2 compatibility with the Karbon. This release was tested against Karbon versions v2.3.0, v2.4.0 and v2.5.0
Karbon based examples : https://github.com/nutanix/nutanix.ansible/tree/main/examples/karbon
Nutanix Database Service (ERA)
For the 1.8.0-beta.1 release of the ansible plugin, it will have N-1 compatibility with the Nutanix Database Service (ERA). This release was tested against era versions v2.4.1 and v2.4.0
NDB based examples : https://github.com/nutanix/nutanix.ansible/tree/main/examples/ndb
Nutanix Ansible support for Nutanix Database Service is currently at beta stage.
Notes:
- Currently for ntnx_ndb_databases, creation of only postgres type database instance is tested and offically supported.
Installing the collection
Prerequisite
Ansible should be pre-installed. If not, please follow official ansible install guide .
For Developers, please follow this install guide for setting up dev environment.
1. Clone the GitHub repository to a local directory
git clone https://github.com/nutanix/nutanix.ansible.git
2. Git checkout release version
git checkout <release_version> -b <release_version>
3. Build the collection
ansible-galaxy collection build
4. Install the collection
ansible-galaxy collection install nutanix-ncp-<version>.tar.gz
Note Add `--force` option for rebuilding or reinstalling to overwrite existing data
Using this collection
You can either call modules by their Fully Qualified Collection Namespace (FQCN), such as nutanix.ncp.ntnx_vms, or you can call modules by their short name if you list the nutanix.ncp collection in the playbookâs collections:
keyword
For example, the playbook for iaas.yml is as follows:
---
- name: IaaS Provisioning
hosts: localhost
gather_facts: false
collections:
- nutanix.ncp
module_defaults:
group/nutanix.ncp.ntnx:
nutanix_host: <pc_ip>
nutanix_username: <user>
nutanix_password: <pass>
validate_certs: true
tasks:
- include_role:
name: external_subnet
- include_role:
name: vpc
- include_role:
name: overlay_subnet
- include_role:
name: vm
- include_role:
name: fip
To run this playbook, use ansible-playbook command as follows:
ansible-playbook <playbook_name>
ansible-playbook examples/iaas/iaas.yml
Included Content
Modules
Name | Description |
---|---|
ntnx_acps | Create, Update, Delete acp. |
ntnx_acps_info | Get acp info. |
ntnx_address_groups | Create, Update, Delete Nutanix address groups. |
ntnx_address_groups_info | Get address groups info. |
ntnx_categories | Create, Update, Delete categories |
ntnx_categories_info | Get categories info. |
ntnx_clusters_info | Get cluster info. |
ntnx_floating_ips | Create or delete a Floating Ip. |
ntnx_floating_ips_info | List existing Floating_Ips. |
ntnx_hosts_info | Get host info. |
ntnx_images | Create, update or delete a image. |
ntnx_images_info | List existing images. |
ntnx_image_placement_policy | Create, update or delete a image placement policy. |
ntnx_image_placement_policies_info | List existing image placement policies. |
ntnx_karbon_clusters | Create, Delete k8s clusters |
ntnx_karbon_clusters_info | Get clusters info. |
ntnx_karbon_registries | Create, Delete a karbon private registry entry |
ntnx_karbon_registries_info | Get karbon private registry registry info. |
ntnx_ndb_databases | Create, Update and Delete single instance database. |
ntnx_ndb_databases_info | Get database info. |
ntnx_ndb_db_servers_info | Get db servers vm info. |
ntnx_ndb_clusters_info | Get clusters info. |
ntnx_ndb_slas_info | Get slas info |
ntnx_ndb_profiles_info | Get profiles info. |
ntnx_ndb_time_machines_info | Get time machines info. |
ntnx_ndb_clones_info | Get database clones info. |
ntnx_pbrs | Create or delete a PBR. |
ntnx_pbrs_info | List existing PBRs. |
ntnx_permissions_info | List permissions info |
ntnx_projects | create, update and delete pc projects |
ntnx_projects_info | Get projects info. |
ntnx_protection_rules | create, update and delete pc protection rules |
ntnx_protection_rules_info | Get pc protection rules info. |
ntnx_recovery_plans | create, update and delete pc recovery plans |
ntnx_recovery_plans_info | Get pc recovery plans info. |
ntnx_recovery_plan_jobs | create and perform action on pc recovery plans |
ntnx_recovery_plan_jobs_info | Get pc recovery plan jobs info. |
ntnx_roles | Create, Update, Delete Nutanix roles |
ntnx_roles_info | Get roles info. |
ntnx_security_rules | Create, update or delete a Security Rule. |
ntnx_security_rules_info | List existing Security Rules. |
ntnx_service_groups | Create, Update, Delete service_group |
ntnx_service_groups_info | Get service groups info. |
ntnx_static_routes | Update static routes of a vpc. |
ntnx_static_routes_info | List existing static routes of a vpc. |
ntnx_subnets | Create or delete a Subnet. |
ntnx_subnets_info | List existing Subnets. |
ntnx_user_groups | Create, Delete user_groups. |
ntnx_user_groups_info | Get user groups info. |
ntnx_users | Create, Delete users |
ntnx_users_info | Get users info. |
ntnx_vms | Create or delete a VM. |
ntnx_vms_clone | Clone VM. |
ntnx_vms_ova | Create OVA image from VM. |
ntnx_vms_info | List existing VMs. |
ntnx_vpcs | Create or delete a VPC. |
ntnx_vpcs_info | List existing VPCs. |
ntnx_foundation | Image nodes and create new cluster. |
ntnx_foundation_aos_packages_info | List the AOS packages uploaded to Foundation. |
ntnx_foundation_bmc_ipmi_config | Configure IPMI IP address on BMC of nodes. |
ntnx_foundation_discover_nodes_info | List the nodes discovered by Foundation. |
ntnx_foundation_hypervisor_images_info | List the hypervisor images uploaded to Foundation. |
ntnx_foundation_image_upload | Upload hypervisor or AOS image to Foundation VM. |
ntnx_foundation_node_network_info | Get node network information discovered by Foundation. |
ntnx_foundation_central | Create a cluster out of nodes registered with Foundation Central. |
ntnx_foundation_central_api_keys | Create a new api key which will be used by remote nodes to authenticate with Foundation Central. |
ntnx_foundation_central_api_keys_info | List all the api keys created in Foundation Central. |
ntnx_foundation_central_imaged_clusters_info | List all the clusters created using Foundation Central. |
ntnx_foundation_central_imaged_nodes_info | List all the nodes registered with Foundation Central. |
Inventory Plugins
Name | Description |
---|---|
ntnx_prism_vm_inventory | Nutanix VMs inventory source |
Module documentation and examples
ansible-doc nutanix.ncp.<module_name>
How to contribute
We glady welcome contributions from the community. From updating the documentation to adding more functions for Ansible, all ideas are welcome. Thank you in advance for all of your issues, pull requests, and comments!
Examples
Playbook for IaaS provisioning on Nutanix
Refer to examples/iaas
for full implementation
---
- name: IaaS Provisioning
hosts: localhost
gather_facts: false
collections:
- nutanix.ncp
vars:
nutanix_host: <pc_ip>
nutanix_username: <user>
nutanix_password: <pass>
validate_certs: true
tasks:
- name: Inputs for external subnets task
include_tasks: external_subnet.yml
with_items:
- { name: Ext-Nat, vlan_id: 102, ip: 10.44.3.192, prefix: 27, gip: 10.44.3.193, sip: 10.44.3.198, eip: 10.44.3.207, eNat: True }
- name: Inputs for vpcs task
include_tasks: vpc.yml
with_items:
- { name: Prod, subnet_name: Ext-Nat}
- { name: Dev, subnet_name: Ext-Nat}
- name: Inputs for overlay subnets
include_tasks: overlay_subnet.yml
with_items:
- { name: Prod-SubnetA, vpc_name: Prod , nip: 10.1.1.0, prefix: 24, gip: 10.1.1.1, sip: 10.1.1.2, eip: 10.1.1.5,
domain_name: "calm.nutanix.com", dns_servers : ["8.8.8.8","8.8.8.4"], domain_search: ["calm.nutanix.com","eng.nutanix.com"] }
- { name: Prod-SubnetB, vpc_name: Prod , nip: 10.1.2.0, prefix: 24, gip: 10.1.2.1, sip: 10.1.2.2, eip: 10.1.2.5,
domain_name: "calm.nutanix.com", dns_servers : ["8.8.8.8","8.8.8.4"], domain_search: ["calm.nutanix.com","eng.nutanix.com"] }
- { name: Dev-SubnetA, vpc_name: Dev , nip: 10.1.1.0, prefix: 24, gip: 10.1.1.1, sip: 10.1.1.2, eip: 10.1.1.5,
domain_name: "calm.nutanix.com", dns_servers : ["8.8.8.8","8.8.8.4"], domain_search: ["calm.nutanix.com","eng.nutanix.com"] }
- { name: Dev-SubnetB, vpc_name: Dev , nip: 10.1.2.0, prefix: 24, gip: 10.1.2.1, sip: 10.1.2.2, eip: 10.1.2.5,
domain_name: "calm.nutanix.com", dns_servers : ["8.8.8.8","8.8.8.4"], domain_search: ["calm.nutanix.com","eng.nutanix.com"] }
- name: Inputs for vm task
include_tasks: vm.yml
with_items:
- {name: "Prod-Wordpress-App", desc: "Prod-Wordpress-App", is_connected: True , subnet_name: Prod-SubnetA, image_name: "wordpress-appserver", private_ip: ""}
- {name: "Prod-Wordpress-DB", desc: "Prod-Wordpress-DB", is_connected: True , subnet_name: Prod-SubnetB, image_name: "wordpress-db", private_ip: 10.1.2.5}
- {name: "Dev-Wordpress-App", desc: "Dev-Wordpress-App", is_connected: True , subnet_name: Dev-SubnetA, image_name: "wordpress-appserver", private_ip: ""}
- {name: "Dev-Wordpress-DB", desc: "Dev-Wordpress-DB", is_connected: True , subnet_name: Dev-SubnetB, image_name: "wordpress-db",private_ip: 10.1.2.5}
- name: Inputs for Floating IP task
include_tasks: fip.yml
with_items:
- {vm_name: "Prod-Wordpress-App"}
- {vm_name: "Dev-Wordpress-App"}