Ansible guide : https://docs.ansible.com/ansible/devel/scenario_guides/guide_aci.html
I create a docker container with ansible, python and the demo from github.
git clone https://github.com/CiscoDevNet/aci-learning-labs-code-samples
cd aci-learning-labs-code-samples
docker image with ansible and python:
docker pull zednetwork/aci-ansible2-4
New version with ansible 2.8.2 using debian 10.
docker pull zednetwork/aci-ansible.2-8-2
Docker Compose example:
version: "3"
services:
ansible:
image: zednetwork/aci-ansible2-4
tty: true
stdin_open: true
Start the container and connect to it:
docker-compose up -d
Creating network "aci-ansible_default" with the default driver
Pulling ansible (zednetwork/aci-ansible2-4:)…
latest: Pulling from zednetwork/aci-ansible2-4
22dbe790f715: Downloading [> ] 465.6kB/45.34 MBf88405a685: Pulling fs layer
22dbe790f715: Downloading [=> <..>
22dbe790f715: Pull complete
3bf88405a685: Pull complete
Creating aci-ansible_ansible_1 … done
Check container
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zednetwork/aci-ansible2-4 latest ff17ed37f691 34 minutes ago 659MB
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
53993071ffa9 zednetwork/aci-ansible2-4 "bash" About a minute ago Up About a minute aci-ansible_ansible_1
Connect to the container. Use the Container ID above.
# docker exec -it 53993071ffa9 /bin/bash
root@53993071ffa9:/#
This container already contains an example from devnet.cisco.com ( https://developer.cisco.com/docs/aci/#ansible). This example uses a public ACI Fabric.
We can use the first playbook to create a tenant on the ACI Fabric. The fabric credential is on the inventory file.
root@53993071ffa9:~/aci_ansible_learning_labs_code_samples/intro_module# cat inventory
[apic:vars]
username=admin
password=ciscopsdt
ansible_python_interpreter="/usr/bin/env python"
[apic]
sandboxapicdc.cisco.com
You can connect directly to the fabric and verify if your tenant is present. https://sandboxapicdc.cisco.com/
root@53993071ffa9:~/aci_ansible_learning_labs_code_samples/intro_module# ansible-playbook -i inventory 01_aci_tenant_pb.yml
What would you like to name your Tenant?: MyFirstTenant-tn
PLAY [ENSURE APPLICATION CONFIGURATION EXISTS]
TASK [ENSURE APPLICATIONS TENANT EXISTS]
changed: [sandboxapicdc.cisco.com]
PLAY RECAP
sandboxapicdc.cisco.com : ok=1 changed=1 unreachable=0 failed=0
Go to ACI > Tenants
You can delete your tenant with another playbook
root@53993071ffa9:~/aci_ansible_learning_labs_code_samples/intro_module# ansible-playbook -i inventory 01-1_aci_tenant_pb.yml
What would you like to name your Tenant?: MyFirstTenant-tn
PLAY [ENSURE APPLICATION CONFIGURATION EXISTS]
TASK [ENSURE APPLICATIONS TENANT EXISTS]
changed: [sandboxapicdc.cisco.com]
PLAY RECAP
sandboxapicdc.cisco.com : ok=1 changed=1 unreachable=0 failed=0
Other example to list all tenants:
# cat listTenants.yml
---
- name: ENSURE APPLICATION CONFIGURATION EXISTS
hosts: apic
connection: local
gather_facts: False
tasks:
- name: List all tenants
aci_tenant:
host: "{{ ansible_host }}"
username: "{{ username }}"
password: "{{ password }}"
state: "query"
validate_certs: False
# ansible-playbook -i inventory listTenants.yml -vvv