1 minute read

Git과 Ansible을 활용한 WEB 서비스 구축 자동화

프로젝트 수행 시, Ansible Playbook을 작성하고, 자동화하는 것이 CI/CD Pipeline 인 줄 알았습니다.
CI/CD Pipeline을 빨리 구현해보고 싶다는 생각에서 비롯된 잘못이였습니다.

프로젝트 종료 이후 이뤄진 피드백세션을 통해,
작업 내용은 GitOps적인 자동화 CD 구축이라는 내용을 지적받았습니다.

실제 CI/CD Pipeline을 구축했다고 한다면
1. Application인 Wordpress의 개발과 Dockerizing이 CI이며
2. Platform인 Ansible을 활용한 자동화가 CD에 해당할 것입니다.

pjt3arch

  • 전체 프로젝트의 진행 흐름입니다.
  • 본 프로젝트의 내용은 CI/CD Pipeline이라고 할 수 없습니다. (변경 필요)

asbarch

  • Ansible 플레이북의 아키텍쳐입니다.

result

  • AWX를 통해 AWS 리소스 생성 및 서비스 배포를 자동화하여 성공한 결과입니다.

msgresult

  • 작업에 대한 시작, 성공 및 실패 결과를 Slack을 통해 별도로 받아볼 수 있습니다.

  • Ansible을 활용하여 AWS 클라우드환경에 Wordpress 서비스 배포를 자동화 하는 프로젝트 입니다.

  • 결과 발표시 약 30여명의 강사와 수강생 앞에서 프로젝트 결과의 Live Demo를 진행하였습니다.

  • 버튼 한번의 클릭으로 새 VPC와 EC2의 생성, 2-tier LAMP서버 구축, Wordpress 서비스가 배포되었습니다.

  • 해당과정은 약 15분정도가 소모되었고, 중간단계를 Slack 메세지로 수신하였으며, 구축 완료 후 Public IP로 다른수강생들이 모두 접근할 수 있었습니다.


팀원과 협업하여,

[Continuous Integration(지속적인 통합) 구축]

  1. Plan: Zoom을 사용하여, 매일 3회 회의 및 진행도를 점검하고, 문서화된 기록을 남겼습니다.(부록C)

  2. Code: VS Code를 사용하여, YAML 형식의 Ansible Playbook 코드를 작성하였습니다.

  3. Build: GitHub를 사용하여, 작성된 코드 리뷰 후 일원화하여 코드의 버전 관리를 하였습니다.

  4. Test: VirtualBox를 사용하여, Git Repository에서 Clone 하여 작동을 확인하였습니다.

[Continuous Delivery or Deployment(지속적인 서비스 제공 또는 배포) 구축]

  1. Deploy: Ansible을 사용하여, AWS 클라우드 환경에 2-tier LAMP 서버 인프라 구축과 Wordpress 배포를 자동화 하였습니다.

  2. Opertate: AWS Cloud 환경에서, Wordpress 서비스가 배포되고 일반 대중의 접근이 가능합니다.

  3. Monitior: AWX를 사용하여, 예약된 작업의 진행 및 수행 결과를 Dashboard 화면 및 Slack Message로 확인할 수 있었습니다.


프로젝트를 완료한 뒤, 모색한 개선점은 다음과 같습니다.

  1. 아키텍쳐 고도화;
    • 처음 작성해보는 Playbook인 만큼, 변수 및 반복문, 조건문의 사용이 미숙하였습니다.
    • 서버 리소스 구성에 있어 입력 데이터를 변수화하여, 조금더 유연하고 확장가능한 Playbook을 작성해야합니다.
  2. Terraform의 활용;
    • Bootcamp 강의 진행시 Terraform의 수업이 원활히 진행되지 못하였습니다.
    • 일반적으로 서버 인프라 프로비저닝에 있어 Ansible보다는 Terraform의 사용이 권장됩니다.
    • 이번 미니프로젝트에서는 Ansible로 프로비저닝 하였지만, 추후에는 Terraform으로 진행합니다.
  3. Ansible Vault의 대안도구 모색;
    • Ansible Vault는 쉽고 간편하게 파일과 내부의 데이터에 대한 암호화를 진행할 수 있습니다.
    • 그러나 저장중에만 암호화를 지원하고, 사용중에는 복호화되어 노출됩니다.
    • 사용자 암호나 액세스 키와 같은 중요 데이터에 대한 일관된 보안 유지를 위하여 system keyring/secret manager 와 같은 3rd party tool의 사용이 권장됩니다.

전체 분량이 약 60pg정도 되어 문서의 pdf파일의 링크를 공유합니다.

pdf링크

Categories:

Updated:

Leave a comment