1. 프로비저닝이란?
사용자의 요구에 맞게 서버를 설정해 두었다가 필요시 서버를 즉시 사용할 수 있는 상태로 미리 준비해 두는 것.
ex) ec2 인스턴스에 JDK를 설치해 두거나 MySQL을 설치하고 DB를 생성해두는 작업 등
2. Jenkins, Packer, Ansible
Jenkins에서 AMI 빌드 JOB을 실행하는 과정
1) Jenkins 서버에서 GIT에 코드레벨로 관리되는 Packer와 Ansible 코드를 pull 받고
2) Jenkins 서버에서 Packer가 인스턴스를 셋업한다.
3) Ansible을 이용해 셋업된 인스턴스에 프로비저닝 작업을 진행하고
4) Packer가 프로비저닝 완료된 인스턴스를 복사해 AMI를 생성한다.
3. Ansible
Ansible은 프로비저닝, 애플리케이션 구성 관리를 쉽게 자동화할 수 있는 플랫폼이다.
Ansible은 원격으로 명령어를 실행하기 위한 완벽한 도구이고 패키지를 설치하는 것과 같은 가장 일반적인 요구사항을 관리할 수 있는 모듈을 갖고있다.
Ansible은 Ansible Controller와 Ansible Target으로 구성된다. Controller는 Target에 대해 어떤 구성을 명령할지 Task를 정의한다. yaml 형식으로 구성된 playbook을 만들어 여러 개의 Task를 수행할 수 있다. 앤서블은 다른 구성관리 시스템과 다르게 서버, 데몬 혹은 데이터베이스 없이도 작동되도록 개발되어있다.
3-1. Ansible 구성요소
- Inventory : 관리할 대상의 서버 리스트, 자동화 대상(Managed Node)목록을 작성하는 곳
- Modules : host에 action을 수행하는 스크립트, 자동화 기능 내장 패키지로 하나의 완전한 단위 기능 제공
- Playbook : 앤서블의 구성, 배포 및 오케스트레이션이 포함된 파일로 OS 구성에서 애플리케이션 배포와 모니터링까지 시스템의 상태를 순차적으로 정의할 수 있다.
- Plug-in: 확장 기능(emai, logging) 제공
- Custom modules : 사용자가 작성한 모듈
3-2. Ansible 예제를 많이 봐
https://github.com/ansible/ansible-examples
https://techblog.woowahan.com/2624/
4. Jenkins 파이프라인 구성
1. docker 안에 docker 설치
'DevOps > Docker, Jenkins, Ansible, Terraform' 카테고리의 다른 글
Ansible-Playbook (0) | 2023.02.04 |
---|---|
CloudFormation (클라우드 포메이션)으로 인프라 관리하기 (0) | 2023.02.02 |
Docker와 Vmware, Virtualbox 차이점 (0) | 2023.01.23 |
Jenkins, Docker, SpringBoot, React or Vue (0) | 2023.01.08 |
CentOS에 Jenkins 설정 (0) | 2023.01.08 |