- parameters : 해당 모듈을 사용할 때 전달 가능한 파라미터(인수, argument)에 대한 설명, 전달값
- Attribute : 해당 모듈 속성, 모듈 동작시 사용
- return value : 해당 모듈을 실행한 후의 결과값
- Example : 해당 모듈 사용법
- ansible-doc -l : ansible 모듈의 전체 목록 출력
- ansible-doc <모듈명> : 모듈명에 대한 도움말 출력
- ansible-doc -s <모듈명> : 모듈을 사용할 Playbook 구문 출력
멱등성 없는 대표적인 예
ansible <host 패턴> -m command -a <명령>
ansible <host 패턴> -m shell -a <명령>
ansible <host 패턴> -m user -a <명령> --become
사용자 추가/삭제 관리 모듈
추가/삭제할 사용자 이름
ex) ansible managed -m user -a "name=worker state=present" --become -i ./hosts
ex) ansible managed -m user -a "name=worker state=absent" --become -i ./hosts
ansible <host 패턴> -m yum -a <명령> --become
RedHat 배포판에 패키지 관리 명령인 yum에 대한 모듈 (유사 모듈: apt, dnf)
ex) ansible host1 -m yum -a "name=httpd state=present" --become -i ./hosts
-> httpd (apache2) 설치 의미
설치/삭제할 패키지 이름
ansible <host 패턴> -m service -a <명령> --become
시스템 서비스(데몬 프로세스)에 대한 시작/종료/재시작 등의 기능 모듈 제공 (유사 모듈: systemd)
ex) ansible host1 -m service -a "name=httpd state=started" --become -i ./hosts
서비스 이름
제어 노드 (source 측)에서 managed node (destination 측)로 파일 복사 (전송)
복사 (전송)할 파일 이름 (경로 포함)
복사 (전송)될 위치
'YAML Ain't Markup Language' 라는 의미
일반적인 모든 자료 형태
YAML 문자열을 " (따옴표)로 묶을 필요 X but 정 필요하다면 " (따옴표)로 묶어서 사용 가능
참/거짓 , yes/no와 같은 둘 중의 하나의 상태 표시 => True/False로 해석
YAML은 Native Boolean 타입
파이썬 언어의 리스트 자료형과 유사, YAML에서는 시퀀스 sequence라고 부름
파이썬 언어의 dict 자료형과 유사, YAML에서는 매핑 mapping이라고 부름
파일 콘텐츠를 보기좋게 관리하기 위해 여러 라인에 나눠 표기할 때 사용,
' > ' 문자로 라인 폴딩을 사용해 표현
인벤토리에 정의된 managed node에서 무엇을 해야 할 것인가 (서버 구성 정보)를 정의한 내용
ansible-playbook [옵션] <playbook 파일명>
ex) ansible-playbook ping-test.yml -i ./hosts
ping-test.yml
---
- name: ping test
hosts: managed
tasks:
- name: ping
ping:
- name: current directory
shell:
cmd: pwd
- name: test
hosts: public
tasks:
- name: ping
ping:
managed node에 적용할 코드 집합
한 번에 일괄적으로 수행할 작업 단위; task 모음
실제 수행할 작업 내용
Ansible 실습 과정 중에 managed node에 원격으로 httpd 설치 완료 후 어느 순간부터 ansible 명령어를 입력해도 계속 로딩만 될 뿐, 실제 실행으로까지 이어지지 않는 일이 발생했다.
이 문제를 해결하려고 제어 노드 및 managed node 재부팅 그리고 VS code 상에서의 ssh 재연결을 여러번 시도해도 해결될 기미가 보이지 않았다....가 우연찮게 해결됐다.
제어 노드 내의 Ansible 관련 작업 폴더 안의 hosts 파일 안에서 managed node의 보다 원할한 다운로드와 설치를 위해 ansible_python_interpreter 값 변경 후 이를 설명하는 주석을 해당 코드 바로 옆에 달았다가 그 부분까지 읽히는 바람에 그렇게 된 것 같다. 이후 별도의 행에 주석을 옮긴 후로는 정상적으로 작동 완료.
아직까진 위 부분만 제외하고는 큰 문제는 없지만 앞으로 얼마나 빡빡해질지는 상상만 해도 오싹하다. 전반적으로 대학시절 배웠던 XML하고 유사한 성격인 것 같다. 이는 강사님께서도 언급하셨던 부분이기도 하고, 실제로 기존 XML의 단점을 보완한 성격인게 JSON이랑 YAML이라나 뭐라나.