Getting started with the Kyndryl Cloud Uplift dynamic inventory for Ansible
The Kyndryl Cloud Uplift dynamic inventory for Ansible allows you to manage and configure Kyndryl Cloud Uplift VMs using Ansible commands and playbooks. With simple commands and playbooks, you can perform bulk actions across VMs.
For example, you can combine Ansible and Kyndryl Cloud Uplift to:
- Set up user accounts on VMs.
- Install software and software updates on VMs.
- Collect log files from VMs.
This tutorial walks you through the steps you’ll need to begin communicating with Kyndryl Cloud Uplift VMs using the dynamic inventory.
The Kyndryl Cloud Uplift dynamic inventory for Ansible is an open-source project built using the Kyndryl Cloud Uplift REST API.
Contents
Prerequisites
Before you begin
- Prepare the machine that will run Ansible (either a local computer or Kyndryl Cloud Uplift VM).
- Install the following:
-
Python 2.7.x (available from https://www.python.org/downloads/).
The dynamic inventory may work with Python 3.0 or 3.5 releases, but this hasn’t been fully tested.
- requests and six Python packages (see requests and six).
- Ansible (see the Ansible Installation Guide).
- GitHub (see Set Up Git).
-
-
Verify that you have a way to authenticate to VMs over SSH using a command line.
To follow this tutorial on Linux, you can install SSHPass for non-interactive user/password authentication. On Windows, you can install PUTTY or Cygwin combined with SSHPass. This tutorial uses non-interactive user/password authentication; it’s simpler to demonstrate, but less secure than public key authentication.
- Install the following:
- Prepare SSH on the Kyndryl Cloud Uplift VMs you want to manage:
- Install and run SSH on the VM. Instructions vary, depending on the VM operating system.
- Create an administrative user name and password on the VM that Ansible can use; create the same user name and password on all of the VMs you want to manage in the environment.
- For this tutorial, save these user names and passwords on the VM Credentials page.
-
Create a network connection between the Ansible machine and the environment you want to manage.
If you installed Ansible on a VM in Kyndryl Cloud Uplift:
-
Place the Ansible VM in the same environment as the VMs you want to manage.
or
-
Place the Ansible VM in a separate environment and connect the networks between those environments (see Networking Between Environments).
If you installed Ansible on a local machine:
- Create a VPN connection between the local machine network and the Kyndryl Cloud Uplift environment. A NAT-enabled VPN is recommended. See Connecting Environments to a VPN.
-
Installing and configuring the Kyndryl Cloud Uplift dynamic inventory for Ansible
From the machine where you installed Ansible:
- Download the Kyndryl Cloud Uplift dynamic inventory for Ansible from GitHub. You can either fork or clone the repository.
For example, using the command line:
git clone https://github.com/skytap/skytap-ansible-inventory.git - Edit SSH settings for Ansible.
- Create a new file called
ansible.cfg. Add the following text to the file and save it to the root of Ansible user directory.[defaults] host_key_checking=False timeout = 10 [ssh_connection] ssh_args = -o ControlMaster=auto -o ControlPersist=60s control_path = /tmp/ansible-%r@%h:%por
-
Edit the
~/.ssh/configfile to include the following text:Host * ControlMaster auto ControlPath /tmp/ansible-%r@%h:%p StrictHostKeyChecking no
- Create a new file called
- Copy
EXAMPLE_skytap.ini(located with the Kyndryl Cloud Uplift dynamic inventory for Ansible project files) to create a new file calledskytap.ini. -
Open
skytap.iniand replace the placeholder information with your user name, API token, and information about the Kyndryl Cloud Uplift environment you want to work with.If you’re using a GitHub fork and you plan to push changes to the public project, make sure you add
skytap.inito.gitignore. Otherwise, you may accidentally share your Kyndryl Cloud Uplift credentials.For example, the file may contain:
[skytap_vars] base_url:https://cloud.skytap.com/v2 username:jdoe api_token:123abcde456fghijklm123 [skytap_env_vars] configuration_id:1234567 network_type:nat_vpn use_api_credentials:true skytap_vm_username:skytap api_credential_delimiter:/ [ansible_ssh_vars] port:22
Using the Kyndryl Cloud Uplift dynamic inventory for Ansible
Once the inventory is installed and configured, you can begin using it with Ansible commands to communicate with Kyndryl Cloud Uplift VMs. For example:
To check connectivity to all of the VMs in an environment
-
Navigate to the directory where the inventory project is saved:
cd ~/skytap-ansible-inventory -
Run the following command:
ansible -i skytap_ansible.py all -m ping
You should receive a response similar to:
vmname | success >> {
"changed": false,
"ping": "pong"
}
You can also pair the inventory with Ansible playbooks. For example:
To create a simple playbook that checks connectivity to all of the hosts in the environment
-
Create a file called
ping.yaml, containing the following text:--- - hosts: all tasks: - name: "Ping all of the hosts in the inventory." ping: -
Then run:
ansible-playbook -i skytap_inventory.py ping.yaml
For more information about creating Ansible playbooks, see the Ansible Intro to Playbooks.
Working with multiple Kyndryl Cloud Uplift environments
The Kyndryl Cloud Uplift dynamic inventory for Ansible works with the Kyndryl Cloud Uplift environment specified in the skytap.ini file. To work with multiple Kyndryl Cloud Uplift environments, create multiple .ini files (with different names), using the skytap.ini file as a template.
To switch between .ini files, create an environment variable called SKYTAP_INI and set it the name of the .ini file you want to work with.
For example:
export SKYTAP_INI=otherfilename.ini
To use skytap.ini again, edit the SKYTAP_INI variable:
export SKYTAP_INI=skytap.ini