1. Ansible이란?
- Redhat 관리: 레드햇에서 관리하는 오픈소스 자동화 도구
- 구성 관리 도구: 서버의 상태를 설정하고 유지
- 절차적 언어: 작성된 순서대로 작업 실행
- Agentless: 별도의 에이전트 설치 없이 SSH를 통해 통신하므로 관리 간편
2. 환경 설정 및 설치 (Control Node)
앤서블을 설치하기 전, 호스트 이름 등록 및 저장소 설정이 필요
2.1 /etc/hosts 설정
vi /etc/hosts
10.0.0.21 cont
10.0.0.22 node1
10.0.0.23 node2
10.0.0.24 node3
2.2 Ansible 설치
dnf install -y epel-release # EPEL 저장소 활성화
dnf install -y ansible # 앤서블 설치
2.3 Ansible 설정 최적화 (ansible.cfg)
앤서블은 기본 설정으로도 작동하지만, 실무 환경에 맞게 ansible.cfg 파일을 커스텀하는 것이 좋음
- 설정 파일 생성: 앤서블 공식 GitHub에서 제공하는 기본 템플릿 코드를 복사하여 /etc/ansible/ansible.cfg에 적용
3. 인벤토리(Inventory) 및 SSH 설정
관리할 대상 서버들을 그룹화하고 비밀번호 없이 접속할 수 있도록 설정
3.1 인벤토리 구성 (/etc/ansible/hosts)
[web]
10.0.0.22
[was]
10.0.0.23
[db]
10.0.0.24
[tier]
10.0.0.22
10.0.0.23
10.0.0.24
3.2 SSH Key 자동 배포 플레이북 (ssh.yml)
매번 비밀번호를 입력하지 않도록 키를 생성하고 배포
- ansible.cfg에서 host_key_checking = False 설정을 해주면 첫 접속 시 물어보는 yes/no 과정을 생량 가능
---
- name: ssh create & deploy
hosts: all
gather_facts: false
tasks:
- name: ssh-key 생성
connection: local
command: "ssh-keygen -b 2048 -t rsa -f ~/.ssh/id_rsa -q -N ''"
run_once: true
args:
creates: "~/.ssh/id_rsa"
- name: 퍼블릭 키 배포
authorized_key:
user: root
state: present
key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
- 실행: ansible-playbook ssh.yml -u root -k (최초 1회만 비밀번호 입력)
4. 실전 모듈 활용 실습
4.1 Ping 모듈 (연결 테스트)
ansible tier -m ping
4.2 File 모듈 (디렉토리 및 파일 관리)
디렉토리를 생성하고 파일을 생성(touch)하거나 삭제(absent) 가능
- 권한 설정: mode: "0777"과 같이 따옴표를 사용하여 문자열로 지정하는 것이 안전
4.3 Lineinfile 모듈 (파일 내용 편집)
특정 파일의 내용을 수정하거나 한 줄을 추가/삭제할 때 사용, 특히 설정 파일(selinux, httpd.conf 등) 수정에 매우 유용
- name: selinux edit
hosts: cont
tasks:
- name: SELinux 비활성화 설정
lineinfile:
path: /ad/selinux
regexp: '^SELINUX=' # 정규표현식으로 해당 라인 찾기
line: 'SELINUX=disabled'
- name: 특정 라인 앞에 주석 추가
lineinfile:
path: /ad/selinux
insertbefore: '^SELINUX='
line: '# Managed by Ansible'
state: present
5. 유용한 실행 옵션 및 팁
- -C (Check mode): 드라이 런 옵션. 실제로 실행하지 않고 결과만 예측
- -v, -vvvv: 실행 과정을 상세하게 출력, 에러 디버깅 시 사용
모듈 설명 참고 사이트
https://docs.ansible.com/projects/ansible/2.9/modules/list_of_all_modules.html
반응형
'IT > Linux' 카테고리의 다른 글
| [Kali Linux] Nessus 설치 및 실습 가이드 (0) | 2026.02.23 |
|---|---|
| [Ansible] 실전 모듈 활용 (blockinfile, user, dnf) (0) | 2026.02.10 |
| [Linux] Apache(HTTPD) 웹 서버 구축 (0) | 2026.01.21 |
| [Linux] DNS / DNS이중화 (0) | 2026.01.20 |
| [Linux] DHCP-Server (1) | 2026.01.19 |