공부하기싫어
article thumbnail

글이 길어져서 part 2로 옮김

 

private subnet 쪽 db-server 환경구성은 끝냈고

이제 jenkins-server 랑 web-server 간 CI/CD Pipeline 을 구성해보자

 

이제 할꺼

 

1. idpass.py 파일을 제외해서 public git repository 만들기

2. hub.docker repository 만들기

3. Jenkins 서버 환경설정

4. 로컬 (desktop + laptop) 에서 git repo clone

5. jenkins-server 에서 web-server 로 ansible 연결

6. docker-compose.yaml 작업

7. Jenkinsfile 작업

8. github webhook 작업

9. test

 

 

12.8 7:18 pm

git repository 만들기

git repo

일단 jenkins 서버 환경 설정 해 놓고

로컬에 클론시킬 예정

 

hub.docker repository 생성

hub.docker repo

jenkins 에 연결할 hub.docker repo

 

Jenkins 환경 설정

Jenkins 설치

sudo docker run -itd --name jenkins -p 8080:8080 -p 50000:50000 -v /docker/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -e TZ=Asia/Seoul -u root jenkins/jenkins:latest

 

Jenkins container에 docker 설치

docker exec -it 젠킨스컨테이너이름 bash

curl -fsSL get.docker.com -o get-docker.sh 
sh get-docker.sh

 

Jenkins 초기 비밀번호

젠킨스 컨테이너 안에서
cat /var/jenkins_home/secrets/initialAdminPassword

 

권장 플러그인 설치

 

자격 증명 생성

 

Github 자격증명 생성

kind : Username with Password

Username : Github 계정명

Password : github persnal access token

ID : 젠킨스 내에서 자격증명을 가리키기 위해 사용할 변수 이름

 

Docker Hub 자격증명 생성

kind : Username with Password

Username : Docker Hub 계정명

Password : Docker Hub persnal access token ( hub.docker - account settings - security - new access tokens )

ID : 젠킨스 내에서 자격증명을 가리키기 위해 사용할 변수 이름

 

 

로컬(개발환경) 깃 클론 + 기존 파일 마이그레이션

git clone - laptop

편리한 git desktop

참 편해

 

이제 기존 개발환경(ec2 instance) 안에 있는 프론트 파일들을 옮겨와야 하는데

프론트 파일들은 바로 git repo 로 push 해봐야겠다

 

git push

added front-end files

기존 프론트+백 파일들은 모두 리포지토리로 업로드 된 상태

이제 pipeline 으로 컨트롤 할때 원격지 컨트롤을 해야하기 때문에

jenkins-server 에 ansible 을 설치하고 prod-web-instance 랑 연결해보자

 

git clone - desktop

github desktop - desktop]

깃뎁! 깃뎁! 깃뎁! 깃뎁! 깃뎁! 깃뎁! 

 

12.9 9:42 am

ansible 연결

ansible 설치

sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible

ansible -h

jenkins-server 에 설치해줬다

 

 

12.9 6:07 pm

inventory 등록

private ip 주소로 등록해주려고 한다

기본 inventory 파일 경로 - /etc/ansible/hosts

나는 새로 만들어서 사용할꺼다

#Inventory.ini

[prod]
web-blackpink ansible_host=172.31.14.71

[prod:vars]
ansible_connection=ssh
ansible_port=22
ansible_user=ubuntu 
ansible_private_key_file=/home/ubuntu/keypairs/prod-blackpink.pem

dir

ping test

prod-ansible 디렉토리로 이동해서

ubuntu@jenkins-server:~/prod-ansible$ ansible prod -m ping -i Inventory.ini
[DEPRECATION WARNING]: COMMAND_WARNINGS option, the command warnings feature is being removed. This
 feature will be removed from ansible-core in version 2.14. Deprecation warnings can be disabled by
 setting deprecation_warnings=False in ansible.cfg.
web-blackpink | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
ubuntu@jenkins-server:~/prod-ansible$

이렇게 실행해주면 ping 결과가 잘 확인되었다

 

이제 docker-compose 파일을 작성하고

jenkinsfile 로 pipeline 만들고 테스트 하면 끝!

인데 또 길어져서 3번째 포스트에 쓸 예정