오늘은 솔직히 간단한 모듈 명령어 연습과 더 간단한 플레이북 적는 법을 연습했다
참고
https://docs.ansible.com/ansible/latest/collections/index_module.html
간단하게 ansible에서 사용하는 명령어
모듈은 하나의 작은 프로그램
ansible을 이용하여 managed node에 대하여 구성 관리를 수행하는 실질적인 동작 수행
모듈은 namespace 단위로 관리
모듈은 기본적으로 멱등성( Idempotent )를 가지고 있다.
Ansible 에서는 모듈( module ), 태스크( task ), Ad-hoc, Playbook은 멱등성을 가진다.
일부 모듈은 멱등성 없다.
managed node들의 명령줄에서 임의의 명령 실행
managed node의 쉘에서 실행되는게 아니므로 쉘 작업을 수행할 수 없다.
리다이렉션이나 파이프 기능도 사용 불가능
managed node에 파이썬이 설치되어 있어야 실행
ansible <host 패턴> -m command -a <명령>
managed node의 쉘을 통해 명령어 처리
managed node의 쉘 환경변수에도 접근할 수 있고 리다이렉션이나 파이프 기능도 사용 가능
managed node에 파이썬이 설치되어 있어야 실행
ansible <host 패턴> -m shell -a <명령>
ansible managed -m shell -a "tail -n 2 /etc/passwd" -i ./hosts
사용자 추가/삭제 관리 모듈
name 파라미터
ansible <host 패턴> -m user -a <명령> --become
RedHat 배포판 패키지 관리 명령인 yum에 대한 모듈
유사 모듈 - apt, dnf 모듈
name 파라미터
설치/삭제할 패키지 이름
state 파라미터
present, installed - 설치
latest - upgrade
absent, remove - 삭제
ansible <host 패턴> -m yum -a <명령> --become
시스템 서비스( 데몬 프로세스 )에 대한 시작, 종료, 재시작등의 기능 제공 모듈
유사 모듈 - systemd 모듈
name 파라미터
서비스 이름
state 파라미터
started - 시작
stopped - 중지
restarted - 재시작
reloaded - 재로드
ansible <host 패턴> -m service -a <명령> --become
control node( source 측 )에서 managed node( destination 측 )로 파일 복사( 전송 )
src 파라미터
복사( 전송 )할 파일 이름( 경로 포함 )
dest 파라미터
복사( 전송 )될 위치
YAML - YAML Ain’t Markup Language
데이터를 표현하는 목적으로 사용하는 script 형식
주고 선언 정보나 환경 설정 정보를 기술 하는 목적으로 활용
Ansible에서는 Playbook을 작성할 때 항상 YAML 형식으로 작성
Ansible에서 활용하는 YAML 문법
https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html
Ansible에서 작성하는 Playbook 파일 확장자 - .yml
파일 시작
Ansible Playbook에서 사용하는 YAML 파일 시작은 -( 대시 ) 기호 3개( - - - )로 구성
Playbook 최상단에 표시하며 생략할 수 있다.
파일 끝
Playbook 파일 끝 표시는 … 으로 표시
생략할 수 있다.
주석 - comment
설명 정보
데이터( 하나의 값 ) 표현을 위한 자료형
문자열
일반적인 모든 자료 형태
YAML 문자열을 “( 따옴표 )로 묶을 필요가 없다.
필요하다면 “( 따옴표 )로 묶어서 사용 가능
블린 - boolean
참/거짓, yes/no와 같은 둘 중의 하나의 상태 표시
YAML은 Native Boolean 타입을 갖고 있다.
True/False로 해석
Collection - 여러개의 데이터 저장
리스트 - list
파이썬 언어의 리스트 자료형과 유사
YAML에서는 시퀀스( sequence ) 라 부른다.
리스트는 -( 대시 )로 구분한다.
[ ] 묶는 인라인( inline ) 포맷 지원
딕셔너리 - dictionary
파이썬 언어의 dict 자료형과 유사
YAML에서는 매핑( mapping )이라 부른다.
k( key ):v( value ) 형식
{ } 묶는 인라인( inline ) 포맷 지원
라인 폴딩 - line folding
파일 콘텐츠를 보기좋게 관리하기 위해 여러 라인에 나누어 표기할 때 사용
문자로 라인 폴딩을 사용해 표현
YAML 내용은 각 단계( level )에 대한 표현은 스페이스( space )를 이용하여 표현
단계 표현을 위한 들여쓰기( indentation )은 스페이스 2칸을 사용
탭( tap )을 사용하면 오류 발생
Playbook
인벤토리에 정의된 managed node에서 무엇을 해야 할 것인가( 서버 구성 정보 )를 정의한 내용
자동화 절차를 기술한 코드 파일
YAML 포맷으로 표현
설정이나 프로세스에 대한 모델 정의를 표현한 최소한의 문법으로 구성
Playbook의 목표는 managed node 그룹을 잘 정의된 Ansible 내에서 Task로 불리는 역할( role )에 매핑해 주는 것
Playbook 파일
파일명에 대한 특별한 규칙은 없다.
임의의 이름으로 playbook 파일을 작성하고 확장자는 .yml 부여
Playbook 실행
ansible-playbook [ 옵션 ] <playbook 파일명>
-i <인벤토리 파일명> - 사용자가 지정한 위치의 인벤토리 파일 사용
-e <추가 변수> - 추가 변수 지정, key=value 형식
Playbook 구조
playbook - play - task 구조
playbook
managed node에 적용할 코드 집합
play
한 번에 일괄적으로 수행할 작업단위 - task 모음
task
실제 수행할 작업 내용 - 모듈로 표현