이제는 ad-hoc을 사용하지 않고 .yml
파일을 생성하여 ansible-playbook
를 통해 자동화를 하였다
위 사진을 보면 간단하게 웹 서버 httpd을 구축하였을때 나타나는 화면이다
보통 ansible
을 이용하지 않고 linux 명령어를 사용하여 구축도 가능하지만 이전 글과 같이 만약 100대 1000대의 서버를 구성해야한다면?? 말이 달라진다
앞으로 설명할 wordpress
같이 구축하는데 많은 코드를 사용해야 한다면 더더욱 ansible
이 절실히 필요한 순간이 오지 않을까 생각을한다
처음 ansible
을 접한다면 ad-hoc
을 먼저 짜보고 yml
파일을 만들어 보는것을 추천한다 물론 나 또한 그렇게 접근을 하여 더욱 쉽게 접근을 하였다
ansible -i inven.lst test -m yum -a "name=httpd state=latest"
ansible -i inven.lst test -m service -a "name=httpd state=started"
ansible -i inven.lst test -m shell -a "firewall-cmd --add-port=80/tcp"
ansible -i inven.lst test -m firewalld -a "port=80/tcp state=enalbed"
ansible -i inven.lst test -m copy -a "src=index.html dest=/var/www/html/index.html"
이와 같이 ad-hoc
을 작성하여서 만든 코드들이다 이 코드들을 yml
파일 양식에 맞게 작성을 하면
---
- name: apache web server
hosts: web1
tasks:
- name: install apache
yum:
name: httpd
state: latest
- name: service
service:
name: httpd
state: started
- name: firewall open
firewalld:
port: 80/tcp
state: enabled
- name: copy index file to html directory
copy:
src: index.html
dest: /var/www/html/index.html
이렇게 변신하는 것을 볼 수 있다
먼저 yml
파일을 시작할 때에는 ---
과 name
hosts
tasks
가 필수적으로 들어가야한다
들여쓰기를 할때는 2칸을 기준으로 들여쓰기를 진행한다
name
은 최대한 내가 무슨 작업을 하는지 자세하게 쓰는 것이 좋다
hosts
는 내가 적용할 서버를 말한다 나는 web1
이라고 적었는데 이것은 위에 구축한 사진과 같이 172.16.0.102
를 가리킨다
사용하는 모듈에 맞게 yum
service
firewalld
copy
와 같이 들어쓰기와 ansible module 공식 홈페이지에 보면 어떻게 사용해야 하는지 필수적으로 들어가야하는 값은 무엇인지 확인이 가능하다
yml
파일을 작성하고 실행을 시키기 위해선 ansible-playbook
명령어를 사용한다
-i
옵션을 주어 inven.lst
파일에 들어가있는 인벤토리에 지정된 IP에서 작업을 실시한다
작동을 시키고 난후에는 노란색으로 changed라고 표시가 된다
172.16.0.102
접속을 했을때 내가 만든 index.html
파일과 동일하게 화면이 뜨는 것을 볼 수 있다.