본문 바로가기

클라우드/Ansible

[mac os] Ansible 설치하는법

 

ansible 설치 명령어

brew install python
brew install ansible
ansible --version

 

북에서 Ansible 실습을 체계적으로 학습하려면 각 목차의 세부 내용을 이해하고, 단계별로 실습을 진행하는 것이 중요합니다. 아래는 각 목차에 대한 상세 설명입니다.


1. Ansible 기본 이해

1.1. Ansible의 개념과 역할

  • Ansible은 IT 자동화 도구로, 서버 설정, 애플리케이션 배포, 네트워크 관리 등을 효율적으로 처리합니다.
  • Agentless(에이전트 설치 필요 없음) 방식으로 작동하며, 주로 SSH를 사용해 대상 시스템을 제어합니다.

1.2. Ansible 주요 구성 요소

  • Inventory: 관리할 호스트 목록을 정의하는 파일.
  • Playbooks: YAML로 작성된 작업 정의 파일.
  • Modules: Ansible에서 제공하는 기능 단위 (e.g., 파일 복사, 패키지 설치).
  • Roles: 복잡한 작업을 구조화하기 위한 디렉토리 구조.

1.3. SSH 기반 작동 원리

  • Ansible은 SSH를 통해 원격 명령을 실행하며, 인증을 위해 비밀번호SSH 키를 사용합니다.

2. 환경 설정

2.1. 필수 소프트웨어 설치

  • Homebrew: MacOS에서 패키지 설치를 쉽게 하기 위한 도구.
    bash
    코드 복사
  • Python: Ansible은 Python 기반이므로 Python이 필요합니다.
    bash
    코드 복사
    brew install python
  • Ansible 설치 및 확인:
    bash
    코드 복사
    brew install ansible ansible --version

2.2. 실습 환경 구축

  • 로컬 환경: Mac을 관리 대상으로 지정하여 간단히 실습 가능.
  • 가상 환경: Docker 또는 VirtualBox를 사용해 여러 VM을 생성하여 복잡한 시나리오를 테스트.
    • Docker 컨테이너:
      bash
      코드 복사
      docker run -d --name test-ansible -h test-ansible ubuntu:latest
    • Vagrant 사용:
      bash
      코드 복사
      vagrant init ubuntu/bionic64 vagrant up

2.3. SSH 키 생성 및 설정

  • SSH 키 생성 및 관리:
    bash
    코드 복사
    ssh-keygen -t rsa -b 2048 ssh-copy-id user@remote_ip

3. Ansible 인벤토리 설정

  • Inventory 파일:
    호스트 정보를 inventory.ini 파일에 작성.
  • ini
    코드 복사
    [webservers] 192.168.1.10 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa
  • 인벤토리 파일 사용:
    파일을 통해 명령 실행:
  • bash
    코드 복사
    ansible -i inventory.ini all -m ping

4. Ansible Playbook 작성

  • YAML 구조 이해:
    • YAML은 들여쓰기 기반의 구조화된 문법.
  • Playbook 작성 예제:
    yaml
    코드 복사
    - name: Install and start Nginx hosts: webservers become: yes tasks: - name: Install Nginx apt: name: nginx state: present - name: Start Nginx service: name: nginx state: started
  • Playbook 실행:
    bash
    코드 복사
    ansible-playbook -i inventory.ini playbook.yml

5. 기본 명령어 실습

  • 모듈 실행:
    • Ping 테스트:
      bash
      코드 복사
      ansible all -m ping
    • 쉘 명령 실행:
      bash
      코드 복사
      ansible all -m shell -a "uname -a"
  • Playbook 실행:
    작성된 Playbook을 실행해 관리 자동화.

6. 모듈 사용 실습

  • Ansible의 다양한 모듈로 작업 실행:
    • 파일 복사:
      bash
      코드 복사
      ansible all -m copy -a "src=~/file.txt dest=/tmp/file.txt"
    • 패키지 설치:
      bash
      코드 복사
      ansible all -m apt -a "name=curl state=present"

7. 역할(Role) 구성

  • Role 디렉토리 구조:
    plaintext
    코드 복사
    roles/ my-role/ tasks/ templates/ files/ vars/
  • Role 생성:
    bash
    코드 복사
    ansible-galaxy init my-role
  • Role 사용:
    Playbook에서 Role 호출:
    yaml
    코드 복사
    - name: Deploy Web Server hosts: webservers roles: - my-role

8. Ansible 고급 기능

8.1. 변수와 템플릿

  • 변수 사용 예:
    yaml
    코드 복사
    vars: app_name: myapp tasks: - name: Create directory file: path: "/var/www/{{ app_name }}" state: directory
  • Jinja2 템플릿을 사용해 동적 파일 생성.

8.2. 핸들러(Handlers)

  • 특정 작업 이후 실행되는 트리거:
    yaml
    코드 복사
    handlers: - name: Restart Nginx service: name: nginx state: restarted

9. 실습 프로젝트

  • 프로젝트 1: 웹 서버(Nginx) 설치 및 기본 페이지 배포.
  • 프로젝트 2: 데이터베이스 초기화 스크립트 작성.
  • 프로젝트 3: Docker 컨테이너 자동화 배포.

10. 문제 해결 및 디버깅

  • 출력 상세화:
    • -v, -vvv 옵션을 통해 디버깅 정보 확인.
  • Common Errors:
    • SSH 연결 문제: 키 또는 비밀번호 확인.
    • YAML 구문 오류: 들여쓰기 검토.

이 세부 내용을 실습하면서 따라가면 Ansible의 기본 개념부터 고급 사용법까지 차근차근 익힐 수 있습니다. 추가적인 도움이나 예제가 필요하면 요청하세요!

 
 

 

 

반응형

'클라우드 > Ansible' 카테고리의 다른 글

[Ansible] 실습 환경 만들기  (1) 2024.12.03