DevOps/Programmability2018.02.07 08:02

안녕하세요.

이번 포스팅은 Programmability for Networker의 25번째 포스팅입니다.

ACI Cobra를 이용하여 Port Channel 혹은 vPC Profile을 만들어주는 코드에 대해서 공유합니다.

세부적인 코드 설명은 포함되어 있지는 않지만, 현업에서 아래의 코드를 사용한다면

보다 쉽고, 빠르게 Profile을 만드실 수 있을겁니다.

이번 코드는  운영 중인 커뮤니티에서 진행된  '제 22회 네트워크 전문가 따라잡기 'N.EX.T''에서 발표하였던 코드이기도 합니다.

(정리해서 올리기로 하고.. 1년 가까이가 지났네요. ^^)

 

물론 포스팅 설명에 앞서서 한가지 미리 얘기를 드리면,

'왜 Port Channel이나 vPC Profile을 대량을 으로 만들어야 하지?' 라고 생각하실 수 있습니다.

ACI에 대한 포스팅을 준비만 하면서 계속하지 못하고 있어서 다루지 못한 부분이기는 하지만..

이 부분은 ACI를 어떻게 설계해서 사용하느냐에 따라서 많아질 수도.. 혹은 적어질 수도 있을 것이라고 생각합니다.

(물론 개인적인 생각은 최적화 된 Profile로 설계해서 사용한다면 그리 많지 않은 Profile로 모두 수용이 가능합니다.)

 

그럼 이제 본 내용을 시작합니다.

 


 

ACI에서 기본적으로 제공되는 APIC GUI에서 Click! Click을 이용해서 설정하는 방법 이외에

 

일괄적으로 대량을 설정을 하기 위해서는

JSON이나, XML 포맷의 파일을 미리 만들어 POST 하여 설정을 하거나,

ACI에서 제공되는 API를 이용해서 코드로 설정하는 방법이 있을 것입니다.  (CLI를 제외하고..)

 

하지만, 오늘 다룰 내용인 Interface Policies 항목에서는 POST를 할 수 있는 메뉴가 없습니다.

최상단의 Interface Policies에도 없고요.

 

 

 

 

 

 

하단의 Policy Groups에도 없습니다.

 

 

 

물론 그 하단인 Leaf Policy Groups에도 없습니다.

 

 

그래서 PC Profile이나 vPC Profile을 생성하기 위해서 ACI SDK인 Cobra를 이용하여 Port Channel이나 vPC Profile을 만들려고 합니다.

 

다음은 Port Channel이나 vPC Profile을 만드는 코드입니다.

 

 

위의 코드 이외에 Port Channel 혹은 vPC Profile의 이름이 선언된 info.txt라는 파일이 있어야 합니다.

info.txt에는 단순히 Profile에 사용할 이름만 한 줄씩 나열합니다.

 

그러면 info 파일에서 한 줄씩 읽어서 해당 이름으로 Profile을 생성하게 됩니다.

코드 본문에 있는 AEP 변수에서 사용하실 AEP 이름을 수정하시고

Port Channel을 사용할지, vPC를 사용할지에 따라서 AccBndlGrp 메서드 호출 시에 lagT에 대해서

 

Port Channel은 'link'로 설정하시고, vPC의 경우에는 'node'로 설정하시면 됩니다.

 

위의 코드에서는 Link Level Policy, Port Channel Policy, Attach Entity Profile에 대한 속성만 설정하였지만,

기타 그 밖의 설정을 추가할 수도 있습니다.

 

혹시라도 대량으로 PC, vPC Profile을 설정하셔야 하는 경우에 이 코드를 사용하시면 조금은 쉽게 설정이 가능하실 겁니다.

물론 자동화의 장점은 설정에 대한 편의성도 있지만, 잘못된 설정으로 인한 휴먼에러의 방지도 가능할 것입니다.

 

참고로, 위의 코드에서는 설정 시의 기본 예외처리만 만들었으며

기타 다른 상황에 대한 세부 예외 처리가 되어 있지 않기 때문에 더 보완해서 사용해보시는 것도 좋을 것 같습니다.

 

 

Posted by 네떡지기
분류없음2017.07.09 19:31

Today Keys : profile, switch, policies, 설정, template, aci, cisco, vpc


Cisco ACI에 대한 두 번째 포스팅입니다. 

이번 포스팅은 지난 포스팅(Interface Policies)에 연장선상인 Switch Policies 입니다. 
기존의 장비의 각 인터페이스, 장비별 설정이 아닌 Profile을 통해서 장비 설정을 하게 되기 때문에 
이러한 Profile을 어떻게 설정하게 되는지에 대한 부분에 있어서 많은 이해가 필요할 것 같습니다.
전체적인 구성을 어떻게 만들지에 따라서, Profile에 의한 설정은 약이 될 수도 독이 될 수도 있다고 생각하기 때문입니다. 
아직 서비스 연결을 위해서 설정해야 할 부분들이 많이 남아있지만, 
하나씩 차근 차근 포스팅을 통해서 정리해보도록 하겠습니다. 

※ 현재 포스팅 기준은 ACI 2.0 기준입니다.


