【Hubot】 채팅에서 Hubot과 Jenkins를 통해 EC2 인스턴스의 상태를 조작



소개



AWS CLI의 공부가 엄청나게 해본 내용입니다.

1 채팅 도구로 Jenkins의 작업 실행을 주장

2 Hubot이 Jenkins에게 작업을 실행하라고 전달

3 Jenkins가 작업에 등록 된 인스턴스를 파괴 (Terminate)하는 명령을 실행

원격으로 손쉽게 서버를 조작할 수 있는 것이 편리합니다.
채팅 도구는 'slack', 'Hipchat', 'chatwork', 둘 다 괜찮습니다.
(chatwork에서 했습니다)

Hubot 설정



Jenkins와 협력해야합니다.
그렇다고 해도 스크립트를 작성할 필요가 없습니다.

'hubot-scripts.json'을 수정합니다.

hubot-scripts.json
["jenkins.coffee"]




그런 다음 Jenkins 연동을 위한 환경 변수를 설정합니다.

export HUBOT_JENKINS_URL=YourJenkinsUrl
export HUBOT_JENKINS_AUTH=xxxxxx:xxxxxx


'HUBOT_JENKINS_AUTH'에는 콜론으로 구분하여 Jenkins 사용자 이름과 비밀번호를 입력하세요.

이제 Hubot 설정은 이상입니다.

Jenkins 작업 설정



본선에서 벗어나므로 자세히 설명하지 않지만 Jenkins가 실행되는 서버에 AWS CLI를 설치하여 명령 작업을 할 수 있는 상태로 둡니다.

또한,

AWS Management Console
↓
오른쪽 상단 메뉴 "Security Credentials"
↓
Access Keys (Access Key ID and Secret Access Key)

에서 「Access Key ID」와 「Secret Access Key」를 앞두고 둔다.

에서 작업을 만들고 쉘 스크립트를 작성합니다.




export WORKSPACE
sh -x ${WORKSPACE}/instart.sh


저장합니다.

실행 파일에서 방금 "Access Key ID"와 "Secret Access Key"를 입력합니다.

XXXX.sh

#!/bin/bash -xe

aws configure set aws_access_key_id AWSアクセスキーID

aws configure set aws_secret_access_key AWSシークレットアクセスキーID

aws ec2 terminate-instances --region=ap-northeast-1 --instance-ids=インスタンスID


Jenkins 쪽도 이것으로 이상입니다.

chatwork에서 실행



그리고는 금단의 대사를 주창할 뿐입니다.



잘하면 파괴에 성공할 것입니다.

마지막으로



미국의 핵 전략 미사일 발사 과정과 유사합니다.
엄청 단순히 해석하면

대통령(사용자)이 명령
↓
보좌관·취권(Hubot)이 시크릿 코드를 송신
↓
SSBN의 사관연중(Jenkins)이 받은 시크릿 코드를 바탕으로 협의·합의
↓
발사

좋은 웹페이지 즐겨찾기