Ansible Molecule with Kind - 도커를 활용한 쿠버네티스 자동화 테스트 작성

Ansible Molecule with KIND 소개 Ansible Molecule과 KIND (Kubernetes IN Docker)를 조합하여 쿠버네티스 자동화 테스트 환경을 구축하는 방법을 소개합니다. 개요 Ansible Molecule Ansible Molecule은 Ansible Roles를 가상화 기술을 통해 고립된 환경에서 테스트할 수 있게 도와주는 프레임워크입니다. 다양한 드라이버를 지원하며, Kubernetes 환경에서는 Delegated 드라이버를 사용하여 KIND와 통합할 수 있습니다. KIND (Kubernetes IN Docker) KIND는 Kubernetes 클러스터를 Docker 컨테이너로 동작시켜주는 도구입니다. 로컬 환경에서 빠르고 가볍게 Kubernetes 클러스터를 생성할 수 있어 다음과 같은 용도로 활용됩니다: ...

2022-05-26 · 13 분 · 2663 단어 · Sung-Kyu Yoo

Ansible Molecule으로 테스트 작성하기

Molecule 소개 Molecule는 ansible-community에서 관리하는 Ansible Role용 테스트 프레임워크입니다. Molecule을 사용하면 Ansible Role을 체계적으로 테스트할 수 있으며, 여러 인스턴스, 운영 체제, 가상화 공급자, 테스트 프레임워크 및 테스트 시나리오를 활용한 종합적인 테스트가 가능합니다. 왜 Molecule이 필요한가? Ansible Role을 개발할 때 다음과 같은 문제에 직면합니다: 수동 테스트의 한계: 매번 수동으로 Role을 실행하고 결과를 확인하는 것은 시간이 많이 소요됩니다. 다양한 환경 지원: Ubuntu, CentOS, Debian 등 다양한 OS에서 Role이 정상 동작하는지 확인해야 합니다. 지속적 통합: CI/CD 파이프라인에서 자동으로 테스트를 수행해야 합니다. 코드 품질: Ansible 코드의 품질을 일관되게 유지해야 합니다. Molecule은 이러한 문제를 해결하기 위해 다음 기능을 제공합니다: ...

2022-05-26 · 10 분 · 1940 단어 · Sung-Kyu Yoo

Ansible Callback Plugin 소개

Ansible Plugin 중에서 Callback Plugin 에 관련한 부분만 정리합니다. Callback Plugin 은 Ansible 에서 특정 이벤트 발생 시 데이터를 로깅한다거나 Slack, Mail 등의 외부 채널로 Write 하는 등의 다양한 목적을 달성하기 위해 사용하는 모듈입니다. 참고로 이 내용은 Ansible 2.2.1.0 기준으로 작성되었습니다. Callback Plugin이란? 소개 Ansible Callback Plugin 은 Ansible 의 각종 이벤트를 Hooking 해서 해당 시점에 원하는 로직을 수행할 수 있는 플러그인을 말합니다. 이 콜백 플러그인은 Ansible Task, Playbook 등에 대해 “실행 직전”, “실행 종료” 등의 이벤트에 대한 콜백 함수를 정의할 수 있도록 지원합니다. ...

2017-11-14 · 8 분 · 1672 단어 · Sung-Kyu Yoo

Ansible Module 개발하기

