Linux

Ansible 기초. Ad-Hoc을 이용한 Nginx 웹 서버 구축_[Rocky Linux]

KDY0218 2025. 11. 19. 21:08

서론

VMware 워크스테이션 pro를 이용했다.
서버B RockyLinux8.1 최소설치 모드
편의상 root 권한으로 진행했다.
서버B : 제어노드
서버A : 관리대상
**모든 작업은 Server B에서 수행되었으며, Server A에는 직접 로그인하지 않았음**
** 서버 2개만 있다면 똑같이 구축을 할 수 있습니다!

 

 

목표

Ansible의 기본 구조 이해: Control Node(Server B)와 Managed Node(Server A)의 관계를 이해하고 환경을 구성한다.
Ad-Hoc 명령어 실습: Ad-Hoc 명령어를 통해 Ansible 모듈(Module)의 기본 사용법을 익힌다.
웹 서버 원격 구축: 직접 접속하지 않고 원격 명령만으로 Nginx 웹 서버를 설치, 설정, 배포까지 완료.

 

 

 

 

EPEL 및 Ansible 설치

dnf -y install epel-release 
dnf -y install ansible

설명 : 작업을 지시할 서버B에 Ansible 도구를 설치.

** EPEL (Extra Packages for Enterprise Linux) 은 엔터프라이즈 리눅스 사용자들이 기본 배포판 저장소에는 없지만 유용한 추가 패키지를 쉽게 설치할 수 있도록 도와주는 프로젝트이다. 이 패키지를 설치하면 EPEL 저장소가 시스템에 추가되어 여러 추가 패키지를 사용할 수 있게 된다.

 

ansible --version -> 버전 확인 명령어

 

 

 

서버B 에서 서버A 인벤토리 등록

vi /etc/ansible/hosts -> 서버B에서 접속
[webserver] 
192.168.111.100 -> 파일 맨 아래에 추가한다.

설명 : [ webserver ] 라는 그룹 이름을 만들고 그 아래에 서버A의 IP 주소를 적는다.

vi /etc/ansible/hosts

 

SSH 키 생성 및 전달 (Server B ➡️ Server A)

키 생성 (엔터만 계속 입력)
ssh-keygen

(Server B) 공개키를 Server A에게 복사
ssh-copy-id root@192.168.111.100

설명 : 초기 설정에는 서버A의 비밀번호 필요.

서버 B에서 서버A에 비밀번호 없이 접속할 수 있도록 공개키를 A에게 미리 건네준다

비밀번호를 한번 입력하면 이후부터는 자동접속이 된다.

키 생성 및 전달.

 

연결 테스트

ansible webserver -m ping

설명 : 서버B에서 서버A로 연결이 잘 됐는지 확인해본다.

초록색 SUCCESS가 뜨면 성공

 

 

 

구축: Server B에서 명령 내려 Nginx 설치하기

 

신규 사용자 생성

ansible webserver -m user -a "name=kaka state=present"

설명 : 서버A에게 kaka 라는 사용자를 만들라고 지시한다.

 

 

Nginx 웹 서버 설치 (DNF 모듈)

ansible webserver -m dnf -a "name=nginx state=latest"

설명 : 서버 A 에게 패키지 관리자 dnf를 사용해서 nginx 최신버전을 설치하라고 지시한다.

 

 

서비스 시작하기

ansible webserver -m service -a "name=nginx state=started"

설명 : 서버A에게 방금 설치한 nginx를 시작하라고 지시한다.

검은화면의 단점..

 

방화벽 포트 개방

ansible webserver -m shell -a "systemctl start firewalld" 
ansible webserver -m firewalld -a "service=http permanent=yes immediate=yes state=enabled"

설명 : 방화벽 데몬 부터 키고서 , 다음으로 80번 포트(http) 영구적으로 개방한다.

 

 

 

배포: Server B의 파일을 Server A로 보내기

서버B에서 파일 만들기

echo "Kaká is the winner of the 2007 Ballon d'Or." > index.html
ansible webserver -m copy -a "src=index.html dest=/usr/share/nginx/html/index.html"

설명 : 서버B에 테스트용 웹페이지 파일을 만든다.

그리고 Copy 모듈을 통해서 서버B에 있는 index.html을 복사해서 서버A의 웹사이트 폴더에 덮어씌운다.

 

 

최종확인

브라우저를 열고 Server A의 IP 주소(http://192.168.111.100)로 접속

내 학창시절 영웅은 카카였다.

 

 

 

** 궁금하신 부분 댓글 남겨주시면 아는 선에서 최대한 빠르게 답변 남겨드리겠습니다.

** 틀린 부분 있을시 댓글로 남겨주시면 더 공부하겠습니다.