ansible playbook role을 이용해 Cent OS 기반의 LAMP Stack을 구축하고 WordPress를 구축해보겠습니다.
playbook의 role 구조는 다음과 같습니다.
구축되는 서버의 경우 Master Server 1대, Web Server 1대, DB Server 1대로 개별적으로 가동되는 3 Tier 구조로 생성하였습니다.
[ansible.cfg]
ansible.cfg 파일이란 ansible이 실행될때 참고되며 환경설정 및 셋팅값을 저장해두는 파일입니다.
defaults, privilege_escalation 섹션으로 대상을 설정합니다.
[inventory]
inventory를 통해 ansible을 통해 관리하는 호스트의 목록이나 그룹을 지정합니다.
기본 인벤토리 파일은 /etc/ansible/hosts이며 inventory파일을 생성하여 별도로 지정해서 사용가능합니다.
[wpvar.yml]
vars 파일을 생성함으로써 wp_source, wp_destination 이라는 변수를 미리 선언하고
추후 해당 변수를 사용하여 일괄적으로 유지 및 보수 가능하도록 설정합니다.
[main.yml]
(apache) state 변수를 통해 최신버전의 apache를 설치하고 방화벽 정책을 설정합니다.
[main.yml]
(mariadb) mariadb를 설치하여 DB서버를 구축하고 방화벽 정책을 설정합니다.
[main.yml] (wp)
안정화 버전의 워드프레스 사용을 위해 php 7.4로 설정 변경 후 워드프레스를 설치합니다.
앞서 사용한 wpvar.yml파일에서 선언한 변수를 사용하여 대상을 지정합니다.
또한 replace 구문을 사용하여 초기 설정되는 Apache Default 경로값을 수정하고 워드프레스 config 파일도 수정하여 사용할 DB정보를 설정합니다.
selinux의 경우 Permissive로 값을 설정합니다.
/etc/hosts에 관리할 서버들의 IP와 이름을 지정합니다.
/etc/ansible/hosts에는 default inventory의 설정값 web, db 서버를 [web_db] 그룹으로 설정합니다.
Playbook 작성에 필요한 모듈과 파라미터는 아래의 공식사이트에서 확인 후 용도에 따라 변경 및 수정 가능합니다.
https://docs.ansible.com/ansible/2.9/modules/list_of_all_modules.html