- 모듈(Module)
참고 : https://docs.ansible.com/ansible/latest/collections/index_module.html
Index of all Modules — Ansible Documentation
cisco.aci.aci_domain – Manage physical, virtual, bridged, routed or FC domain profiles (phys:DomP, vmm:DomP, l2ext:DomP, l3ext:DomP, fc:DomP)
docs.ansible.com
간단하게 ansible 에서 사용하는 명령어
모듈을 하나의 작은 프로그램임
ansible 을 이용해서 managed node 에 대하여 구성 관리를 수행하는 실질적인 동작 수행
모듈은 namespace 단위로 관리
모듈 지정 방법 - namespace.모듈
ansible.builtin namespace 는 ansible 기본 모듈 namespace
- ansible.builtin namespace의 모듈은 별도로 namespace 지정 없이도 사용할 수 있다
ansible-doc - ansible document 확인 명령
parameters - 해당 모듈을 사용할 때 전달할 수 있는 파라미터(인수, argument)에 대한 설명, 전달하는 값
attribute - 해당 모듈 속성(상태), 모듈 동작시 적용
return value - 해당 모듈을 실행한 후의 결과값
example - 해당 모듈 사용법
ansible-doc -l : ansible 모듈의 전체 목록 출력
ansible-doc [모듈명] : 모듈명에 대한 도움말 출력
ansible-doc -s [모듈명] : 모듈을 사용할 Playbook 구문 출력
모듈은 기본적으로 멱등성(Idempotent)를 가지고 있다.
ansible 에서 모듈, 테스크, Ad-hoc, Playbook 은 멱등성을 가진다.
- 일부 모듈은 멱등성이 없다.
command 모듈
- managed node 들의 임의의 명령 실행
- managed node 의 쉘에서 실행되는게 아니므로 쉘 작업을 수행할 수 없다.
- 리다이렉션이나 파이프 기능도 사용 불가능
- managed node에 파이썬이 설치되어 있어야 실행됨
- ex) ansible [managed node] -m command -a [명령]
shell 모듈
- managed node의 쉘을 통해 명령어 처리
- managed node의 쉘 환경변수에도 접근 할 수 있고 리다이렉션이나 파이프 기능도 사용 가능
- managed node 에 파이썬이 설치되어 있어야 실행 가능
- ex) ansible [managed node] -m shell -a [명령]
raw 모듈
- 모듈 하위 시스템을 거치지 않고 원격 쉘을 사용하여 직접 명령 실행
- 파이썬을 설치할 수 없는 시스템에서 유용한 모듈
- managed node 에 파이썬을 설치하는데도 유용한 모듈
- Linux 기본 조건을 만족하지 못하거나 SSH 가 없는 환경에서 사용
- 중요 모듈
user 모듈
- 사용자 추가/삭제 관리 모듈
- name 파라미터 : 추가/삭제할 사용자 이름
- state 파라미터
present - 생성, default
absent - 소멸
- ex) ansible [managed node] -m user -a [명령] --become
- --become 은 특정 사용자로 전환 할지 여부, sudo 가 default 로 지정되어있음
모듈 기술 문서 : https://docs.ansible.com/ansible/2.9_ja/modules/user_module.html#user-module
user – Manage user accounts — Ansible Documentation
© Copyright 2019 Red Hat, Inc. Last updated on Sep 22, 2020.
docs.ansible.com
yum 모듈
- RedHat 배포판 패키지 관리 명령인 yum 에 대한 모듈
- 유사 모듈 - apt, dnf 모듈
- name 파라미터 : 설치/삭제할 패키지 이름
- state 파라미터
present, installed - 설치
latest - upgrade
absent, remove - 삭제
- ex) ansible [managed node] -m yum -a [명령] --become
service 모듈
- 시스템 서비스(데몬)에 대한 시작, 종료, 재시작 등의 기능 제공 모듈
- 유사 모듈 - systemd 모듈
- name 파라미터 : 서비스 이름
- state 파라미터 :
stared - 시작
stopped - 중지
restarted - 재시작
reloaded - 재로드
- ex) ansible [managed node] -m service -a [명령] --become
copy 모듈
- control node (source 측) 에서 managed node ( destination 측 ) 로 파일 복사 (전송)
- src 파라미터 : 복사(전송)할 파일 이름(경로포함)
- dest 파라미터 : 복사(전송)할 위치
- YAML - YAML Aint Markup Language
데이터를 표현하는 목적으로 사용하는 script 형식
주로 선언 정보나 환경 설정 정보를 기술하는 목적으로 활용
Ansible 에서는 Playbook 을 작성할 때 항상 YAML 형식으로 작성
Ansible 에서 활용하는 YAML 문법
https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html
YAML Syntax — Ansible Documentation
© Copyright Ansible project contributors. Last updated on Sep 15, 2022.
docs.ansible.com
Ansible 에서 작성하는 Playbook 파일 확장자 - .yml파일 시작- ansible playbook 에서 사용하는 YAML 파일 시작은 - (Hyphen) 기호 3개(---) 로 구성- playbook 최상단에 표시하며 생략할 수 있다.
파일 끝- playbook 파일 끝 표시는 ... 으로 표시- 생략 가능
주석- #
데이터(하나의 값) 표현을 위한 자료형문자열- 일반적인 모든 자료 형태- YAML 문자열을 " 로 묶을 필요가 없다- 필요하다면 " 로 묶어서도 사용 가능
불린 - boolean- 참/거짓- YAML 은 Native Boolean 타입을 가지고 있다.
Collection - 여러개의 데이터 저장리스트-list- python list 와 유사- YAML 에서는 시퀸스(sequence)라 부른다.- 리스트는 -(Hyphen)로 구분함- [ ] 묶는 인라인(inline) 포멧 지원
딕셔너리-dictionary- python dict 과 유사- YAML 에서는 매핑(mapping)이라 부른다.- k(key) : v(value) 형식- { } 로 묶는 인라인(inline) 포멧 지원
라인 폴딩 - line folding- 파일 콘텐츠를 보기 좋게 관리하기 위해 여러 라인에 나누어 표기할 때 사용- > 문자로 라인 폴딩을 사용해 표현함
YAML 내용의 각 단계에 대한 표현은 스페이스를 이용해 표현- 단계 표현을 위한 들여쓰기는 스페이스 2칸을 사용함- tab 사용하면 오류
- Playbook 이해
Playbook
- 인벤토리에 정의된 managed node 에서 무엇을 해야 할 것인가(서버 구성 정보)를 정의한 내용
- 자동화 절차를 기술한 코드 파일
- YAML 포맷으로 표현
- 설정이나 프로세스에 대한 모델 정의를 표현한 최소한의 문법으로 구성
Playbook 파일
- 파일명에 대한 특별한 규칙은 없다
- 임의의 이름으로 playbook 파일을 작성하고 확장자는 .yml 부여
Playbook 실행
- ansible-playbook [옵션] [파일명]
-i : 인벤토리 파일명
-e [추가변수} : 추가 변수 지정, key=value 형식
Playbook 구조
- playbook - play - tesk 구조
playbook - managed node 에 적용할 코드 집합
play - 한번에 일괄적으로 수행할 작업 단위 - task 모음
task - 실제 수행할 작업 내용 - 모듈로 표현
ansible 은 더 확실히 배워야 할 것 같아서
책을 한권 사서
공부를 해봐야겠다
'Kubernetes > [구름] 쿠버네티스 전문가 양성 과정 k-digital' 카테고리의 다른 글
[8주-9.23] playbook 확장 (0) | 2022.09.23 |
---|---|
[8주-9.22] playbook 이해 (0) | 2022.09.22 |
[8주-9.19~20] IaC, CloudFormation, Ansible (1) | 2022.09.20 |
[5주-20일차] (0) | 2022.08.30 |
[4주-19일차] (0) | 2022.08.26 |