이 강의는 CentOS 7(x86-64) 환경으로 촬영했습니다. CentOS 7 박스는 애플 실리콘 맥에서 동작하지 않으므로 쿠버네티스 강의에서 사용하는 sysnet4admin/Ubuntu-k8s 박스(Ubuntu 24.04)로 바꿔서 실습합니다. 아래 내용은 이 저장소의 코드를 Ubuntu 24.04와 같은 버전의 앤서블(ansible-core 2.16)로 검사해서 정리한 것입니다. 다만 모든 수업을 이 환경에서 실행해 보지는 않았습니다.
VirtualBox와 Vagrant는 쿠버네티스 강의의 애플 실리콘 실습 환경과 같은 것을 사용하면 됩니다.
| 섹션 | 애플 실리콘 맥에서 |
|---|---|
| [기초] | CentOS ISO 대신 Ubuntu-k8s 박스로 VM을 만들고 아래 bootstrap.sh 내용으로 앤서블과 기본 파일을 준비합니다 |
| [응용] 기초 실습 환경, 우분투 관리하기, 알아두면 좋을 앤서블 팁 | 아래처럼 바꾸면 실습할 수 있습니다 |
| [응용] 센트OS 관리하기 | yum과 epel을 사용하는 수업이라 우분투 관리하기(ch3/3.2)의 Ubuntu 플레이로 같은 내용을 실습합니다 |
| [응용] 윈도우 관리하기, 네트워크 시스템 관리하기, [optional] | 윈도우와 NX-OSv 박스가 x86-64 전용이라 실습할 수 없습니다 |
| [심화] 전체 | 노드를 Ubuntu 4대(node101~104)로만 구성하면 실습할 수 있습니다. 플레이북이 CentOS.yml과 Ubuntu.yml로 나뉘어 있어서 Ubuntu 쪽만 실행됩니다 |
- 모든 VM의
cfg.vm.box를"sysnet4admin/Ubuntu-k8s"로 바꿉니다. public_network를private_network로 바꿉니다. IP는 그대로 둡니다.- 노드 메모리는 1024MB를 권장합니다.
- 윈도우 노드(응용
ch4)와 CentOS 노드(심화 node201~204)는 뺍니다. - 노드마다 아래 준비를 추가합니다. 이 박스는 시간대가 Asia/Seoul로 만들어져 있어서 UTC로 돌려 두어야 시간대 수업에서 바뀌는 것을 볼 수 있습니다.
cfg.vm.provision "shell", inline: "apt-get update && apt-get install -y nfs-common && timedatectl set-timezone UTC"CentOS 7의 앤서블 패키지는 /etc/ansible에 설정 파일과 인벤토리 예제를 만들어 주지만 Ubuntu 패키지는 만들지 않습니다. 그래서 영상과 같은 Ansible 2.9 예제 파일을 받아 둡니다. 성능 튜닝에서 forks, pipelining, fact_caching 주석을 푸는 것도 영상과 같은 줄에서 할 수 있습니다.
#! /usr/bin/env bash
export DEBIAN_FRONTEND=noninteractive
# 앤서블 설치 (Ubuntu 24.04: ansible 9.2.0, ansible-core 2.16.3)
apt-get update
apt-get install -y ansible nfs-kernel-server
# CentOS 7의 앤서블 패키지가 만들던 기본 파일(Ansible 2.9 예제)을 같은 자리에 둔다
mkdir -p /etc/ansible
curl -fsSL https://raw.githubusercontent.com/ansible/ansible/stable-2.9/examples/ansible.cfg -o /etc/ansible/ansible.cfg
curl -fsSL https://raw.githubusercontent.com/ansible/ansible/stable-2.9/examples/hosts -o /etc/ansible/hosts
# 영상의 'service: name=nfs'가 그대로 동작하도록 nfs 이름을 연결한다
ln -sf /usr/lib/systemd/system/nfs-server.service /etc/systemd/system/nfs.service
systemctl daemon-reload
# 환경설정 초기 파일 구성
mkdir -p /home/vagrant/.vim/autoload /home/vagrant/.vim/bundle
touch /home/vagrant/.vimrc /home/vagrant/.bashrcAnsible_env_ready.yml은 2가지를 바꿉니다.
- yum 작업을 apt로 바꿉니다.
vim-enhanced는vim으로 바꾸고git과sshpass는 이름이 같습니다. /etc/ansible/hosts에 넣는 블록에서[CentOS]그룹은 비우고[Ubuntu]그룹에 node01~04를 둡니다. 심화는[nodes]에서192.168.1.[201:204]줄을 지웁니다.
SSH 비밀번호 로그인과 sshd 서비스 이름은 박스에 이미 맞춰져 있어서 add_ssh_auth.sh, Ansible_ssh_conf_4_CentOS.yml, Auto_known_host.yml, Auto_authorized_keys.yml은 그대로 사용합니다.
| 대상 | 영상 | Ubuntu 24.04 |
|---|---|---|
| 패키지 설치 모듈 | yum (epel-release 필요) |
apt (epel 필요 없음) |
| nginx 웹 루트 | /usr/share/nginx/html/ |
/var/www/html/ |
| NFS 서버 서비스 이름 | nfs |
nfs-server. 위 bootstrap.sh로 준비했으면 nfs 그대로 |
| 성능 튜닝 6.3~6.5 패키지 | tftp |
tftp-hpa |
| 성능 튜닝 콜백 설정 | callback_whitelist = profile_tasks, timer |
callbacks_enabled = profile_tasks, timer. callback_whitelist는 ansible-core 2.15에서 없어져서 넣어도 무시됩니다 |
nginx 설치 수업의 get_url 주소를 영상의 https://www.nginx.com에서 http://nginx.org로 바꿨습니다. www.nginx.com은 다른 주소로 옮겨져서 받은 파일이 index.html이 아니라 nginx라는 이름으로 저장되고, Ubuntu 14.04 노드에서는 HTTPS 연결이 끊겨 실패합니다. 영상을 따라 직접 입력할 때도 http://nginx.org를 사용합니다.
윈도우 노드(응용 ch4)의 박스를 sysnet4admin/Windows2016(Windows Server 2016, 데스크톱)에서 sysnet4admin/Windows2019(Windows Server 2019 Core 평가판, 화면 없음)로 바꿨습니다. 이전 박스는 HCP Vagrant(Vagrant Cloud)가 2026년 12월 31일에 종료되면 받을 수 없습니다. 수업은 화면 없이 WinRM으로 진행하므로 영상과 같은 방법으로 실습합니다. 평가판이라 사용 기간이 있습니다(새로 만든 VM에서 slmgr /dlv로 보면 180일). 박스 크기를 줄이려고 사용하지 않는 Windows 기능의 설치 파일을 지웠고, NFS 수업(ch4/4.5, ch6/6.1)에서 쓰는 NFS-Client는 미리 설치해 두었습니다. 그래서 win_feature 작업의 결과가 영상의 changed가 아니라 ok로 나옵니다.
nginx 설치 수업(ch4/4.3)의 win_chocolatey는 Chocolatey가 없으면 최신 2.x를 설치하는데, 2.x는 .NET Framework 4.8이 필요해서 Windows Server 2019(.NET 4.7.2)에서 실패합니다. 그래서 NSSM을 설치하기 전에 Chocolatey 1.4.0을 먼저 설치하는 작업을 넣었습니다. 영상을 따라 직접 입력할 때도 이 작업을 넣습니다.
- name: Install Chocolatey 1.x (2.x needs .NET 4.8)
win_chocolatey:
name: chocolatey
version: 1.4.0