반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 도커
- linux
- 쿠버네티스
- springboot
- 컨테이너
- RSS
- nginx
- WEB
- container
- multivm
- namespace
- variable
- aws #engineer
- devops #engineer
- k8s
- Strimzi
- DOIK
- 초간단파이썬
- httpd실행
- mongodb operator
- Engineer
- java
- python
- Kubernetes
- bash
- Vagrant
- devops #jenkins
- 파이썬
- ioredirection
- docker
Archives
- Today
- Total
샤인의 IT (막 적는) 메모장
[Jenkins] 컨테이너 구성 및 기본 job 테스트 본문
반응형
노션에 정리했던 내용
VM 구성
- VirtualBox 설치
- Vagrant Setup
vagrant init
#Vagrantfile
vi Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "geerlingguy/centos7"
#네트워크 private 설정
config.vm.network "private_network", ip: "192.168.100.111"
#네트워크 Public 설정
config.vm.network "public_network"
#리소스 설정
config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
vb.gui = true
#
# # Customize the amount of memory on the VM:
vb.memory = "2000"
vb.cpus = 2
end
end
vagrant up --provider=virtualbox
- Linux Setup
#yum repo 변경
vi /etc/yum.repos.d/daum.repo
[base]
name=CentOS-$releasever - Base
baseurl=http://ftp.daum.net/centos/7/os/$basearch/
gpgcheck=1
gpgkey=http://ftp.daum.net/centos/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates
baseurl=http://ftp.daum.net/centos/7/updates/$basearch/
gpgcheck=1
gpgkey=http://ftp.daum.net/centos/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras
baseurl=http://ftp.daum.net/centos/7/extras/$basearch/
gpgcheck=1
gpgkey=http://ftp.daum.net/centos/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://ftp.daum.net/centos/7/centosplus/$basearch/
gpgcheck=1
gpgkey=http://ftp.daum.net/centos/RPM-GPG-KEY-CentOS-7
yum repolist
yum clean all
yum update -y
(도커 설치 및 컨테이너 배포 노션에서 날라감....ㅠ)
- 로그 확인
- docker logs -f jenkins
- 젠킨스 접속
- jenkins:8080 접속
- 어드민 정보 입력 후 로그인
- 기본화면
- 로컬 DNS 설정
- hosts 파일 수정
기본 job 테스트
Jenkins Job 기본 테스트
- New Item
- Create Job - Freestyle Project
- 명령어 실행
- Build 후 확인
Job Redirect 테스트
#Job Command 변경
NAME="Shin"
echo "Hello, $NAME Current Time is $(date)" > /tmp/info
Job Bash Script
- docker cp 명령어로 스크립트를 복사한다.
- Jenkins Job에서 해당 스크립트를 실행한다.
- 환경변수를 지정해서 실행해도 된다.
[vagrant@jenkins jenkins]$ vi script.sh
[vagrant@jenkins jenkins]$ chmod +x script.sh
[vagrant@jenkins jenkins]$ ./script.sh Shin JS
Hello, Shin JS
[vagrant@jenkins jenkins]$ docker cp script.sh jenkins:/tmp/script.sh
[vagrant@jenkins jenkins]$ docker exec -it jenkins bash
jenkins@e96eaf47f2ca:/$ cd /tmp
jenkins@e96eaf47f2ca:/tmp$ ls
git_lfs_pub.gpg hsperfdata_jenkins info jetty-0_0_0_0-8080-war-_-any-9539131192704472597 script.sh winstone895485359093337936.jar
기본 Parameter 설정 - String Parameter
빌드 시 파라미터 설정이 나옴
List Parameter 설정 - Choice Parameter
Booloon/Logic Parameter 설정
#!/bin/bash
NAME=$1
LASTNAME=$2
SHOW=$3
if [ "$SHOW" = "true" ]; then
echo "Hello, $NAME $LASTNAME"
else
echo "If you want to see the name, please mark the show option"
fi
DB 연결 테스트
- Dockerfile
FROM centos
RUN yum -y install openssh-server
RUN useradd remote_user && \\
echo "Shin" | passwd remote_user --stdin && \\
mkdir /home/remote_user/.ssh && \\
chmod 700 /home/remote_user/.ssh
COPY remote-key.pub /home/remote_user/.ssh/authorized_keys
RUN chown remote_user:remote_user -R /home/remote_user/.ssh/ && \\
chmod 600 /home/remote_user/.ssh/authorized_keys
RUN /usr/sbin/sshd-keygen
CMD /usr/bin/sshd -D
- Host SSH 키 생성
[vagrant@jenkins centos7]$ ssh-keygen -f remote-key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in remote-key.
Your public key has been saved in remote-key.pub.
The key fingerprint is:
SHA256:qri4/SB4jBrs9AX6GpACuhHNS/VrjdaVwuqe/M3yVRM vagrant@jenkins
The key's randomart image is:
+---[RSA 2048]----+
| . |
| o . . . . |
FROM centos
|o + . o o E |
|o+ . * o . |
|* .. * S o |
|==. .+ . . . |
|*=+ .o . |
|+*+o.+ ..o . |
|++==o +..o+ |
+----[SHA256]-----+
[vagrant@jenkins centos7]$ ls -al
total 12
drwxrwxr-x. 2 vagrant vagrant 64 Feb 27 05:24 .
drwxrwxr-x. 4 vagrant vagrant 84 Feb 27 05:16 ..
-rw-rw-r--. 1 vagrant vagrant 420 Feb 27 05:24 Dockerfile
-rw-------. 1 vagrant vagrant 1679 Feb 27 05:20 remote-key
-rw-r--r--. 1 vagrant vagrant 397 Feb 27 05:20 remote-key.pub
- Docker-compose remote-host 추가
version: '3'
services:
jenkins:
container_name: jenkins
image: jenkins/jenkins
ports:
- "8080:8080"
volumes:
- "$PWD/jenkins_data:/var/jenkins_home"
environment:
- "TZ=Asia/Seoul"
networks:
- net
remote_host:
container_name: remote-host
image: remote-host
build:
context: centos7 #Dockerfile을 지정한 디렉토리 설정
networks:
- net
networks:
net:
- 안되서 트러블슈팅
#centos8 Dockerfile 변경
FROM centos:8
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-* && \\
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-*
RUN yum -y install openssh-server
RUN useradd remote_user && \\
echo "remote_user:Shin" | chpasswd && \\
mkdir /home/remote_user/.ssh && \\
chmod 700 /home/remote_user/.ssh
COPY remote-key.pub /home/remote_user/.ssh/authorized_keys
RUN chown remote_user:remote_user -R /home/remote_user/.ssh/ && \\
chmod 600 /home/remote_user/.ssh/authorized_keys && \\
RUN ssh-keygen -A && rm -rf /run/nologin
CMD /usr/sbin/sshd -D
#Docker-compose 설정
#디렉토리 centos7 -> centos8 설정
docker run -it jenkins bash
ssh remote_user@remote_host
docker cp remote-key jenkins:/tmp/remote-key
#Jenkins 컨테이너 접속 후 확인
ssh -i remote-key remote_user@remote_host
- SSH 플러그인 설치 - Jenkins 관리 - 시스템 구성 - ssh remote hosts 입력
- 설정 시 Credential을 생성하여 Private Key를 입력해서 저장해야함
- Remote Job - Build 실행 부분에 Command Remote Host 설정
- Remote 서버에서 작업된 것을 확인할 수 있음
- DB 컨테이너 생성
#docker-compose에 추가
db_host:
container_name: db
image: mysql:5.7
environment:
- "MYSQL_ROOT_PASSWORD=Shin"
volume:
- "$PWD/db_data:/var/lib/mysql"
networks:
- net
- Remote Host → DB 접속
# Dockerfile에 mysql 설치
mysql -u root -h db_host -p
mysql> create database testdb;
Query OK, 1 row affected (0.00 sec)
mysql> use testdb;
Database changed
mysql> create table info (name varchar(20), lastname varchar(20), age int(2));
Query OK, 0 rows affected (0.11 sec)
mysql> desc info;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| lastname | varchar(20) | YES | | NULL | |
| age | int(2) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
mysql> insert into info values ('JS','Shin', 29);
Query OK, 1 row affected (0.00 sec)
- AWS S3 & IAM 설정
- DB 백업
#Remote에서 설정 시
[root@d025a8fcf18c /]# mysqldump --column-statistics=0 -u root -h db_host -p testdb > /tmp/db.sql
#Auto Backup 시
#!/bin/bash
DB_HOST=$1
DB_PASSWORD=$2
DB_NAME=$3
mysqldump --column-statistics=0 -u root -h $DB_HOST -p$DB_PASSWORD $DB_NAME > /tmp/db.sql
- AWS에서 Job 실행 시
- 기본 데이터는 Parameter로 설정한다.
- 민감한 데이터는 Credential에서 저장하고 사용한다. → Build Environment에서 지정
- 내부 테스트
- DB 테이블 생성 후 호스트,이름만 기본 파라미터로 생성하고 패스워드만 Credential로 테스트 진행
반응형
'DevOps' 카테고리의 다른 글
[Jenkins] DSL & 파이프라인 (0) | 2022.11.08 |
---|---|
[Jenkins] 기본 설정 정리 (0) | 2022.11.08 |
[DevOps] DevOps 기본 개념 정리 (0) | 2022.01.15 |
Comments