Switch Policies


Policies 
 - Switch에 전체에 설정되는 속성 값 설정. STP, VPC Domain 등의 설정 등에 대한 설정 가능. 
 - 아래의 메뉴처럼 스위치에 대한 정책 값들을에 대한 몇 가지 설정이 가능하나, 실질적으로 사용될만한 것은 vPC에 대한 부분입니다.

 
              
               

< Switch Policies의 Policies로 설정 가능한 메뉴 >


< VPC Domain Policies 설정 >


  - ACI 를 구성하는 Leaf에서 vPC를 사용하기 위해서는 아래와 같이 vPC Group으로 묶일 스위치를 선언해주어야 합니다.

    이 때에 사용되는 ID는 해당 APIC Pod에서는 Unique한 값으로 사용되어야 합니다. 

    그리고 vPC로 구성되는 Leaf은 2대로만 구성이 가능합니다. 

    만약, 이미 vPC로 구성된 스위치를 다른 vPC Group의 Switch로 선택하지 않도록 유의해야 합니다. 

    ACI 2.1 이후부터는 이미 vPC로 구성된 스위치를 다른 vPC Group에 선택하게 될 경우에 오류가 뜨면서 설정이 되지 않지만, 

    ACI 2.0 이하에서는 선택이 되면서, 기존의 vPC Group과 신규로 설정한 vPC Group 모두 비정상적으로 동작될 수 있습니다. 


< VPC Domain Policies 설정 >




Profile 
  - 실제 Switch Policies에서 주로 설정하게 될 설정으로, 물리적인 Switch에 대한 Profile을 어떻게 만들 것인지 정함.
  - Leaf Selector 에서 Blocks로 어떤 Block(물리 Leaf단위-leaf ID 값)를 설정할지 선정. 
    즉, 이 Switch Profile을 적용할 물리적인 Switch가 무엇인지를 선언. 
    하나의 Profile에서 하나의 Switch를 선택할 수도 있고, 다수의 Switch를 선택할 수도 있음.


            이 때에 Switch Policy Group으로 스위치에 설정할 값을 넣을 수 있음. 
            즉, Profile 이름을 지정 / 실제 물리 스위치 지정 / Policy Group 적용해서 설정
            하나의 leaf에 여러 개의 Policy Group을 적용도 가능 할 듯. 
            그리고, Interface Selector Profile을 어떤걸 적용할지 정할 수 있음.  
              : 다수개 가능(?) - 이게 어떤식으로 mapping 되는지 확인 


    - 그리고, 현재 Profile에 적용할 Interface Policies를 어떤 것을 선택할 것인지 선택.
      즉, 지난 포스팅에서 설정한 Interface Polices의 Profile을 적용할 스위치를 Switch Profile에서 선택. 
    - 동일한 Interface Profile을 사용하게 되는 Switch들의 경우에 각 스위치별로 설정을 하는 것이 아니라, 
      Switch Profile을 만들고, Switch Selector로 다수개의 스위치를 선택하여 Interface Profile을 지정하여 일괄적으로 적용이 가능.

         





  
Interface & Switch Policies 정리해서 이해하기!
    - 지난 포스팅의 Interface Policies와 이번 포스팅의 Switch Policies의 구성을 보면 다음과 같이 표현할 수 있습니다.
    - 일반 Interface의 개별 설정들에 대한 값들을 선언하고, 그러한 값들을 모아서 Interface Policy Group을 만들게 됩니다.
      Interface Policy Group은 실제 특정 인터페이스에 적용된 설정 값으로, 기존 NX-OS의 Port Profile과 거의 유사합니다. 
    - Interface Policy Group이 하나의 Interface에 적용되는 설정 값이라고 한다면, Interface Profile은 해당 설정 값이 적용될 
      Interface range 값을 포함한 내용입니다. Interface Selector을 통해서 적용된 interface를 지정합니다.
      단, 여기에서는 Interface의 range만 지정이 가능하며, 어떤 스위치에 적용될지에 대한 부분은 설정하지 못합니다.
    - Switch Profile에서는 어떤 Switch에 어떤 Interface Profile을 적용할 것인지를 mapping하게 됩니다.
    - 여기에서도 마찬가지로 Switch Selector를 통해서 다수의 Switch를 지정해서, 원하는 Interface Profile을 Mapping 할 수 있습니다.
    - 즉, 동일한 Interface 설정을 가진 스위치를 개별로 설정하는 것이 아니라, 일괄적으로 설정이 가능하게 됩니다.
    



Interface & Switch Policies 포스팅 마무리
    - Interface Policies와 Switch Policies를 정의할 때에는 그 때 그 때 Policies를 선언하는 방식이 아니라, 
      처음 구성 할 때부터 어떻게 구성을 하겠다는 전체적인 아키텍처의 그림이 나와야 합니다.
      한 번 설정한 Interface / Switch Policies를 변경하려고 하면, 기존에 적용된 내용들까지 모두 영향을 미치게 됩니다.
    - 전체 Range로 설정을 하였다가, Range를 풀어서 다시 묶어야 하는 경우에는 Range를 푸는 순간 기존 서비스는 설정이 사라지기 때문에
      서비스 이슈가 발생할 수 있습니다.
    - 설정에 대한 override도 가능한 것으로 보이나, 가능한 운영 관점에서는 일관된 설정으로 가는 것이 운영상에 좋지 않을까 생각해봅니다.
    


