ansible 터미널로 오셔서..
https://velog.io/@repush/Docker-%EC%84%A4%EC%B9%98%ED%95%98%EB%8A%94%EB%B2%95
도커 설치하는 법..
위 링크를 마무리하고나서 아래 명령어를 실행시켜보자.
docker ps
다음과 같은 결과가 나오면 정상적으로 설치가 된것이다.
sudo apt install -y ansible
ssh-keygen #그냥 엔터 계속 치면 된다
ssh-copy-id vagrant@192.168.59.12 # yes 하고 비밀번호는 vagrant
ssh-copy-id vagrant@192.168.59.13 # yes 하고 비밀번호는 vagrant
vi .ansible.cfg
아래 파일을 복사해서 붙여넣어주면 된다.
이제는 혼자서 하실 수 있겠죠..?
[defaults]
inventory = hosts.ini
vi hosts.ini
아래 내용을 붙여넣어주면 된다.
[ansible_host]
192.168.59.13
[docker_host]
192.168.59.12
ansible all -m ping
아래 사진과 같이 나오면 성공
크롬에 192.168.59.10:8080
주소로 들어가서
대쉬보드에서 왼쪽에
Jenkins관리
클릭
왼쪽에
시스템 설정
클릭
스크롤 맨 아래로 내려서
추가
클릭
이런 화면이 나오는데
아래 사진과 표 참고해서 채워주시고
항목 설정값 Name ansible-host Hostname 192.168.59.13 Username vagrant
오른쪽 아래
고급
버튼 클릭
User password authentication, or use a different key
왼쪽에 있는 체크박스활성화
활성화 하면 스크롤이 자동으로 내려갈겁니다 스크롤 다시 올려서 해당 항목 찾아주세요
Passphase / Password
에는vagrant
라고 써주시거나 붙여넣어주시면 됩니다.
스크롤 가장 아래로 내려서
Tes Configuration
클릭
Success
나오면 성공한겁니다.
apply
클릭하고저장
클릭
jenkins 터미널로 오셔서..
Git 리포지토리랑 연결되어있는 디렉토리로 오셔서 작업하실겁니다.
mkdir playbook
cd playbook
vi docker_build_and_push.yaml
아래 내용 붙여넣어주시면 됩니다
- name: Docker Image Build
hosts: ansible_host
gather_facts: false
tasks:
- command: docker image build -t java-hello-world java-hello-world/
cd ..
git add .
git commit -m 'make Playbook'
cat ~/.ssh/token
git push #계정 이름 입력하시고 비밀번호는 토큰값 넣어주시면 됩니다.
아래 사진과 같이 나오면 성공
본인 레포지토리에도 playbook이 추가 되었을 겁니다.
크롬에 192.168.59.10:8080
주소로 들어가거나
또는 왼쪽 위에 Dashboard 버튼으로 대쉬보드로 들어갑니다.
왼쪽 메뉴바에
새로운 Item
을 클릭해서 새로운 프로젝트를 만들어보자.
이름은
build-image-and-deploy-with-ansible
로 하고 Mavenproject 클릭하고OK
클릭해준다.
Git
활성화시켜주고 본인 git 주소 넣으시면 됩니다 ~
master
를 main으로 바꿔주시고
clean package
넣어주시고
맨 아래로 스크롤 내려서
빌드 후 조치 추가
클릭
Send build artifacts over SSH
클릭
이렇게 Name에
ansible-host
잘 나오는거 확인
아래에 이렇게 나오실텐데
아래 사진과 표를 참고해서 채워주세요
항목 설정값 Source files webapp/target/webapp.war Remove prefix webapp/target/ Remote directory java-hello-world
Add Transfer Set
클릭
이런게 하나 더 나오게 된다.
아래 사진과 표를 참고해서 붙여넣어주고
항목 설정값 Source files docker/Dockerfile Remove prefix docker/ Remote directory java-hello-world
또
Add Transfer Set
클릭
이런게 하나 더 나오게 된다.
아래 사진과 표를 참고해서 붙여넣어주세요
항목 설정값 Source files playbook/docker_build_and_push.yaml Remove prefix playbook Remote directory java-hello-world Exec command ansible-playbook java-hello-world/docker_build_and_push.yaml
Apply
누르고저장
클릭
왼쪽 메뉴바에서
Build Now
클릭
ansible 터미널
로 가셔서.. 아래 사진과 같이 나오면 성공
docker images
= 빌드나우 여러 번 해도 정상적으로 작동하게 만들기
다시 jenkins 터미널
로 와서..
깃허브랑 연결된 디렉토리로 다시 와보자
cd playbook
vi docker_build_and_push.yaml
아래 내용대로 만들어주시면 됩니다.
편집기에서 dd 계속 누르시면 삭제 편하게 하실 수 있고 아래 내용 붙여넣으시면 됩니다.
- name: Docker Image Build
hosts: ansible_host
gather_facts: false
tasks:
- command: docker image build -t java-hello-world java-hello-world/
- command: docker container rm -f java-hello-world
ignore_errors: yes
- command: docker container run --name java-hello-world -d -p 8080:8080 java-hello-world
git add .
git commit -m 'Modify Playbook'
cat ~/.ssh/token
git push #이제 하시는 방법 알겠죠..?
본인 레포지토리 가셔서 잘 바뀌었는지 확인 가능하십니다.
다시 젠킨스로 돌아가셔서..
Build Now
클릭 해보시면
다시 엔서블 터미널
로 오셔서..
docker ps
했을 때 아래처럼 잘 나오고
curl localhost:8080/webapp/
했을 때 아래처럼 나오면 성공
오른쪽에 계정을 눌러서
Account Settings
클릭
왼쪽 메뉴에서
Security
클릭
New Access Token
클릭
for jenkins
고 입력하고Generate
클릭
토큰 복사하고
Jenkins 터미널로 오셔서..
vi ~/.ssh/token-for-docker
하고 편집기에 해당 토큰 붙여넣고 esc
:wq
cat ~/.ssh/token-for-docker
했을 때 토큰값이 잘 나오면 성공
Jenkins 대쉬보드로 와서..
build-image-and-deploy-with-ansible
이름 클릭
구성
클릭
이 빌드는 매개변수가 있습니다
왼쪽의 체크박스활성화
매개변수 추가
클릭
Password Parameter
클릭
매개변수 명은
PASS
Default Value에는아까 받은 토큰값
붙여넣으시면 됩니다.
토큰 받는 명령어는 jenkins 터미널창에서cat ~/.ssh/token-for-docker
스크롤 맨 아래로 내리셔서
아래 사진처럼 수정하시면 됩니다!
PASS=`echo $PASS` ansible-playbook java-hello-world/docker_build_and_push.yaml
Apply
누르시고저장
그리고 이제 Git에 새로운 ansible playbook을 수정해줄건데요
시작하기 전에 본인 도커 계정이름과 repository 이름 확인해주세요
jenkins 터미널
에 git과 연동된 디렉토리로 오셔서..
cd playbook
vi docker_build_and_push.yaml
아래 내용대로 완선하시면 됩니다.
이전 내용 제거하시려면 d
누르고 계시면 편하게 지울 수 있습니다.
########### 본인docker계정이름
### 주의 ### 본인docker레포지토리 이름
########### 꼭 확인해주세요 !!! 복붙하시고 수정 꼭 하셔야합니다.
- name: Docker Image Build and Push
hosts: ansible_host
gather_facts: false
tasks:
- command: docker image build -t repush/cicdproject java-hello-world/
- command: docker login -u repush -p "{{ lookup('env', 'PASS') }}"
- command: docker push repush/cicdproject
- command: docker logout
- name: Docker Run
hosts: docker_host
gather_facts: false
tasks:
- command: docker container rm -f java-hello-world
ignore_errors: yes
- command: docker container run -d -p 8080:8080 --name java-hello-world repush/cicdproject
git add .
git commit -m 'Modify 3rd Playbook'
cat ~/.ssh/token
git push #이제 git push 하는거는 아시겠죠..?
docker 가상머신
의 터미널로 와서..
docker 명령어를 실행시키기 위한 패키지를 설치해주어야합니다.
아래 명령어 실행해주세요
sudo apt install -y python3-pip
sudo pip3 install docker
젠킨스 홈페이지로 와서..
Maven project build-image-and-deploy-with-ansible
이라는 프로젝트로 들어가신다음에
왼쪽 메뉴에서
Build with Parameters
를 클릭해주세요
바로 다음 나오는 페이지에서도 빌드하기
클릭
docker 가상머신 터미널
로 오셔서..
docker ps
docker images
docker hub
의 본인 리포지토리를 보시면..
이미지가 추가된 것을 확인할 수 있고
다시 docker 가상머신 터미널
로 오셔서..
curl localhost:8080
curl localhost:8080/webapp/
하시면 아래와같은 결과를 확인하실 수 있습니다.
확인 다 하셨으면 성공
docker rm -f `docker ps -a -q`
docker ps