Ansible 개요와 설치

2023. 10. 16. 12:12docker

Ansible

Ansible은 오픈 소스 자동화 도구로, IT 인프라스트럭처 및 애플리케이션 배포를 자동화하기 위해 사용된다. Ansible은 서버 구성, 소프트웨어 배포, 작업 자동화, 설정 관리 등 다양한 작업을 자동화할 수 있다.

 

Ansible은 DevOps 및 시스템 관리자들에게 인프라스트럭처 자동화, 배포 자동화 및 설정 관리를 단순하게 만들어주는 강력한 도구 중 하나다. Ansible을 사용하면 반복적이고 시간 소모적인 작업을 줄이고, 일관된 환경을 유지하며 신속하게 대응할 수 있다.

 

 

Ansible의 주요 특징과 개념
  • 설정 관리 및 자동화 : Ansible을 사용하면 서버 및 네트워크 장치의 설정을 중앙에서 관리하고 자동화할 수 있다.
  • 에이전트 없음 : Ansible은 에이전트를 설치할 필요가 없으며 SSH 또는 WinRM을 통해 원격 시스템에 연결하여 작업을 수행한다.
  • Playbook : Ansible의 핵심 개념 중 하나로, YAML 형식으로 작성된 플레이북은 원하는 작업 및 역할을 정의한다.
  • 인벤토리 (Inventory) : 관리 대상 시스템의 목록을 포함하는 파일 또는 디렉토리다.
  • 모듈 (Modules) : Ansible이 시스템에서 실행하는 작업을 수행하는 플러그인 형태의 코드다. 예를 들어, 서비스 시작, 파일 복사, 패키지 설치 등의 작업을 처리할 수 있다.
  • 플레이북 실행 (Playbook Execution) : Ansible 명령을 사용하여 플레이북을 실행하고 원격 시스템에서 지정된 작업을 수행한다.
  • 역할 기반 접근 제어 (Role-Based Access Control, RBAC) : Ansible Tower 또는 AWX와 같은 Ansible의 상업적인 버전에서 제공되는 기능으로, 팀 내에서 역할 기반의 권한을 관리할 수 있다.

 

 

IaC

IaC (Infrastructure as Code)는 인프라스트럭처를 코드로 정의하고 관리하는 접근 방식을 나타낸다. IaC는 인프라스트럭처를 자동화하고, 프로비저닝, 구성 및 관리를 코드로 처리하여 시스템을 더 예측 가능하고 관리 가능하게 만든다.

IaC의 중요한 개념 중 하나는 "멱등성(Idempotency)"이다. 멱등성은 동일한 코드 또는 명령을 여러 번 실행해도 항상 동일한 결과를 반환하는 특성을 나타낸다. 다시 말해, 한 번 실행하든 두 번 실행하든 상관없이 최종 상태는 동일해야 한다.

 

 

멱등성의 중요성
  • 안정성 : 멱등한 코드 또는 명령은 시스템을 안정하게 유지한다. 코드를 여러 번 실행해도 시스템 상태가 변하지 않기 때문에 예상치 못한 부작용이나 오류를 방지할 수 있다.
  • 반복성 : 멱등한 코드는 인프라스트럭처 변경을 효과적으로 관리하는 데 도움을 준다. 코드를 다시 실행하여 원하는 상태로 시스템을 되돌릴 수 있으며, 변경 내역을 추적하고 롤백할 수 있다.
  • 확장성 : 멱등한 코드는 인프라스트럭처의 확장성을 보장한다. 시스템이 확장될 때도 멱등성을 유지하여 새로운 리소스가 원하는 상태로 프로비저닝될 수 있다.

 

 

실습 개요

 

서버이름 SSH 포트 맵핑 ip 주소 hostname SSH 비밀번호
ansible-server 20022:22 172.17.0.3 afd24c2d0f8c P@ssw0rd
 docker-server2 30022:22 172.17.0.4 a57547d8b8dc P@ssw0rd
docker-server1-tomcat 10022:22 172.17.0.5 a7ed9a7414e0 12345
jenkins-server   172.17.0.2 e36ca255896f 12345

 

 

ansible 가져오기

로그인

 

 

docker pull myoungseok/ansible

docker tag myougseok/ansible jingukang/ansible

docker push jingukang/ansible

 

 

이미지 확인

 

 

repository 확인

 

 

ansible-server 설치

docker run --privileged --name ansible-server -d -p 20022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup --cgroupns=host jingukang/ansible /usr/sbin/init

 

 

docker exec -it ansible-server bash

OS 정보

 

 

ip 주소

 

버전

 

 

필요 패키지를 아래와 같이 설치하자.

yum -y install ncurses
yum -y install net-tools
yum -y install nano

[root@afd24c2d0f8c ~]# mkdir /etc/ansible
[root@afd24c2d0f8c ~]# nano /etc/ansible/hosts

각 ip 주소는 server 설치 후 확인해야 한다

 

 

systemctl start docker

systemctl enable docker

systemctl status docker

데몬 실행 상태 확인

 

 

docker-server2 설치

docker run --privileged --name docker-server2 -d -p 30022:22 -p 8084:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup --cgroupns=host jingukang/ansible /usr/sbin/init

ip 주소 확인

 

 

ansible 버전 확인

 

 

OS 확인

 

 

tomcat 확인

docker run -d --name tomcat -p 8083:8080 tomcat:9.0

docker exec -it tomcat bash

ip 주소 확인

 

 

jenkins 확인

docker exec -it -u 0 jenkins-server bash

ip 주소 확인

 

 

아래와 같이 패키지를 설치하자.

apt -y install iputils-ping

apt -y install python3.*

 

 

터미널을 나와서 설치된 container를 확인하면 아래와 같다.

설치된 container 확인

 

 

tomcat과 jenkins-server에 ssh 설치

apt update

apt -y install openssh-client openssh-server

apt -y install net-tools

apt -y install nano

 

nano /etc/ssh/sshd_config

설정파일 수정내용은 아래 스크린샷과 같다.

 

 

passwd root

12345

12345

service ssh [restart | enable]

 

 

ssh plugin 설치

install 클릭

'docker' 카테고리의 다른 글

Ansible playbook  (1) 2023.10.17
Ansible 실습  (0) 2023.10.16
SCM  (0) 2023.10.11
container tomcat에 app 배포 [Jenkins, GitHub, Maven 이용]  (0) 2023.10.11
ubuntu tomcat에 app 배포 [Jenkins, GitHub, Maven 이용]  (0) 2023.10.11