공부하기싫어
article thumbnail
  • 모듈(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 로 지정되어있음

adduser

 

adduser check
userdel

모듈 기술 문서 : 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

yum httpd install
yum install check

 

service 모듈

- 시스템 서비스(데몬)에 대한 시작, 종료, 재시작 등의 기능 제공 모듈

- 유사 모듈 - systemd 모듈

- name 파라미터 : 서비스 이름

- state 파라미터 :

stared - 시작

stopped - 중지

restarted - 재시작

reloaded - 재로드

- ex) ansible [managed node] -m service -a [명령] --become

service started
service started check
service stopped
service stopped check

 

 

copy 모듈

- control node (source 측) 에서 managed node ( destination 측 ) 로 파일 복사 (전송)

- src 파라미터 : 복사(전송)할 파일 이름(경로포함)

- dest 파라미터 : 복사(전송)할 위치

create test file
copy to managed node
copy check

 

 

  • 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 은 더 확실히 배워야 할 것 같아서

책을 한권 사서

공부를 해봐야겠다