ansible [그룹명] -m apt -a "update_cache=yes state=present"
ansible [그룹명] -m apt -a "name=apache2 state=present"
▪ Ansible 플레이북은 반복 가능하고 재사용 가능하며 간단한 구성 관리부터 여러
호스트에 복잡한 애플리케이션을 배포하는데 매우 적합
▪ 작업을 두 번 이상 실행해야하는 경우 Ad-hoc 명령을 사용하지 않고, 플레이북을
작성하고 Git과 같은 소스 제어를 사용하는 것을 권장
YAML 문서의 원활한 사용을 위해 vim 문서 작성
vi ~/.vimrc
syntax on
autocmd FileType yaml setlocal ai ts=2 sw=2 sts=2 et
set cursorcolumn
▪ Ansible 플레이북의 YAML 파일은 항상 목록(List)으로 시작되며, 목록의 각 항목은 해시(Hash) 는 사전(Dictionary)이라는 키/값 쌍을 가지고 있음
▪ 선택적으로 YAML 파일의 시작은 ---로, 파일의 끝은 ...으로 끝을 나타내고 들여쓰기 수준은 동일해야 하며, 공백문자로 만 사용
▪ 탭은 구문 오류를 발생함으로 일반적으로 공백 2칸을 사용
• 목록 (list)
• 사전 (dictionary)
▪ 콜론 사용시 구문 오류
foo: somebody said I should put a colon here: so I did => 콜론 이후에 콜론
windows_drive: c: => 콜론 뒤에 공백
▪ 해결 방법
foo: ‘somebody said I should put a colon here: so I did’
windows_drive: ‘c:’
foo: "a \t TAB and a \n NEWLINE"
▪ 변수 참조
foo: "{{ variable }}"
foo1: "{{ variable }}/additional/string/literal"
foo2: "c:\\{{ variable }}\\rest\\of\\path"
foo3: user is {{ variable }}
▪ 문자열
non_boolean: "yes"
other_string: "False"
▪ 플레이북은 하나 이상의 플레이를 가지고 있으며, 플레이는 작업을 실행하기 위한
특정 관리 노드 또는 그룹을 지정
▪ 플레이에는 작업을 선언하며, 작업은 모듈을 호출
▪ 플레이북은 위에서 아래 순서대로 실행
▪ YAML의 목록은 위에서 아래로 순서를 가짐
플레이북
- name: update web servers # 플레이/플레이 이름
hosts: webservers # 호스트 패턴
tasks:
- name: ensure apache is at the latest version # 작업/작업 이름
yum: # 모듈/모듈 이름
name: httpd # 모듈 옵션/아큐먼트
state: latest
- name: write the apache config file # 작업
template:
src: /srv/httpd.j2
dest: /etc/httpd.conf
- name: update db servers # 플레이
hosts: databases
remote_user: root
tasks:
- name: ensure postgresql is at the latest version # 작업
yum:
name: postgresql
state: latest
- name: ensure that postgresql is started # 작업
service:
name: postgresql
state: started
수학이나 IT에서 연산의 한 성질을 나타내며, 연산을 여러 번 적용하더라도 결과가 달라지지
않는 성질을 의미
Ansible의 대부분 모듈은 원하는 최종 상태가 달성 되었는지 확인하고, 이미 원하는 최종
상태를 달성했다면 작업을 실행하지 않게 되는데 몇 번이고 작업을 반복 실행 하더라도 최종
상태가 변경되지 않기 때문에 멱등성을 가진다고 함.
모듈의 옵션에 따라 이러한 멱등성을 제공하지 않는 것도 있음.
• 멱등성을 제공하지 않는 모듈( 무조건 changed)
» 명령 관련 모듈: command, shell, raw
» service 모듈의 서비스 재시작
vi 편집기로 yml파일 생성 후
ansible-playbook test.yml 명령어로 실행
ansible-playbook test.yml --syntax-check : 문법 체크
[test1]
-> AA 그룹 안의 ansi-node1과 ansi-node2의 msg가 출력된다.
[test2]
->
[test3]
-> apache 패키지가 설치된다.
어제 이론 위주로 나가던 내용들을 복습 겸 실습 하면서 정리가 많이 됐다.
수업 끝나고 자습시간에 정리를 몰아서 하는 것 보다 중간중간 같이 해주는게 더 효율적인 것 같다.
오늘도 나름 열심히 했다! 오류가 안나서 더 좋았다 ㅎㅎ