본문 바로가기

Automation Tools/Ansible

ansible | [AWX] JOB Template 의 Schedule과 Notification

반응형

개요


  • 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

 

 

 

23. Notifications — Ansible Tower User Guide v3.8.6

23. Notifications A Notification Template is an instance of a Notification type (Email, Slack, Webhook, etc.) with a name, description, and a defined configuration. For example: A username, password, server, and recipients are needed for an Email notificat

docs.ansible.com

  • 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 메세지

반응형