Ansible로 인프라 자동화 시작하기
카테고리
인프라/DevOps/보안
서브카테고리
DevOps
대상자
- DevOps 엔지니어, 시스템 관리자, 클라우드 개발자
- 초보자 대상 (SSH/Python 기반의 간단한 설정과 YAML 기반의 playbook 사용 가능)
핵심 요약
- Ansible은 agentless 자동화 도구로 SSH + Python만으로 작동 (
become: false
,ansible_host
,ansible_ssh_private_key_file
등) - Playbook은 YAML 형식의 작업 목록 (예:
apt
,command
,copy
모듈 사용) - GCP CLI 설치 예제에서 보여주는 핵심 흐름:
- hosts.ini
에서 서버 정보 정의 → vars.yml
에서 보안 정보 관리 → gcloud-install.yml
에서 실제 설치 작업 실행
섹션별 세부 요약
1. Ansible의 핵심 개념
- Agentless 특성: remote 서버에 agent 설치 없이 SSH만으로 연결 가능
- Declarative 방식: "무엇을 할지" 정의만 하면 Ansible이 실행 방식 결정 (예:
hosts
,tasks
,debug
모듈 사용) - Playbook 예시:
```yaml
- name: Install Google Cloud CLI on Ubuntu
hosts: all
tasks:
- name: Update apt cache
apt: update_cache: yes
```
2. Ubuntu 환경 설정
- Ansible 설치 명령:
```bash
sudo apt update && sudo apt install ansible
```
- 인벤 파일 구성:
```ini
[all]
server1 ansible_host=34.0.0.0 ansible_user=root ansible_ssh_private_key_file=~/.ssh/key.txt
```
- 변수 관리:
vars.yml
에서gcp_service_account_json
,gcp_project_id
와 같은 보안 정보 저장
3. Google Cloud CLI 설치 Playbook
- APT 패키지 설치:
apt-transport-https
,ca-certificates
,gnupg
,curl
등 - GPG 키 추가:
```bash
curl -fsSL | gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg
```
- GCP 인증:
gcloud auth activate-service-account --key-file={{ gcp_key_path }}
명령 사용
4. 실행 및 실행 예시
- Playbook 실행 명령:
```bash
ansible-playbook -i hosts.ini gcloud-install.yml
```
- 권한 처리:
sudo
또는become: true
설정 필수 (예:fail
모듈로 root 권한 검증)
결론
- Ansible은 인프라 자동화에 최적화된 DevOps 도구로, YAML 기반의 playbook과 SSH 기반의 remote 연동이 핵심
- 보안 정보는
vars.yml
에 별도 저장,set_fact
모듈로 환경별 변수 처리 - 실무 적용 시 playbook의 version control과 secret 관리가 필수적