How do you use External Ansible Modules

I have been using an ansible module developed for vmware VcloudDirector. It is a great module and really helps speed up and maintain consistency when provisioning - over a human user.

So I created the playbooks within the directory and tested it out like that.

But now it is ready I just want to keep the relevant stuff in the library and import the module for where I am running the scripts.

The information to do that is in the ansible docs - adding a module locally

Check that you have access to a module

The ansible-module-vcloud-director repo has a number of modules under the modules/ folder:

  • vcd_catalog
  • vcd_external_network
  • vcd_roles
  • vcd_vapp_network
  • vcd_vapp_vm_nic
  • vcd_vdc_network
  • vcd_catalog_item
  • vcd_org
  • vcd_user
  • vcd_vapp_vm
  • vcd_vapp_vm_snapshot
  • vcd_disk
  • vcd_org_vdc
  • vcd_vapp
  • vcd_vapp_vm_disk
  • vcd_vdc_gateway

To check if you module is available use:

ansible-doc -t module vcd_org

If it is found you will get the documentation. If it does not exist you get a warning:

[WARNING]: module vcd_org not found in: /Users/xxx...

Adding the module Locally

To add the module locally you need to add it to one of these places

  • any directory added to the ANSIBLE_LIBRARY environment variable ($ANSIBLE_LIBRARY takes a colon-separated list like $PATH)
  • ~/.ansible/plugins/modules/
  • /usr/share/ansible/plugins/modules/

You can also add a ansible.cfg to your directory (or in the /etc/ansible or ~/.ansible.cfg directory) and then you can set the default module path:

library = ./<my-module-folder>