# 7- awx에서 rest api 사용하기 ## awx에서 제공하는 restapi 사용방법 1. 전체 기능은 : http://192.168.20.10:8801/api/v2/ 에 접속하면 전체 api 기능 확인가능
[![image.png](http://igoni.kr/uploads/images/gallery/2025-06/scaled-1680-/L0Mimage.png)](http://igoni.kr/uploads/images/gallery/2025-06/L0Mimage.png)
perplexity에서 생성한 AI이미지
## 사전작업 1. admin 계정으로 awx 로그인 2. 관리 → application → 새로생성 1. authorization grant type은 resource owner password=based, 2. client type → confidential 3. 관리 → user 에서 api용으로 사용할 서비스 계정 생성 후 token 생성 1. application에는 2번에서 생성한 application 선택 2. scope는 write로 선택 1.생성된 token값은 복사 (재 확인할 수 있는 절차가 없음) ## API 사용예제 1. inventory 조회 ```shell $ curl -X GET http://192.168.20.10:8801/api/v2/inventory/ \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer LQHjuUuJIn0jWjXLZ9LGVJEqXalvJM' | sed -e 's/[{}]/''/g' | awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' ``` 2. Credential 정보 조회 ```shell $ curl -X GET http://192.168.20.10:8801/api/v2/credentials/ \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer LQHjuUuJIn0jWjXLZ9LGVJEqXalvJM' | sed -e 's/[{}]/''/g' | awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' ``` 3. job templates조회 ```shell $ curl -X GET http://192.168.20.10:8801/api/v2/job_templates/ \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer LQHjuUuJIn0jWjXLZ9LGVJEqXalvJM' | sed -e 's/[{}]/''/g' | awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' ``` 4. job template 실행 ```shell $ curl -X POST http://192.168.20.10:8801/api/v2/job_templates/46/launch/ \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer LQHjuUuJIn0jWjXLZ9LGVJEqXalvJM' \ --data '{     "inventory": 2,     "limit": "192.168.209.10",     "credentials": [2],     "extra_vars": {         "MAX_JOB": 1,         "SVC_USER": "user",         "INSTALL_PATH": "/home/",         "RUN_TYPE": "CMD",         "RUN_CMD":"ls -l"     } }' ``` - template ID가 46이고, inventory id가 2, credential id 가 2 인 job 수행 5. 호스트 등록 ```shell $ curl -X POST http://192.168.20.10:8801/api/v2/inventories/2/hosts/ \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer LQHjuUuJIn0jWjXLZ9LGVJEqXalvJM' \ --data '{     "name": "192.168.200.10",     "enabled": "true",     "variables": "use: yes\ntest: no" }' ``` - inventory id가 2이고, 182.168.200.10에 use, test라는 변수를 적용해서 호스트 등록 6. 그룹에 해당 호스트 추가 ```shell $ curl -X POST http://192.168.20.10:8801/api/v2/groups/6/hosts/ \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer LQHjuUuJIn0jWjXLZ9LGVJEqXalvJM' \ --data '{     "name": "192.168.200.10",     "enabled": true }' ``` - group id가 6번인 그룹에 192.168.200.10 호스트 등록 7. 호스트 삭제 ```shell $ curl -X POST http://192.168.20.10:8801/api/v2/inventories/2/hosts/ \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer LQHjuUuJIn0jWjXLZ9LGVJEqXalvJM' \ --data '{     "id": 75,     "disassociate": "True" }' ```