Justin의 개발 로그
article thumbnail

CloudFormation + Ansible로 IaC (Infrastructure as Code)로 구성

 

Git 소스 위치 : https://github.com/Justin-ad-Park/EffectiveDevOpsTemplates 

 

Justin-ad-Park/EffectiveDevOpsTemplates

AWS+DevOps : AWS CloudFormation. Contribute to Justin-ad-Park/EffectiveDevOpsTemplates development by creating an account on GitHub.

github.com

 

CLI 설치 및 권한 설정

1. PyPA 파이썬 패키지 관리자 설치
#Windows
        $ sudo apt install python-pip

#MAC
        $ sudo easy_install pip


[Trouble shooting]
aws command not found

$ which python
==>	/usr/bin/python

$ echo $SHELL
==>	/usr/local/bin/zsh


2. pip로 AWS CLI 설치
        sudo pip install --upgrade --user awscli


또는 직접 설치
	$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
	$ unzip awscli-bundle.zip
	$ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

 

AWS CLI 권한 설정

# AWS CLI 권한 설정하기
        more credentials.csv
# AWS 계정 Access Key Id, Secret Access Key 확인

$aws configure
Key ID : ****aaaa
Access Key : ****bbbb
Default region name : ap-northeast-2 
#아시아 태평양 서울

 

앤서블(Ansible) 설치

sudo pip install ansible

# 테스트
sudo ansible --private-key ~/.ssh/pmo_aws.pem ec2 -m ping
13.209.70.116 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

# pyyaml 에러가 나면
sudo pip install pyyaml

# 다른 테스트
sudo ansible --private-key ~/.ssh/pmo_aws.pem '13.209.70.*' -a 'df -h'
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        483M   60K  483M   1% /dev
tmpfs           493M     0  493M   0% /dev/shm
/dev/xvda1      7.9G  1.7G  6.1G  22% /

 

AMI image ID 확인

방법 1 :  aws cli 명령어를 이용

$ aws ec2 describe-images --filters "Name=description,Values=Amazon Linux AMI * x86_64 HVM GP2" --query 'Images[*].[CreationDate, Description, ImageId]' --output text | sort -k 1 | tail

 

 

방법 2 :  AWS Console -> EC2 생성에서 이미지 검색

 

CloudFormation template에  AMI image ID 수정

/../EffectiveDevOpsTemplates/jenkins-v1.2-settime-template.py

 

t.add_resource(ec2.Instance(
"instance",
ImageId="ami-0be3e6f84d3b968cd",
InstanceType="t2.micro",
SecurityGroups=[Ref("SecurityGroup")],
KeyName=Ref("KeyPair"),
UserData=ud,
IamInstanceProfile=Ref("InstanceProfile"),
))

 

 

 

 

수정한 템플릿 파일 컴파일

> ./11.compile_jenkin-v1.2-settime-template.sh 

 

...더보기

# troposphere 에러가 발생하는 경우
> sudo pip install troposphere

#awacs library 관련 에러가 발생하는 경우
> sudo pip install awacs

 

AWS cloudformation 으로 stack(EC2, Jenkins 설치)을 생성

❯ ./12.jenkins-v1.2-createstack.sh

 

Stack 생성 완료를 확인

❯ ./13.jenkins_waiting4Stack.sh

 

생성된 EC2의 인스턴스 Public IP 확인
❯ ./14.jenkins_getIpAddress.sh

 

Public IP로 SSH 접속해 Jenkins InitialAdminPassword 조회

ssh -i ~/.ssh/pmo_aws.pem ec2-user@xxx.xxx.xxx.xxx sudo cat /var/lib/jenkins/secrets/initialAdminPassword

 

Jenkin 접속

http://xxx.xxx.xxx.xxx:8080 

 

초기 비밀번호 입력

추천 Plug-in 설치

 

 

 

'AWS_NCP' 카테고리의 다른 글

AWS 클라이언트 VPN 생성  (0) 2021.03.08
AWS RDS 교차 리전간 VPC Peering  (0) 2019.08.20
2. VPC와 Subnet 생성 실습  (0) 2019.03.02
1. VPC의 완벽 이해  (0) 2019.03.02
profile

Justin의 개발 로그

@라이프노트

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!