자동화/CICD

GoCD Agent 구축하기

bong2. 2022. 9. 15. 16:33

GoCD Agent Install

#1.  GoCD agent 의 20.8.0 version 의 Docker Image Download

gocd-agent에 여러가지 source를 추가 설치해야 한다.

이를 위한 Dockerfile은 아래와 같다.

더보기

FROM gocd/gocd-agent-ubuntu-18.04:v20.10.0

MAINTAINER seoki
 
 USER root
 ENV DEBIAN_FRONTEND noninteractive
 RUN apt-get update -y && apt-get install -y locales && apt-get install -y apt-utils
 RUN export LANGUAGE=en_US.UTF-8 && export LANG=en_US.UTF-8 && export LC_ALL=en_US.UTF-8
 ENV LANGUAGE=en_US.UTF-8
 ENV LANG=en_US.UTF-8
 ENV LC_ALL=en_US.UTF-8
 RUN locale-gen en_US.UTF-8
 RUN dpkg-reconfigure locales
 RUN apt-get update -y && apt-get upgrade -y
 RUN apt-get install -y vim && apt-get install -y net-tools && apt-get install -y iputils-ping && \
     apt-get install -y python3 && apt-get install -y python3-pip && apt-get install -y wget && \
    apt-get install -y curl && apt-get install -y git && apt-get install -y openssl && \
     apt-get install -y ssh && apt-get install -y apt-transport-https
     RUN apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv-keys 023EDB0B && \
         echo deb https://dl.bintray.com/gauge/gauge-deb stable main | tee -a /etc/apt/sources.list
RUN apt-get update -y && apt-get install -y gauge
RUN pip3 install scapy
 
RUN apt-get install telnet -y
RUN apt-get update -y && apt-get upgrade -y
 
RUN gauge install html-report
RUN gauge install python
RUN gauge install screenshot
 
USER go
WORKDIR /home/go
RUN mkdir ginit
WORKDIR /home/go/ginit
RUN gauge init python
WORKDIR /home/go
 
RUN gauge install html-report
RUN gauge install screenshot
RUN python3 .gauge/plugins/python/*/check_and_install_getgauge.py
RUN git config --global http.sslverify false
 
USER root

#2  GoCD Agent macvlan 생성

Agent는 192.168.58.201~208까지 8대를 사용할 계획이다.

실행구문

docker network create -d macvlan --subnet=${IP/subnet} --gateway=${GW IP} -o parent=eth0  macvlan

정보

사용하고자 하는 대역에 맞게 Linux server의 인터페이스와 macvlan을 설정
Local IP 로 Server를 Background로 돌린다면 macvlan은 필요치 않음.

#3.  GoCD Agent 구동

GoCD Agent 접속을 위한 정보를 보관하기 위해 Container와  Local server로 File을 분리하여 파일을 관리하는 구조를 선택한다.

GoCD 에 필요한 폴더명은 NSEL_Agent로 정한다.  해당 폴더내에서 godata 폴더를 연결시킬 예정이다. 이러한 이유는 Server와 Agent간 접속 인증정보를 가지게 되는데 Docker가 재 구동 시 이가 변경되기 때문이다.

Local Server에서 이 폴더에 대한 권한을 모두 풀어준다.

실행구문

mkdir NSEL_Agent
chmod 777 NSEL_Agent

위 까지 모두 진행이 되었으면 GoCD Agent Docker를 수행시킨다.

실행구문

docker run -d \
--hostname NSEL_Agent_01 \
--net macvlan --ip ${IP}\
-v /root/NSEL_Agent/Agent01:/godata \
-e GO_SERVER_URL="http://${GO_SERVER_IP}:8153/go" \
-e AGENT_AUTO_REGISTER_HOSTNAME=SEOKI_Agent_01\
--privileged \
--name NSEL_Agent_01\
seoki_gocd_agent:v20.8.0

실행화면

## Docker Agent 실행
root@Worker11:~# docker run -d --hostname NSEL_Agent_01 --net macvlan --ip ${IP} \
> -v /root/NSEL_Agent/Agent01:/godata \
> -e GO_SERVER_URL="http://${GO_SERVER_IP}:8153/go" \
> -e AGENT_AUTO_REGISTER_HOSTNAME=NSEL_Agent_01 \
> --privileged \
> --name NSEL_Agent_01 \
> seoki_gocd_agent:v20.8.0
a83f688ee01cc404f5ea696d655c338a572fda573aeef0402d81cd5091b4850f
root@Worker11:~#
 
 
## Docker 구동확인
root@Worker11:~# docker ps -a
CONTAINER ID   IMAGE                    COMMAND                  CREATED          STATUS          PORTS     NAMES
a83f688ee01c   seoki_gocd_agent:v20.8.0   "/docker-entrypoint.??   14 seconds ago   Up 12 seconds             NSEL_Agent_01
root@Worker11:~#

GoCD Agent를 구동시켰다면 GoCD Server에 접속하여 정상적으로  Agent가 붙었는지 확인한다.

연결된 Agent를 선택하여 Enable를 눌러주면 Status 상태가 idle로 사용준비가 끝난다.

위와 같은 방법을 반복하여 다수의 Agent를 구축 연동하면 된다

#4.  GoCD Agent 참고사항

Docker Server나 혹은 Docker Agent가 On Off 되는 경우가 분명히 존재할 것이다. 

물론 기본적으로 godata 폴더를 분리하여 기존 접속 정로블 Local server에서 관리하도록 분리를 시켜놓아서 docker가 재 구동되더라도 바로 붙는 환경일 것 이다.

다만 예외적인 상황에 인증문제로 GoCD server와 Agent가 접속되지 않는다면 Local server에서 관리하여 Agent 의 godata를 모두 제거해주면 된다.

그러면 docker image가 가지고 있는 초기환경에서 Server와 재접속이 이루어지고 인증정보를 재 갱신하도록 되어 있다.