ansible 장점
ansible 단점
자체적인 기능이 다른 Toolㅇ에 비하면 적음 자동완성이나 정적분석의 어려움 yaml 변수 사용으로 복잡성 증가 변수 값 확인이 엉려움 input output config 파일 간의 형식 일관성이 없음 가끔씩 성능 저하발생
inventory
작업 대상 서버와 변수 정보를 저장 ini, yaml 파일로 설정
all: hosts: children: web: db:
모든 호스트 정보 그룹별 호스트 정보
ad-hoc command
playbook을 작성하지 않고 직접 ansible module을 호출해서 실행하는 방식 재사용이 필요없는 명령어를 여러 호스트에서 실행 가능 침수로 인한 모든 장비의 전원을 끌 때
atlanta group에 있는 모든 서버를 10개 단위로 재부팅 실행 (동시처리 기본값 =5) ansible atlanta -a “/sbin/reboot” -f 10
webservers group 에 있는 모든 서버에특정 파일에 대해서 권한 수정
playbook
호스트와 Task를 연결하는 역할 playbook에서 Task를 지정해서 작업 진행 가능
role task를 묶어서 Role로 만들어서 반복 사용 가능 roles 폴더 내부에 정의해두면 자동으로 읽어옴 task: 작업 내용 handlers:g핸들러 templates: Role 템플릿 files: 정적파일 vars:변수 default: 기본변수이며 Vars에게 overwirted 될 수 있는 변수 meta: 작성자, 라이센스 같은 메타 정보, validation library: custom moduleCC
module
단일 명령어나 수행할 작업 Cp,apt,wget 기본 builtin 모듈 재공 윈도우는 별도 모듈
shell,apt,service module 예시 become 루트 권한 register: 결과값 저장 update_cache : apt update
handler
ansible이 지원하는 조건부 형식 조건에 맞을때 handler 실행 task에서 notify를 이용하여 handler의 name을 매개변수로 전달하여사용 일반적으로 모든 task가 실행되고 handler가 실행됨 notify를 여러번 받아도 handler는 1번만 실행됨 playbook에 다수의 handler를 포함하면 notify 순서가 아닌 handler 섹션에 정의된 순서대로 실행됨
variable
변수 종류 로컬변수 그룹 변수 글로벌 변수 vars_files 변수가 설정된 파일
vars: global_var: all: hosts: childer:
var: group_var: user_id:
변수 타입 string number boolean list dict: key:value
loop
condition
when: 조건문 코드레벨 tag: 태그 명령어레벨
facts
ansible 에서 호스트에서 검색/수집한 변수 호스트 정보 prefix: ansible_
gether_facts: “yes”
- name: print all availalbe facts ansible.bulitin.degbug: var: facts
-m ansible.bulitin.setup