a10.acos_axapiで情報取得する
はじめに
A10 ACOS向けのcollectionであるa10.acos_axapiを使って、vThunderから情報取得するPlaybookの一例です。
# ansible-galaxy collection list # /root/.ansible/collections/ansible_collections Collection Version -------------- ------- a10.acos_axapi 1.0.0
SLB Server
a10_slb_serverはnameパラメータが必須です。get_type: listであれば、nameに存在しないSLB Server名を指定しても、存在するSLB Serverのリストを返してくれますが、保守性を考えると空文字等が望ましい気がします。
--- - hosts: vthunder connection: local gather_facts: no collections: - a10.acos_axapi tasks: - name: register real server a10_slb_server: name: "" state: noop get_type: list register: res_slb_server - name: debug res_slb_server debug: var: res_slb_server
# ansible-playbook -i inventory.ini slb_server.yml
PLAY [vthunder] ******************************************************************************
TASK [register real server] ******************************************************************
ok: [vthunder]
TASK [debug res_slb_server] ******************************************************************
ok: [vthunder] => {
"res_slb_server": {
"changed": false,
"failed": false,
"message": "",
"original_message": "",
"result": {
"server-list": [
{
"a10-url": "/axapi/v3/slb/server/s1",
"action": "enable",
"conn-limit": 64000000,
"extended-stats": 0,
"host": "10.0.2.11",
"name": "s1",
"no-logging": 0,
"port-list": [
{
"a10-url": "/axapi/v3/slb/server/s1/port/80+tcp",
"action": "enable",
"conn-limit": 64000000,
"extended-stats": 0,
"no-logging": 0,
"no-ssl": 0,
"port-number": 80,
"protocol": "tcp",
"range": 0,
"stats-data-action": "stats-data-enable",
"support-http2": 0,
"template-port": "default",
"uuid": "****",
"weight": 1
}
],
"slow-start": 0,
"spoofing-cache": 0,
"stats-data-action": "stats-data-enable",
"template-server": "default",
"uuid": "****",
"weight": 1
},
{
"a10-url": "/axapi/v3/slb/server/s2",
"action": "enable",
"conn-limit": 64000000,
"extended-stats": 0,
"host": "10.0.2.12",
"name": "s2",
"no-logging": 0,
"port-list": [
{
"a10-url": "/axapi/v3/slb/server/s2/port/80+tcp",
"action": "enable",
"conn-limit": 64000000,
"extended-stats": 0,
"no-logging": 0,
"no-ssl": 0,
"port-number": 80,
"protocol": "tcp",
"range": 0,
"stats-data-action": "stats-data-enable",
"support-http2": 0,
"template-port": "default",
"uuid": "****",
"weight": 1
}
],
"slow-start": 0,
"spoofing-cache": 0,
"stats-data-action": "stats-data-enable",
"template-server": "default",
"uuid": "****",
"weight": 1
}
]
}
}
}
PLAY RECAP ***********************************************************************************
vthunder : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
VLAN
a10_network_vlanの場合はvlan_numが必須です。こちらの場合も、実在しないVLAN IDを指定しても動作し、存在するVLANの一覧を取得できます。ただし、上記のa10_slb_serverのようにvlan_num: ""と指定すると、vlan_numの値がint型を期待するため、エラーとなります。intフィルタを使うと、似たような形が実現できます。
--- - hosts: vthunder connection: local gather_facts: no collections: - a10.acos_axapi tasks: - name: register network vlan a10_network_vlan: vlan_num: "{{ '' | int }}" state: noop get_type: list register: res_network_vlan - name: debug res_network_vlan debug: var: res_network_vlan
# ansible-playbook -i inventory.ini network_vlan.yml
PLAY [vthunder] ******************************************************************************
TASK [register network vlan] *****************************************************************
ok: [vthunder]
TASK [debug res_network_vlan] ****************************************************************
ok: [vthunder] => {
"res_network_vlan": {
"changed": false,
"failed": false,
"message": "",
"original_message": "",
"result": {
"vlan-list": [
{
"a10-url": "/axapi/v3/network/vlan/10",
"shared-vlan": 0,
"untagged-eth-list": [
{
"untagged-ethernet-end": 1,
"untagged-ethernet-start": 1
}
],
"uuid": "****",
"ve": 10,
"vlan-num": 10
},
{
"a10-url": "/axapi/v3/network/vlan/20",
"shared-vlan": 0,
"untagged-eth-list": [
{
"untagged-ethernet-end": 2,
"untagged-ethernet-start": 2
}
],
"uuid": "****",
"ve": 20,
"vlan-num": 20
}
]
}
}
}
PLAY RECAP ***********************************************************************************
vthunder : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0