playbook이란?
자동화 작업의 청사진이며, 이 자동화 작업은 사람의 개입 없이 실행되는 작업이다. 또한 순서가 지정된 태스크 목록이 저장되어 지정된 작업을 해당 순서로 반복적으로 실행이 가능하다. YAML(데이터 직렬 언어)파일로 작성되며 플레이 북에는 변수와 작업이 포함될 수 있다.
플레이북 파일 작성 규칙
로컬에서 8080포트로 접속을 하게 되면 베이그런트의 서버(nginx)로 접속이 가능하게 만들어본다.
로컬컴퓨터(Host)에서 8080포트로 접속하게 된다면 vagrant(Guest)에서 실행되고 있는 서버 80포트로 접속이 가능하다 또한 로컬에서 443으로 접속하면 8443으로 포워딩되서 접속이 가능하다.
포트포워딩?
포트포워딩이란 내부 네트워크의 포트와 인터넷의 포트를 연결시켜 서로 통신할 수 있도록 열어주는 것을 말한다.
vagrant 파일을 수정후 다시 재부팅한다.
$ vagrnat reload
guest의 80번 포트가 host의 8080 포트로 포워딩
guest의 443번 포트가 host의 8443 포트로 포워딩
#web-notls.yml
---
- name: Configure webserver with nginx
hosts: webservers # 타깃이 된다
become: True
tasks: # 밑으로 내려가면서 차례대로 실행됨
- name: install nginx
apt: name=nginx update_cache=yes # apt(우분투 패키지 관리) 모듈을 사용함
- name: copy nginx config file
copy: src=files/nginx.conf dest=/etc/nginx/sites-available/default # copy 모듈을 사용하여 파일을 복사함
- name: enable configuration
file: > #src 경로에 있는파일을 원본으로 사용하고 dest경로에 심볼릭 링크를 만들게된다 이말은 nginx가 /etc/nginx/sites-enabled/default 디렉토리에서 설정 파일을 읽게된다.
dest=/etc/nginx/sites-enabled/default
src=/etc/nginx/sites-available/default
state=link
- name: copy index.html
template: src=templates/index.html.j2 dest=/usr/share/nginx/html/index.html mode=0644 # template 모듈은 템플릿 파일을 생성하고 호스트에 복사
- name: restart nginx
service: name=nginx state=restarted
현재 위 플레이북은 5개의 태스크가 존재한다.
name: install nginx
apt: name=nginx update_cache=yes
apt 명령어를 이용해서 nginx를 설치한다.name: copy nginx config file
copy: src=files/nginx.conf dest=/etc/nginx/sites-available/default
src 파일을 dest로 파일을 복사한다.name: enable configuration
/etc/nginx/sites-enabled/default
디렉토리에서 설정 파일을 읽게된다.name: copy index.html
name: restart nginx
#nginx.conf
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html; # 웹서버의 루트 디렉토리 지정
index index.html index.htm; # 인덱스 파일을 지정
server_name localhost; # 이 서버 블록이 수신할 요청의 호스트 이름을 지정
location / {
try_files $uri $uri/ =404; # /uri에 대한 요청을 처리하는 방식을 지정한다. 파일이 존재하지 않으면 404를 띄운다
}
}
nginx.conf
web-notls.yml
index.html.j2
→ 웹서버를 접속하게 되면 화면에 출력될 html을 작성플레이북에서 webserver
그룹을 참조할 수 있도록 Inventory file
에 그룹을 생성한다.
$ ansible-playbook [yaml]
명령어를 이용해서 플레이북을 실행 할 수 있다.
호스트 상태 추적하기
모든 앤서블 태스크는 어떤 방법이 실행 되든지 게스트의 상태를 변경할 가능성이 있다.
게스트의 상태가 모듈의 매개변수와 일치하면 앤서블은 게스트에서 아무 액션도 수행하지 않고 OK상태로 응답하게 된다
또한 게스트의 상태와 모듈에 대한 매개변수 간에 차이가 있다면 앤서블은 게스트의 상태를 변경하고 리턴 값을 change로 변경한다
호스트컴퓨터(실제 사용중인 장치)에서 localhost:8080으로 접속하게 된다면 guest에 nginx웹서버로 접속이 가능하다.