[Jenkins] 컨테이너로 Ansible 기동하기

seopppio·2024년 12월 4일

Jenkins

목록 보기
12/25

Ansible 서버 깔려 있는 이미지 준비해서 다운로드

Ansible 컨테이너 실행
docker run --privileged -itd --name ansible-server -p 20022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/ansible:latest /usr/sbin/init

docker sever 실행
docker run --privileged --name docker-server -itd -p 10022:22 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/docker:latest /usr/sbin/init


Ansible 서버 접속
ssh root@localhost -p 20022



ncurses 설치

ansible이 client로 관리하고자 하는 대상 관리법

/etc/ansible/hosts

엔서블 설치 확인

그룹 : devops
자기 자신도 ansible client처럼 사용
ansible이 없는 docker만 깔린 컨테이너 ansible 클라이언트로 사용

실습

앤서블 서버에서 앤서블 클라이언트로 명령어들 실행해봐서 Infrastructure 및 환경정보 관리해보자

로컬호스트에서는
포트 포워딩으로 접속

엔서블 안에서는
직접 서버 ip address로 접속
이 과정에서 id, password 필요하지만, Ansible에서 매번 password 입력하기 번거롭다
-> 각각의 서버의 password 정보 저장해서, 비밀번호 입력 없이 바로 접속하게 ansible 환경 정보 관리하자

ansible에서 key 설치 후, 해당 키값을 다른 서버에 전달해서 해보자


일단 도커 컨테이너 한 번 접속 해보자

ssh-keygen
ssh-copy-id root@[접속할 서버 IP]


키 복사후 그 다음부터는 바로 접속이 된다 -> 키 복사 ansible 서버와 docker 서버 모두 해주자

Ansible 옵션


인벤토리가 없는 경우 -i 쓰면, /etc/ansible/hosts 파일 디폴트로 쓴다
-i 이후에 파일 설정하면, 호스트 파일 정보 지정 가능

  • Ansible에서는 같은 명령어 쓰면, 적용 한 번만 된다 -> 멱등성
    ansible 아닌 경우 echo 할 때마다 계속 쓰여진다

Ansible 모듈

Ansible 모듈 사이트
https://docs.ansible.com/ansible/2.9/modules/list_of_all_modules.html

  • group -m ping

    도커 서버 멈추기

  • 명령어 호출 , shell 모듈
    ansible all -m shell -a "free -h"

    free -h라는 명령어를 각 서버에서 호출하고, 결과 값 출력, -a 옵션은 파라미터 지정

  • 파일 복사

ansible all -m copy -a "src=./test.txt dest=/tmp"

test.txt를 모든 그룹 모든 클라이언트의 /tmp에 복사

  • 프로그램 설치

    ansible devops -m yum -a "name=httpd state=present"

정리

엔서블을 사용하면, 하나의 서버에서 다양한 작업들을 제어할 수 있다
하나의 서버에서 일일이 순차적으로 작업했던 것을, 엔서블 서버에서 한 번만 진행하면 된다

환경설정 및 상태 값 제어도 가능해진다

0개의 댓글