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