내 잡다한 노트
Ansible 정리 본문
Ansible
수십개의 서버에 같은 동작의 작업을 한 번에 편하게 하기 위해서 사용.
IaC ( Infrastructure as Code ) 로 자주 쓰이는 도구. 또한 프로비저닝 도구 중 하나이다.
프로비저닝 도구는 서버나 클라우드 인프라를 설정, 배포, 관리하는 데 사용된다.
프로비저닝 도구는 다음과 같은 작업을 자동화한다.
- 서버 설정: 운영 체제 설치, 네트워크 설정, 패키지 설치 등 초기 서버 설정 작업.
- 소프트웨어 배포: 애플리케이션 배포, 구성 파일 배포 및 업데이트.
- 구성 관리: 시스템 구성 상태를 관리하고 유지.
- 오케스트레이션: 여러 서버와 서비스 간의 상호작용을 관리.
Ansible의 작업은 제어 노드(Control Node)에서 수행된다. 이 제어 노드는 playbook을 실행하는 서버라고 생각하면 된다.
인벤토리 파일에서 연결될 서버들을 정의하는데 이때 연결은 ssh를 통해 한다.
ansible의 서버는 dj_ds1로 정하였다. 또한, ssh 연결을 하기 위한 계정은 monitoring 계정이다.
ansible 디렉토리에서 playbooks 에 들어가면 다양한 작업들이 작성돼있다.
명령어
인벤토리 목록 확인 : ansible-inventory --list 또는 ansible-inventory -i ./inventory --graph
Ping 모듈 사용 (연결 테스트):
ansible all -m ping -i inventory.yaml
플레이북 실행 :
ansible-playbook -i hosts.yaml deploy_monitoring.yml
플레이블 validation check :
ansible-playbook —syntax-check deploy_monitoring.yml
모듈
Ansible의 shell 모듈이나 command 모듈을 사용하고, 그 결과를 중앙에서 볼 수 있도록 register와 debug 모듈을 활용할 수 있다.
tasks:
- name: Run loginctl list-sessions
command: loginctl list-sessions
register: loginctl_output
- name: Print the output of loginctl list-sessions
debug:
var: loginctl_output.stdout_lines
결과를 파일로 저장하려면 local_action과 copy 모듈을 사용할 수 있다.
- name: Save output to file on remote host
copy:
content: "{{ loginctl_output.stdout }}"
dest: "/tmp/loginctl_sessions_{{ inventory_hostname }}.txt"
- name: Fetch the output files to control node
fetch:
src: "/tmp/loginctl_sessions_{{ inventory_hostname }}.txt"
dest: "/tmp/"
flat: yes
Facts
Managed Node들에 대한 다양한 정보를 자동으로 수집하고 제공하는 메커니즘이다.
즉, playbook을 실행하면 자동으로 실행된다. 이걸 하기 싫다면 playbook에 gather_facts: no 라고 설정해주면 된다.
관리되는 호스트에 접속할 때, setup 모듈을 사용하여 호스트의 하드웨어, 운영체제, 네트워크 설정 등 다양한 시스템 정보를 수집하며, 이 정보를 facts 라고 부른다.
수집된 facts는 playbook 내에서 변수처럼 사용될 수 있다.
ansible_facts
: 모든 facts를 하나의 딕셔너리로 보여줍니다. 각 facts는 ansible_facts
라는 변수 아래에 속하며, Playbook에서 쉽게 참조할 수 있습니다.
- ansible_distribution: 운영 체제의 이름을 나타냅니다 (예: Ubuntu, CentOS).
- ansible_distribution_version: 운영 체제의 버전을 나타냅니다 (예: 20.04, 7).
- ansible_default_ipv4['address']: 기본 IPv4 주소를 나타냅니다.
Ansible galaxy
Ansible 커뮤니티에서 공유하는 수천 개의 Roles와 Collections을 찾아보고 사용할 수 있는 공식 플랫폼이다.
Role 설치 :
ansible-galaxy install geerlingguy.postgresql
설치된 Role 사용 :
'Infra > Ansible' 카테고리의 다른 글
ansible 에서 자주 쓰이는 모듈 정리 (3) | 2024.11.12 |
---|---|
ansible playbook 기본 구조 (0) | 2024.08.27 |
Ansible 특징 (0) | 2024.06.02 |
Ansible 사용 후기 (1) | 2024.06.02 |