Posted by 네떡지기
네트워크2017.07.03 18:29

Today Keys : ACI, Interface, Policies, Policy, Profile, Group


이번 포스팅은 Cisco ACI 로 시작하는 시리즈 포스팅의 첫 번째 포스팅입니다. 

작년 말부터 Cisco ACI를 운영하기 시작하면서 정리를 조금씩 하면서 포스팅을 준비했는 데.. 

예전부터 그랬지만 항상 포스팅을 하기 위한 준비 작업 시간도 오래 걸리거니와 

또 맘에 들 때까지.. 무작정 기다리기만 하면 포스팅을 하지도 못하고.. 계속 늦춰지기만 하게 되네요. 

우선 짧게 짧게라도 가볍게 정리해 놓은 것들을 풀어보는 포스팅을 하려고 합니다. 


전체적인 흐름과 아키텍처를 잘 짜야만 된다고 생각되는 것이 ACI 이긴 하지만.. 

우선 포스팅은 단편적인 부분부터 시작해봅니다.  그렇지 않으면 무작정 계속 늦어질 듯 싶으니까요..

나중에 흐름과 전체 구조는 하나씩 짜맞춰 나가는 포스팅을 하도록 하겠습니다! ^^


첫 번째 포스팅은 Interface의 설정을 어떻게 할 것인지에 대한 내용입니다.

개별 인터페이스별로 설정을 하는 것이 아니라, 기존의 Port-Profile 기능처럼 인터페이스에 적용할 Profile을 만든 후에 

이를 동일하게 사용되는 전체 인터페이스에 손쉽게(?) 적용할 수 있습니다. 




Interface Policies


Policies 


  - Switch Interface 대한 속성, CDP, STP interface에서 설정한 가능한 Config 대해서 세부 속성.

  - 기 CLI에서의 Interface 명령 안에 선택되는 옵션 수준

              * 설정 가능한 정책


                  - Link Level , CDP, LLDP, Port Channel, STP, Storm Control, Port Security 등


                  

< Interface Policies의 Policies에서 설정할 수 있는 정책 >


< Link Level Policy 설정 >




< CDP 설정 >


Policy Group 


  - Policies 엮어서, 하나의 Interface 설정 값을 만듬.

  - 실질적으로 특정 인터페이스 설정 될 Port Profile 설정

 

  - 일반 Interface 설정은 하나의 Policy Group으로 만들어서 다수의 인터페이스에 적용해서 사용. 

 

  - Policy Group은 일반 Individual Port와 Port-channel, vPC 로 나누어서 설정을 하게 되며, 

    

    Port-Channel과 vPC는 개별로 생성 해야 함. 

 


< Policy Group의 설정 >



< 일반 Individual Interface Policy 설정 >




< Port-Channel Interface Policy 설정 >





<  vPC Interface Policy 설정 >




Profile 


 - Policy Group에서 설정된 인터페이스 설정 값을 적용할 Profile 설정

 

 - Policy Group을 적용할 인터페이스를 지정한다고 생각하면 됨. 이 과정을 Interface Selectors 라는 메뉴에서 지정하게 되며


  여기서는 어떤 Leaf 대한 Interface인지까지는 지정하지 않고, 단순히 Interface ID(Interface 번호) 지정 하게 됨. 


  실제 어떤 Leaf의 적용될지에 대한 mapping 과정은 Switch Policies에서 적용



<  vPC Interface Policy 설정 >



<  vPC Interface Policy 설정 >


Posted by 네떡지기

안녕하세요 

이번 포스팅은 지난 번에 했던 포스팅과 마찬가지로 간단한 동영상을 올려봅니다.


Cisco ACI에서 포트설정은 Profile 형태로 구성을 하게 되는 데, 

PortProfile을 생성하는 것을 JSON을 이용해서 Post하기 위한 예제입니다. 

동영상의 내용은, 동일한 PortProfile 그룹과 거기에 설정할 AEP를 지정하고 

그리고 각 인터페이스 별로 설정할 Port정보를 기입하여, ACI에 적용할 JSON을 생성한 후, ACI에 적용하게 되는 동영상입니다.


좀 더 많은 부분은 한꺼번에 JSON 형태로 만들어서 Profile을 만들고 싶은 생각은 있지만..

아무래도 실 운영 환경에서 테스트를 진행하는 부분에는 한계점이 있기 때문에.. 

가상머신이나. 에뮬레이터가.. 절실하다는.. 생각을 해보면서 포스팅을 마칩니다.



P.S 물론 본 동영상에 포함된 Profile 형태가 물론 ACI에서 하고자 하는 아키텍처의 그림은 아닐 수 있겠지만.

    위와 같은 형태의 자동화 부분도 가능하다는 점만 염두해두면 좋을 것 같습니다.

Posted by 네떡지기

티스토리 툴바