To use ansible with Cisco UCS Manager, you need to install the SDK on your ansible server.
root@c86d023821ff:~# pip install ucsmsdk Collecting ucsmsdk Downloading https://files.pythonhosted.org/packages/f7/f9/280d7cea9e37ed183d694f5d2e8505b5eacfdbad709eba68fc32a5ed2bcf/ucsmsdk-0.9.10.tar.gz (4.2MB) 100% |################################| 4.2MB 306kB/s Collecting pyparsing (from ucsmsdk) Downloading https://files.pythonhosted.org/packages/8a/bb/488841f56197b13700afd5658fc279a2025a39e22449b7cf29864669b15d/pyparsing-2.4.7-py2.py3-none-any.whl (67kB) 100% |################################| 71kB 5.2MB/s Requirement already satisfied: setuptools in /usr/lib/python2.7/dist-packages (from ucsmsdk) (40.8.0) Requirement already satisfied: six in /usr/lib/python2.7/dist-packages (from ucsmsdk) (1.12.0) Building wheels for collected packages: ucsmsdk Running setup.py bdist_wheel for ucsmsdk … done Stored in directory: /root/.cache/pip/wheels/ac/a2/a9/5c39875aca61b780d8d94690f22b54237452d9fc290756781f Successfully built ucsmsdk Installing collected packages: pyparsing, ucsmsdk Successfully installed pyparsing-2.4.7 ucsmsdk-0.9.10 root@c86d023821ff:~# pip list | grep ucs ucsmsdk 0.9.10
Then you can create a simple inventory file with the UCS Manager IP.
Example:
root@c86d023821ff:~# cat inv_ucs [ucs] 10.0.100.162
Then you can create a simple playbook to add one vlan:
root@c86d023821ff:~# cat ucs_vlan.yml
---
- name: ENSURE APPLICATION CONFIGURATION EXISTS
hosts: ucs
connection: local
gather_facts: False
tasks:
- name: Configure VLAN
ucs_vlans:
hostname: 10.0.100.162
username: ucspe
password: ucspe
name: TheVlan11
id: '11'
native: 'no'
And finally you can run it:
root@c86d023821ff:~# ansible-playbook ucs_vlan.yml -i inv_ucs PLAY [ENSURE APPLICATION CONFIGURATION EXISTS] * TASK [Configure VLAN] ** [WARNING]: Platform linux on host 10.0.100.162 is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information. changed: [10.0.100.162] PLAY RECAP * 10.0.100.162 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Now your vlan ID 11 is available on the UCS Fabric Interconnect.

You can use the module ansible ucs_vlan_find to get all vlans:
root@c86d023821ff:~# cat ucs_vlan.yml
---
- name: ENSURE APPLICATION CONFIGURATION EXISTS
hosts: ucs
connection: local
gather_facts: False
tasks:
- name: Get All Vlans
ucs_vlan_find:
hostname: 10.0.100.162
username: ucspe
password: ucspe
pattern: '.'
register: vlans
tags:
- showvlan
- name: Display vlans
debug:
var: vlans
tags:
- showvlan
Result:
root@c86d023821ff:~# ansible-playbook ucs_vlan.yml -i inv_ucs --tags showvlan
PLAY [ENSURE APPLICATION CONFIGURATION EXISTS]
TASK [Get All Vlans]
[WARNING]: Platform linux on host 10.0.100.162 is using the discovered Python interpreter at /usr/bin/python, but future installation of
another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for
more information.
ok: [10.0.100.162]
TASK [Display vlans]
ok: [10.0.100.162] => {
"vlans": {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"failed": false,
"vlan_list": [
{
"id": "1",
"name": "default"
},
{
"id": "5",
"name": "human-resource"
},
{
"id": "1",
"name": "default"
},
{
"id": "3",
"name": "finance"
},
{
"id": "5",
"name": "human-resource"
},
{
"id": "1",
"name": "default"
},
{
"id": "3",
"name": "finance"
},
{
"id": "42",
"name": "NewVlan42"
},
{
"id": "10",
"name": "vlan10"
},
{
"id": "11",
"name": "TheVlan11"
}
],
"warnings": [
"Platform linux on host 10.0.100.162 is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information."
]
}
}
PLAY RECAP **
10.0.100.162 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0