cloudNet@ 팀의 가시다 님이 진행하는 앤서블 스터디 2주차 정리입니다.
지난번 포스팅에서는 조건문과 반복문에 대해서 배웠습니다.
이번 포스팅에서는 Ansible Kubespray를 빗대어 앤서블 Role 구조에 대해서 학습 해보겠습니다.
✅ Role
✔️ 롤은 “플레이북 내용을 기능 단위로 나누어 공통 부품으로 관리/재사용하기 위한 구조”
- 플레이북에서 전달된 변수를 사용할 수 있습니다. 변수 미설정 시 기본값을 롤의 해당 변수에 설정하기도 합니다.
- 콘텐츠를 그룹화하여 코드를 다른 사용자와 쉽게 공유할 수 있습니다.
- 웹 서버, 데이터베이스 서버 또는 깃(Git) 리포지터리와 같은 시스템 유형의 필수 요소를 정의할 수 있습니다.
- 대규모 프로젝트를 쉽게 관리할 수 있습니다.
- 다른 사용자와 동시에 개발할 수 있습니다.
- 잘 작성한 롤은 앤서블 갤럭시를 통해 공유하거나 다른 사람이 공유한 롤을 가져올 수도 있습니다.
✔️ 앤서블 롤 구조 : 롤은 하위 디렉터리 및 파일의 표준화된 구조에 의해 정의됩니다.
- 최상위 디렉터리는 롤 자체의 이름을 의미하고, 그 안은 tasks 및 handlers 등 롤에서 목적에 따라 정의된 하위 디렉터리로 구성됩니다.
- 아래 표는 롤의 최상의 디렉터리 아래에 있는 하위 디렉터리의 이름과 기능을 설명한 것 입니다.
✔️ 롤 생성 및 디렉터리 구조 확인
#
ansible-galaxy role init my-role
- Role my-role was created successfully
#
tree ./my-role/
my-role/
├── defaults
│ └── main.yml
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── README.md
├── tasks
│ └── main.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml
8 directories, 8 files
✅ kubespray 배포하기
이 가이드는 Kubespray를 이용하여 AWS 에서 운영되는 쿠버네티스 클러스터를 설치하는 과정을 보여준다.
Kubespray는 Ansible 플레이북, 인벤토리를 통해 노드의 운영체제와 쿠버네티스 클러스터의 설정 관리 작업을 실행한다.
다음은 kubespray의 깃주소이다.
- git clone 받기
$ pwd
/home/ubuntu/my-ansible
$ git clone https://github.com/kubernetes-sigs/kubespray
$ cd kubespray
- 인벤토리 설정
# Copy ``inventory/sample`` as ``inventory/mycluster``
cp -rfp inventory/sample inventory/mycluster
# Update Ansible inventory file with inventory builder
declare -a IPS=(10.10.1.11 10.10.1.12 10.10.1.13)
# pip install && ruamel.yml
sudo apt install python3-pip
pip install ruamel.yaml
pip install netaddr
# Update Ansible inventory file with inventory builder
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
- 플레이북 실행
# Deploy Kubespray with Ansible Playbook 플레이북을 루트 계정으로 실행함
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml
- 설치완료 후 확인
root@node1:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
node1 Ready control-plane 26m v1.28.5
node2 Ready control-plane 26m v1.28.5
node3 Ready <none> 25m v1.28.5
'DevOps > Ansible' 카테고리의 다른 글
[A101] 7. Ansible 시스템 보안 설정 (1) | 2024.02.11 |
---|---|
[A101] 6. Ansible 시스템 구축 및 환경 설정 자동화 (0) | 2024.02.03 |
[A101] 4. Ansible 반복문, 조건문 (0) | 2024.01.18 |
[A101] 3. Ansible 기본사용(2) (0) | 2024.01.08 |
[A101] 2. Ansible 기본사용(1) (1) | 2024.01.07 |