キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
告知

JTAC-Mid-Career-Recruitment-2021.3

CSC-campaign.JPG

 

1186
閲覧回数
0
いいね!
4
返信

Static Portの設定方法について

現在、13.2(2o)のバージョンでACIを運用しています。

 

運用上7EPG以上を持つテナントがあり、

1EPGにつき16Static port(5EPGで合計80)をGUIで設定する場面とかが出てきます。

 

GUIでStatic Portを一括で登録する方法はないでしょうか?

それともEPGにStatic Portを複数追加するJSONテンプレートを作成してファイルを流し込むしかないでしょうか?

JSONしか方法がない場合は、テンプレートの参考となるドキュメントなどをご教授いただければと思います。

 

ご確認のほどお願いいたします。

2 件の受理された解決策

受理された解決策
Daijiro Kido
Cisco Employee

 

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

 

元の投稿で解決策を見る

takaochan
Cisco Employee

そのような場合にこそ、是非、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

 

 

元の投稿で解決策を見る

4件の返信4
Daijiro Kido
Cisco Employee

 

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

 

元の投稿で解決策を見る

ありがとうございます。

普段はJSONしか使用していませんが、XMLファイルも検討してみます!

takaochan
Cisco Employee

そのような場合にこそ、是非、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

 

 

元の投稿で解決策を見る

ありがとうございます。

恥ずかしながら、初めてAnsibleを知りました。

今はPostmanでJsonファイルを流し込んでいるので、まずはそちらで変数処理を試してみようかと思います。

 

また、Ansibleについては勉強して今の現場に合いそうであれば導入も考えたいと思います。

ありがとうございました。