본문 바로가기
IBM - old/IBM APIC

[APIC]Developer Toolkit 을 활용하여 DevOps 형태로 Urbancode 나 Jenkins 와 연동하기 위한 다양한 CLI 명령

by freeman98 2017. 2. 13.

안녕하세요 이정운 입니다.

IBM API Connect 는 Developer Toolkit 이라는 모듈을 제공하여 브라우저에서 GUI 로 작업하는 대부분의 내용을 CLI(Command Line Interface) 로도 지원 가능합니다.


이는 다시 이야기 하면 CLI 를 통해서 IBM API Connect 의 작업을 script 화 할수도 있고 다양한 솔루션과 손쉽게 연계도 가능합니다.


모 고객사의 요청으로 IBM API Connect 를 DevOps 형태로 Urbancode 나 Jenkins 와 연동하기 위한 다양한 CLI 명령들을 테스트 해봤고


간단하게 해당 내용 정리해서 공유드리오니 참고하시기 바라겠습니다.

(요즘 추세일수도 있는데 IBM API Connect 솔루션의 CLI 를 테스트 해보면서 느낀점은 git 을 사용하는 방식과 많이 닮아 있다라는 것입니다. ㅎ^^&)



CLI using developer toolkit in APIC

참고자료)
API and Product definition template examples
https://www.ibm.com/support/knowledgecenter/en/SSFS6T/com.ibm.apic.toolkit.doc/rapim_template_examples.html#reference_zsf_sx3_4w

Creating and using API and Product definitions templates
https://www.ibm.com/support/knowledgecenter/en/SSFS6T/com.ibm.apic.toolkit.doc/task_apim_cli_templates.html

Installing the toolkit
https://www.ibm.com/support/knowledgecenter/en/SSMNED_5.0.0/com.ibm.apic.toolkit.doc/tapim_cli_install.html

Getting started with the developer toolkit command-line tool
https://www.ibm.com/support/knowledgecenter/en/SSMNED_5.0.0/com.ibm.apic.toolkit.doc/capim-toolkit-cli-getting-started.html

Developer toolkit tutorials
https://www.ibm.com/support/knowledgecenter/en/SSMNED_5.0.0/com.ibm.apic.toolkit.doc/tutorial_cli_overview.html


0) Developer toolkit 설치하기
npm install -g apiconnect



1) APIC 관련 login 및 환경 설정
apic login -s 192.168.225.100 -u apic@localhost.com -p Passw0rd!


apic config:set catalog=apic-catalog://192.168.225.100/orgs/apic/catalogs/sb



2) API create 하기
apic create --type api --title "Routes" --name routes --basepath /route --hostname 192.168.225.10 --target-url "http://192.168.225.10:9071/branches/v1/101/location" --version 1.0.0 --filename routes100.yaml


참고 #1) create 를 하면 기본 Template 에 따라서 api 를 위한 Open API 표준(swagger 2.0 기반) 문서인 yaml 파일이 생성됩니다. 해당 template 이 본인 환경에 맞지 않다면 하단과 같은 절차를 통해서 수정 가능합니다.
   #1.1) hbs 파일 타입으로 template 생성 > http://handlebarsjs.com/ 기반

  
    #1.2) template 을 통한 api 생성
       apic create --type api --template ./basic_template.hbs  --title "Routes" --name routes --basepath /route --hostname 192.168.225.10 --target-url "http://192.168.225.10:9071/branches/v1/101/location" --version 1.0.0 --filename routes100.yaml

         

     #1.3) 상세사항은 상단의 참고자료 링크 참조


3)Product create 하기 (Product 는 API 를 포함하고 있으며 1:N 의 관계를 가질 수 있습니다. 좀 더 상세 내용은 다른 강좌를 참고하시기 바라겠습니다.)
apic create --type product --title "Climb On" --version 1.0.0 --apis routes100.yaml --filename climbon100.yaml


참고 #2) 마치 git 을 쓰듯 drafts:clone 명령을 사용하면 현재 APIC 에서 사용중인 전체 product/api 와 local repository 를 sync 할 수도 있습니다.
apic drafts:clone --organization apic --server 192.168.225.100 



4) API 와 Product 를 draft 로 push 하기
apic drafts:push climbon100.yaml --organization apic --server 192.168.225.100



참고 #3) drafts:pull 명령을 사용하면 기존에 APIC 에 존재하는 draft 에서  API 와 Product 를 local repository 로 가져올 수 있습니다. 
apic drafts:pull climb-on:1.0.0 --organization apic --server 192.168.225.100


 - drafts 명령을 사용하여 APIC 에 있는 API/Product list 확인하기
apic drafts --organization apic --server 192.168.225.100



5) draft  에 있던 Product 를 Catalog 로 stage 하기
apic drafts:publish --stage climb-on:1.0.0 --catalog Sandbox --organization apic --server 192.168.225.100




6) stage 되어 있는 Product 를 Publish 하기
apic products:set climb-on:1.0.0 --status published --catalog Sandbox --organization apic --server 192.168.225.100




이렇게 하면 CLI 를 통해서 Open API 표준 형태로 API 를 생성하고 IBM API Connect 에 배포 및 스테이징/공개까지 잘 수행이 완료된 것입니다.


참고 #4) 하단의 명령을 통해서 visibility 와 subscribability 의 scope 을 변경가능합니다.
apic products:set climb-on:1.0.0 --visibility public --subscribability authenticated --catalog Sandbox --organization apic --server 192.168.225.100

참고 #5) 실제로 APIC 를 활용해서 DevOps 를 고려하시면 결국 생성/배포 뿐만 아니라 테스트도 같이 고려해야 합니다. IBM APIC 의 경우에는 App 을 생성해서 client id 를 받고 해당 API 를 구독하는 작업과 같은 여러 부수작업이 수반됩니다.
다만, 하단과 같이 개발 환경이라면 환경설정에서 Development mode 를 켜고 Automatic subscription 기능을 켜면 해당 메뉴에서 확인가능한 Client ID 로 어떤 API 든 바로 테스트 가능합니다.


참고 #6) 참고로 IBM API Connect 는 swagger 2.0 표준 기반의 Open API 표준을 사용합니다. 해당 표준은 다양한 확장을 사용할 수 있으며 IBM 도 일반적으로 Swagger 에 없는 Assemble 기능을 표현하기 위하여 "x-ibm-configuration" 같은 확장을 사용합니다.


댓글