Ansible 은 대규모의 서버 장비에 대한 설치 및 어플리케이션의 배포와 서비스 운영에 대한 자동화 부분을 비교적 쉽게 작성할 수 있도록 기능을 제공합니다. 최신 트렌드인 DevOps 를 가능케하는 방법 중에 하나라고 할 수 있습니다. Ansible 은 SSH 를 기반으로 수행되며, 원격 장비의 SSH 접근 권한이 필요합니다. 별도의 데몬이나 에이전트는 필요하지 않습니다. 원격 장비 (기본 제공되는 Ansible Module 의 경우) Python-2.6 이상만 시스템에 설치가 되어 있으면 됩니다. (일부 모듈은 별도의 파이썬 모듈을 필요로 하는 경우도 있습니다.) Ansible Module 은 멱등성을 보장하는 것을 권장 합니다. 일부, 모듈에 예외적으로 멱등성을 보장하지 않는 경우 문서에 주의사항을 꼭 남겨놓아야 합니다. 소개 Ansible Module 은 Ansible Playbook 의 하나의 Task 에서 어떠한 목적을 가지는 일련의 기능 집합이라고 생각할 수 있습니다. 예를 들어, “파일을 A 경로에서 B 경로로 파일을 옮기는 기능” 이 필요할 경우, Ansible 에서 기본 모듈로 제공하는 “file” 모듈을 사용하면 됩니다. ...

2017-11-14 · 9 분 · 1897 단어 · Sung-Kyu Yoo

Ansible Galaxy - Git 저장소를 활용하여 Role 의존성 관리하기

Git 저장소에 Ansible Role 올리기 먼저, Ansible Role 을 개발하기 위한 Git repository를 생성한다. 그리고, Ansible Role 초기 프로젝트 구조를 Ansible Galaxy 를 사용하여 생성한다. Git repository 를 로컬 머신에 복제한다. 1 $ git clone "https://github.com/xxxxx/sample-role.git" Ansible Role 초기 디렉토리 및 파일 생성한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 $ ansible-galaxy init --force sample-role - sample-role was created successfully $ tree sample-role/ sample-role/ ├── README.md ├── defaults │ └── main.yml ├── files ├── handlers │ └── main.yml ├── meta │ └── main.yml ├── tasks │ └── main.yml ├── templates ├── tests │ ├── inventory │ └── test.yml └── vars └── main.yml Ansible Role 개발을 진행 한 뒤에 Git repository 에 Push 1 $ git commit * -m "Add ansible role" && git push Git 저장소로부터 Ansible Role 가져오기 방법 1) Ansible Galaxy CLI 명령을 통해 다운로드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 $ ansible-galaxy install git+https://github.com/xxxx/sample-role.git,master -p roles/ $ tree roles/ roles/ └── sample-role ├── README.md ├── defaults │ └── main.yml ├── handlers │ └── main.yml ├── meta │ └── main.yml ├── tasks │ └── main.yml ├── tests │ ├── inventory │ └── test.yml └── vars └── main.yml 방법 2) 의존성 파일에 명시하고 CLI 명령을 통해 다운로드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 $ vi requirements.yml - src: git+https://github.com/xxxx/sample-role.git version: master $ ansible-galaxy install -r requirements.yml -p roles/ - extracting sample-role to roles/sample-role - sample-role was installed successfully $ tree roles/ roles/ └── sample-role ├── README.md ├── defaults │ └── main.yml ├── handlers │ └── main.yml ├── meta │ └── main.yml ├── tasks │ └── main.yml ├── tests │ ├── inventory │ └── test.yml └── vars └── main.yml ‘requirements.yml’ 작성하기 src username.role_name : Ansible Galaxy 공식 저장소에 등록된 Ansible Role 을 다운로드할 때 사용. url : Ansible Galaxy 에서 지원하는 SCM으로부터 다운로드할 때 사용. scm 연동할 SCM 이름을 명시. 디폴트 값은 ‘git’ (ansible-galaxy 2.2.1.0 기준으로 git, hg 만 지원) version tag 명 / commit hash 값 / branch 이름을 명시. 디폴트는 ‘master’ SCM 으로부터 가져올 때에만 사용. name 다운로드한 Ansible Role 의 이름을 명시. 기본적으로는 Ansible Galaxy에 등록된 이름 혹은 Git repository 의 이름을 사용. 아래 예시를 참고! ...

2017-02-16 · 7 분 · 1359 단어 · Sung-Kyu Yoo