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코드 복사/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 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
- Docker 컨테이너:
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"
- Ping 테스트:
- 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 |
---|