반응형
개요
- AWX를 사용하는 이유중에 하나가 각각의 시스템에서 실행하는 스케줄된 JOB을 중앙에서 관리하고자 하는 이유가 있다.
- 정기적으로 실행되야하는 CRON JOB 등을 playbook을 제작하고 AWX에서 스케줄관리를 통해 실행 한다.
- 또한 Notification 기능을 통해 JOB이 실행되고 완료되며 에러가 발생하는 것 까지 알림으로 받아 볼 수 있다.
설정
Schedules 설정
- windows ping playbook(Templates test1)을 매일 오후 18시에 실행하는 스케줄을 설정한다.
- Template - Schedules - ADD
- Start date/time : 최초 시작 시간
- Local time zone : Asis/Seoul
- Run frequency : 정기적 스케줄 기준(CRON 설정과 유사)
- 설정을 마치면 다음 스케줄 시간을 나열해 보여준다.
Notification 설정
- 지원하는 Notification Type은 E-Mail, Slack, Grafana, Webhook등 다양하지만 여기서는 Webhook을 사용하여 Slack 메세지를 설정한다.
- 왼쪽탭 Administration - Notifications - ADD
- Type : Webhook
- Target URL : slack incomming webhook 주소 입력
- HTTP Method : POST
- Customize messages : Start, Success, Error 시 사용 될 메세지를 json 형식으로 작성한다.
- 필드값
- {{job.id}} : template job id
- {{job.name}} : template job name
- {{job.started}} : job 시작 시간
- {{job.playbook}} : template job 실행 playbook
- {{job.finished}} : job 종료 시간
- {{job.status}} : job 진행 상태
- 관련 필드값 참조 : https://docs.ansible.com/ansible-tower/latest/html/userguide/notifications.html#create-custom-notifications
- message 작성 시 잘못된 구문이나 잘못된 변수 사용 시 SAVE가 되지 않으므로 주의 한다.
- Start message body
{
"channel": "test-channel",
"icon_emoji": ":slack:",
"attachments": [
{
"title": "AWX JOB({{job.name}}) Started",
"color": "#439FE0",
"fields": [
{
"title": "ID",
"value": "{{job.id}}",
"short": true
},
{
"title": "NAME",
"value": "{{job.name}}",
"short": true
},
{
"title": "Started Time",
"value": "{{job.started}}",
"short": true
},
{
"title": "Playbook",
"value": "{{job.playbook}}",
"short": true
},
{
"title": "Finished Time",
"value": "{{job.finished}}",
"short": true
},
{
"title": "Status",
"value": "{{job.status}}",
"short": true
}
]
}
]
}
- Success message body
{
"channel": "test-channel",
"icon_emoji": ":slack:",
"attachments": [
{
"title": "AWX JOB({{job.name}}) Success",
"color": "good",
"fields": [
{
"title": "ID",
"value": "{{job.id}}",
"short": true
},
{
"title": "NAME",
"value": "{{job.name}}",
"short": true
},
{
"title": "Started Time",
"value": "{{job.started}}",
"short": true
},
{
"title": "Playbook",
"value": "{{job.playbook}}",
"short": true
},
{
"title": "Finished Time",
"value": "{{job.finished}}",
"short": true
},
{
"title": "Status",
"value": "{{job.status}}",
"short": true
}
]
}
]
}
- Error message body
{
"channel": "test-channel",
"icon_emoji": ":slack:",
"attachments": [
{
"title": "AWX JOB({{job.name}}) Error Occured",
"color": "danger",
"fields": [
{
"title": "ID",
"value": "{{job.id}}",
"short": true
},
{
"title": "NAME",
"value": "{{job.name}}",
"short": true
},
{
"title": "Started Time",
"value": "{{job.started}}",
"short": true
},
{
"title": "Playbook",
"value": "{{job.playbook}}",
"short": true
},
{
"title": "Finished Time",
"value": "{{job.finished}}",
"short": true
},
{
"title": "Status",
"value": "{{job.status}}",
"short": true
}
]
}
]
}
JOB Template에 Notifocation 등록
- Notification template을 등록하면 JOB Template Notifications 항목에 자동 표출 된다.
- 여기서 Start, Success, Failure 등의 Status에 따라 메세지를 보낼건지를 선택 할 수 있다.
- 참고 : 여러번 테스트 한 결과 Status에 따른 메세지가 아래와 같은 경우 전송이 이루어 지는 것 같다.
- Start : JOB 이 시작 되었을때
- Success : JOB이 끝났을때로 JOB 의 playbook 이 fail 여부와는 상관 없는 것 같도고 단지 JOB 자체가 끝났을때 보내는 메세지
- Failure : Success와 마찬가지로 JOB의 playbook이 fail 여부와 상관없이 JOB 자체가 실패 해였을때 보내는 메세지로 JOB Cancel 과도 상관이 없다.
JOB Template JOB 실행 결과
- Template JOB : 18시에 스케줄 시작
- Slack message : Started, Success 메세지
반응형
'Automation Tools > Ansible' 카테고리의 다른 글
ansible | inventory 내 다른 host 변수 참조 (0) | 2022.06.27 |
---|---|
ansible | AWX Playbook Task 실패(or 성공) 시 알림 설정 (0) | 2022.06.22 |
ansible | [AWX] logstash(elasticsearch) 를 이용한 로그 수집 (0) | 2022.06.17 |
[Ansible] VMware ESXi 사용하기 (0) | 2022.05.20 |
Windows Ansible | [Playbook] 역할 및 기능 설치(win_feature) (0) | 2022.05.16 |