2020-10-05 01:31 PM
現在、13.2(2o)のバージョンでACIを運用しています。
運用上7EPG以上を持つテナントがあり、
1EPGにつき16Static port(5EPGで合計80)をGUIで設定する場面とかが出てきます。
GUIでStatic Portを一括で登録する方法はないでしょうか?
それともEPGにStatic Portを複数追加するJSONテンプレートを作成してファイルを流し込むしかないでしょうか?
JSONしか方法がない場合は、テンプレートの参考となるドキュメントなどをご教授いただければと思います。
ご確認のほどお願いいたします。
解決済! 解決策の投稿を見る。
2020-10-07 07:49 PM
GUI から実施いただく場合は、ご認識の通りファイルを流し込む必要があります。形式としては JSON だけではなく XML も対応しています。
テンプレートとしは以下が参考になるかと存じます。
Deploying an EPG on a Specific Port with APIC Using the REST API
https://www.cisco.com/c/en/us/td/docs/switches/datacenter/aci/apic/sw/2-x/L2_config/b_Cisco_APIC_Layer_2_Configuration_Guide/b_Cisco_APIC_Layer_2_Configuration_Guide_chapter_011.html#task_FB1AFFB10EA34C97B7290D84992BE0CF
もしくは一度 Static Port をいくつか設定し、[Save as] から JSON 形式で設定をエクスポートして流用する方法もあります。
他にも Ansible や REST API と Runner 機能を利用して一括設定している場合も多くあります。
以下の dCloud コンテンツで ACI の一括設定をステップバイステップでお試しいただくことが可能です。(Cisco ID をお持ちであればどなたでも利用可能です。)
Cisco ACI 4.1 Automation v1
https://dcloud2-sng.cisco.com/content/demo/311383?returnPathTitleKey=content-view
2020-10-08 05:24 PM 2020-10-08 05:28 PM 更新
そのような場合にこそ、是非、Postmanを利用して変数値をCSVファイルにまとめて流し込んだり、Ansibleを使ってPlaybookを書いてみるなどに挑戦してみて下さい。GUIやCLIは1度だけの構成には便利ですが、繰り返し行われる構成には、定義ファイルとAPIを活用したコードに基づく展開がとても便利ですし、設定ミスや漏れをなくすことが可能となります。
Ansibleを利用する場合は、ACI How To の以下情報や、Cisco Liveでのセッションスライド情報などを参考下さい。
https://community.cisco.com/t5/%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%B3%E3%82%BF%E3%83%BC-%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88/ansible%E3%81%AB%E3%82%88%E3%82%8Baci%E3%81%AE%E6%A7%8B%E6%88%90%E7%AE%A1%E7%90%86/ta-p/4077735
Ansible 2.10以降ではAnsible-baseに対してCollectionが分離されたため、ansible-galaxyからcisco.aciコレクションのインストールが必要となっています。
https://galaxy.ansible.com/cisco/aci?extIdCarryOver=true&sc_cid=701f2000001OH7YAAW
EPGに対してStatic Portを紐付けるModule "aci_static_binding_to_epg" がありますので、とてもシンプルにPlaybookを書くことが可能です。また、ループ処理を使うことで、ポート数に関係なく定義を実施することができるようになります。
以下、aci_static_binding_to_epgモジュールを使うPlaybookのサンプルです(ここではループ処理は使用していませんが)。なお、変数の箇所は別途inventoryファイルなどで指定が必要です。
詳細はAnsibleのウェブサイトのDocumentationを参照下さい。
https://docs.ansible.com/ansible/latest/collections/cisco/aci/aci_static_binding_to_epg_module.html#ansible-collections-cisco-aci-aci-static-binding-to-epg-module
---
- name: ACI_Ansible_Sample
hosts: apic
connection: local
gather_facts: no
vars_files:
- "/home/aci/ansible/vars/{{ stage }}.yaml"
tasks:
- name: Bind static ports to EPG - Server1 / Leaf1
aci_static_binding_to_epg:
host: "{{ apic_address }}"
username: "{{ apic_username }}"
certificate_name: "{{ apic_aaa_certificate }}"
private_key: acihot_ansible.key
state: present
tenant: "{{ tenant_name }}"
ap: "{{ app_profile }}"
epg: "{{ server1_epg }}"
encap_id: "{{ leaf1_server1_vlan }}"
interface_mode: trunk
interface_type: switch_port
pod: 1
leafs: "{{ leaf1 }}"
interface: "{{ leaf1_interface }}"
#output_level: debug
validate_certs: no
delegate_to: localhost
#register: query_result
2020-10-07 07:49 PM
GUI から実施いただく場合は、ご認識の通りファイルを流し込む必要があります。形式としては JSON だけではなく XML も対応しています。
テンプレートとしは以下が参考になるかと存じます。
Deploying an EPG on a Specific Port with APIC Using the REST API
https://www.cisco.com/c/en/us/td/docs/switches/datacenter/aci/apic/sw/2-x/L2_config/b_Cisco_APIC_Layer_2_Configuration_Guide/b_Cisco_APIC_Layer_2_Configuration_Guide_chapter_011.html#task_FB1AFFB10EA34C97B7290D84992BE0CF
もしくは一度 Static Port をいくつか設定し、[Save as] から JSON 形式で設定をエクスポートして流用する方法もあります。
他にも Ansible や REST API と Runner 機能を利用して一括設定している場合も多くあります。
以下の dCloud コンテンツで ACI の一括設定をステップバイステップでお試しいただくことが可能です。(Cisco ID をお持ちであればどなたでも利用可能です。)
Cisco ACI 4.1 Automation v1
https://dcloud2-sng.cisco.com/content/demo/311383?returnPathTitleKey=content-view
2020-11-09 10:08 AM
ありがとうございます。
普段はJSONしか使用していませんが、XMLファイルも検討してみます!
2020-10-08 05:24 PM 2020-10-08 05:28 PM 更新
そのような場合にこそ、是非、Postmanを利用して変数値をCSVファイルにまとめて流し込んだり、Ansibleを使ってPlaybookを書いてみるなどに挑戦してみて下さい。GUIやCLIは1度だけの構成には便利ですが、繰り返し行われる構成には、定義ファイルとAPIを活用したコードに基づく展開がとても便利ですし、設定ミスや漏れをなくすことが可能となります。
Ansibleを利用する場合は、ACI How To の以下情報や、Cisco Liveでのセッションスライド情報などを参考下さい。
https://community.cisco.com/t5/%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%B3%E3%82%BF%E3%83%BC-%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88/ansible%E3%81%AB%E3%82%88%E3%82%8Baci%E3%81%AE%E6%A7%8B%E6%88%90%E7%AE%A1%E7%90%86/ta-p/4077735
Ansible 2.10以降ではAnsible-baseに対してCollectionが分離されたため、ansible-galaxyからcisco.aciコレクションのインストールが必要となっています。
https://galaxy.ansible.com/cisco/aci?extIdCarryOver=true&sc_cid=701f2000001OH7YAAW
EPGに対してStatic Portを紐付けるModule "aci_static_binding_to_epg" がありますので、とてもシンプルにPlaybookを書くことが可能です。また、ループ処理を使うことで、ポート数に関係なく定義を実施することができるようになります。
以下、aci_static_binding_to_epgモジュールを使うPlaybookのサンプルです(ここではループ処理は使用していませんが)。なお、変数の箇所は別途inventoryファイルなどで指定が必要です。
詳細はAnsibleのウェブサイトのDocumentationを参照下さい。
https://docs.ansible.com/ansible/latest/collections/cisco/aci/aci_static_binding_to_epg_module.html#ansible-collections-cisco-aci-aci-static-binding-to-epg-module
---
- name: ACI_Ansible_Sample
hosts: apic
connection: local
gather_facts: no
vars_files:
- "/home/aci/ansible/vars/{{ stage }}.yaml"
tasks:
- name: Bind static ports to EPG - Server1 / Leaf1
aci_static_binding_to_epg:
host: "{{ apic_address }}"
username: "{{ apic_username }}"
certificate_name: "{{ apic_aaa_certificate }}"
private_key: acihot_ansible.key
state: present
tenant: "{{ tenant_name }}"
ap: "{{ app_profile }}"
epg: "{{ server1_epg }}"
encap_id: "{{ leaf1_server1_vlan }}"
interface_mode: trunk
interface_type: switch_port
pod: 1
leafs: "{{ leaf1 }}"
interface: "{{ leaf1_interface }}"
#output_level: debug
validate_certs: no
delegate_to: localhost
#register: query_result
2020-11-09 10:11 AM
ありがとうございます。
恥ずかしながら、初めてAnsibleを知りました。
今はPostmanでJsonファイルを流し込んでいるので、まずはそちらで変数処理を試してみようかと思います。
また、Ansibleについては勉強して今の現場に合いそうであれば導入も考えたいと思います。
ありがとうございました。
エキスパートの回答、ステップバイステップガイド、最新のトピックなどお気に入りのアイデアを見つけたら、あとで参照できるように保存しましょう。
コミュニティは初めてですか?これらのヒントを活用してスタートしましょう。 コミュニティの活用方法 新メンバーガイド
下記より関連するコンテンツにアクセスできます