# 7- awx에서 rest api 사용하기
## awx에서 제공하는 restapi 사용방법
1. 전체 기능은 : http://192.168.20.10:8801/api/v2/ 에 접속하면 전체 api 기능 확인가능
[](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"
}'
```