728x90
반응형

젠킨스 자체를 쿠버네티스 환경에 helm을 이용하면 쉽게 구축할 수 있었다.

 

하지만 기존에 사용하던 플러그인들과 각종 환경들을 그대로 가져오는 것이 문제였다.

 

플러그인의 경우 사용 중인지 아닌지 판별이 어려웠다.

 

plugins.jenkins.io/{plugin-name}에 있는 플러인 이름을 확인한 다음 values.yaml에서 installPlugins에 작성하여 배포했다.

 

https://github.com/jenkinsci/helm-charts/blob/0572830631b4a8bef26cff0286a99b9747686be1/charts/jenkins/values.yaml#L241-L245

 

작업들의 경우 ThinBackup을 이용하여 백업한 뒤 tar로 묶어서 scp로 다운로드했다.

 

그리고 백업 파일을 젠킨스가 올라간 파드에 kubectl cp 라는 명령어로 업로드하여 쉽게 작업들을 이전할 수 있었다.

 

Go 언어를 사용하여 플러그인을 사용하면 go를 쉽게 설치하여 사용할 수 있었다.

 

하지만 ansible 같은 설치를 별도로 해주어야 하는 프로그램들이 있어 젠킨스에서 제공하는 도커 이미지로는 할 수 없었다.

 

그리고 젠킨스 파드 내에서 프로그램 설치를 시도했지만 권한을 막아두었기에 에이전트를 띄워서 작업할 수 있는지 해보았다.

 

테스트를 해보니 작업을 수행할 때마다 파드를 띄우고 끝나면 종료하는 형식이었다.

 

python이 설치된 이미지를 활용할 수는 있겠지만 매번 ansible을 설치하거나 ansible이 설치된 커스텀 이미지를 만들어야 했다.

 

이런 것들이 번거롭기에 커스텀 젠킨스 이미지를 생성하여 사용하였다.

FROM jenkins/jenkins:2.375.2-lts-jdk11

USER root

RUN apt-get update && apt-get install -y build-essential python3 python3-pip
RUN pip install ansible

USER jenkins

 

참고 문헌

https://github.com/jenkinsci/helm-charts/tree/main/charts/jenkins

https://plugins.jenkins.io/thinBackup/

https://hub.docker.com/r/jenkins/jenkins

반응형
728x90
반응형

서버를 구성하는데 mediainfoffmpeg을 설치할 필요가 있었다.

 

설치할 서버가 적을 경우 하나씩 해도 되지만 서버가 많을 경우 일일이 하는 것이 어렵다.

 

이를 쉽게 하기 위해 자동화 도구 중에 하나인 Ansible을 사용했다.

 

많은 명령어들을 지원하는데 yum으로만 진행하여 다음과 같이 설정 파일을 만들었다.

- hosts: "{{ host }}"
  tasks:
  - name: install epel-release
    yum:
      name: epel-release
      state: present
    become: yes
    become_user: root
  - name: localinstall rpmfusion-free-release-7
    yum:
      name: https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
      disable_gpg_check: yes
      state: present
    become: yes
    become_user: root
  - name: install mediainfo
    yum:
      name: mediainfo
      state: present
    become: yes
    become_user: root
  - name: install ffmpeg
    yum:
      name: ffmpeg
      state: present
    become: yes
    become_user: root

stateyum과 같이 사용하는 값인데 absent, installed, latest, present, removed이 있다.

 

present, installed, latest는 설치를 진행하고 absent, removed는 패키지를 제거한다.

 

becomebecome_user를 사용하여 사용자를 전환할 수 있으며 become_userroot가 기본값이다.

 

yum 프록시 설정이 필요한 경우 yum.conf를 수정해야하는데 lineinfile을 사용하여 쉽게 수정할 수 있다.

 

- hosts: "{{ host }}"
  tasks:
 - name: proxy added to /etc/yum.conf
    lineinfile:
      path: /etc/yum.conf
      regexp: 'proxy='
      insertafter: '\[main\]'
      line: 'proxy=proxy_addr'
      state: present
    become: yes
    become_user: root

regexp는 찾으려는 문자열의 정규식이며 insertafter에 해당 문자열 다음에

 

statepresent인 경우 line의 값을 추가한다.

 

stateabsent, present가 있는데 absentline을 제거하고 present는 추가한다.

 

참고 문헌

  1. https://linuxize.com/post/how-to-install-ffmpeg-on-centos-7/

  2. https://docs.ansible.com/ansible/latest/modules/yum_module.html

  3. https://docs.ansible.com/ansible/latest/modules/lineinfile_module.html

반응형

+ Recent posts