본문 바로가기
IT/Linux

[Ansible] 앤서블 기초 및 구성 관리 실습 정리

by Archiver Jun 2026. 2. 9.

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 파일을 커스텀하는 것이 좋음

  1. 설정 파일 생성: 앤서블 공식 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