소개
Ansible 작업은 각 자동화 태스크가 명확한 프로젝트 디렉토리에 위치할 때 유지 관리가 더 쉬워집니다. RHCE 스타일의 Ansible 작업은 플레이북, 인벤토리, 변수, 역할 등이 모두 시간이 지남에 따라 변경되는 텍스트 파일이므로 소스 제어 습관을 갖추는 것이 중요합니다.
이번 실습에서는 /home/labex/project/rhce-ansible 경로에 작은 Ansible 프로젝트를 생성하고, 이를 Git 저장소로 초기화한 뒤, 첫 번째 인벤토리를 추가하고 기준 파일을 커밋합니다. 프로젝트 규모는 작지만, 이 과정에서 사용하는 레이아웃은 본 교육 과정 전반에서 사용되는 구조와 동일합니다.
프로젝트 작업 공간 생성
이 단계에서는 프로젝트 디렉토리와 Ansible 프로젝트에서 사용하는 첫 번째 폴더 세트를 생성합니다. -p 옵션은 mkdir 명령어가 누락된 상위 디렉토리를 생성하도록 하며, 디렉토리가 이미 존재할 경우 오류를 발생시키지 않도록 합니다.
표준 LabEx 작업 공간으로 이동합니다.
cd /home/labex/project
인벤토리, 플레이북, 변수, 파일, 템플릿 및 역할을 위한 공통 하위 디렉토리가 포함된 프로젝트 디렉토리를 생성합니다.
mkdir -p rhce-ansible/{inventory,playbooks,group_vars,host_vars,roles,files,templates}
디렉토리 이름은 필수 사항은 아니지만 관례적으로 사용됩니다. 이를 미리 설정해두면 이후 실습에서 인벤토리 파일, 변수, 재사용 가능한 역할 코드, 플레이북이 복사하거나 템플릿으로 사용할 소스 파일이 어디에 위치하는지 쉽게 파악할 수 있습니다.
새로 생성된 프로젝트 트리를 나열합니다. 출력 결과에 방금 생성한 디렉토리들이 표시되어야 합니다.
find rhce-ansible -maxdepth 2 -type d | sort
find는 프로젝트 트리의 디렉토리를 출력하고, sort는 순서를 정렬합니다. 현재 이 디렉토리들은 비어 있지만, 이 구조 자체가 나중에 커밋할 기준 구조가 됩니다.
Git 초기화 및 로컬 ID 설정
이 단계에서는 프로젝트를 Git 저장소로 전환합니다. Git 은 변경 이력을 숨겨진 .git 디렉토리에 저장합니다. 로컬에서 ID 를 설정하면 실습 환경이 독립적으로 유지되며 전역 사용자 설정을 변경하지 않아도 됩니다.
프로젝트 디렉토리로 이동합니다.
cd /home/labex/project/rhce-ansible
저장소를 초기화합니다.
git init
Git 은 프로젝트 내부에 숨겨진 .git 디렉토리를 생성합니다. 이 디렉토리는 저장소 데이터베이스 역할을 하며, 눈에 보이는 Ansible 파일들은 일반 프로젝트 트리에 그대로 유지됩니다.
이 저장소의 커밋에 사용할 로컬 작성자 이름과 이메일을 설정합니다.
git config user.name "LabEx RHCE Learner"
git config user.email "learner@example.com"
저장소 상태를 확인합니다. Git 은 아직 추적 중인 파일이 없는 브랜치에 있다고 보고해야 합니다.
git status --short
짧은 상태 형식은 간결하게 표시됩니다. 빈 디렉토리는 Git 에서 추적하지 않으므로, 실제 파일을 추가하기 전까지 이 명령어가 거의 아무것도 출력하지 않는 것은 정상입니다.
프로젝트 노트 및 무시 규칙 추가
이 단계에서는 두 개의 간단한 프로젝트 파일을 추가합니다. README.md는 프로젝트의 목적을 설명하고, .gitignore는 임시 파일이 Git 이력에 포함되지 않도록 합니다.
이 단계의 명령어를 실행하기 전에 프로젝트 디렉토리로 돌아와 상대 경로가 Ansible 프로젝트를 참조하도록 합니다.
cd /home/labex/project/rhce-ansible
히어 도큐먼트 (here-document) 를 사용하여 README.md를 생성합니다. EOF 마커 사이의 텍스트는 표시된 그대로 파일에 작성됩니다.
cat > README.md <<'EOF'
## RHCE Ansible Practice Project
This repository contains guided Ansible practice files for RHCE-style automation.
EOF
일반적인 Ansible 임시 아티팩트를 위한 작은 .gitignore 파일을 생성합니다.
cat > .gitignore <<'EOF'
*.retry
.artifacts/
__pycache__/
EOF
*.retry 패턴은 이전 Ansible 워크플로우의 재시도 파일을 포함하며, .artifacts/는 생성된 출력물이 위치하는 일반적인 장소이고, __pycache__/는 파이썬 바이트코드가 프로젝트 이력에 남지 않도록 합니다.
두 파일을 모두 표시하여 추적하기 전에 내용을 확인합니다.
sed -n '1,20p' README.md .gitignore
첫 번째 인벤토리 생성
이 단계에서는 작은 정적 인벤토리를 생성합니다. 인벤토리는 Ansible 이 관리할 수 있는 시스템의 이름을 지정합니다. 첫 번째 실습에서는 control이라는 호스트가 ansible_connection=local을 사용하는데, 이는 Ansible 이 SSH 없이 동일한 VM 에서 태스크를 실행함을 의미합니다.
이 단계의 명령어를 실행하기 전에 프로젝트 디렉토리로 돌아와 상대 경로가 Ansible 프로젝트를 참조하도록 합니다.
cd /home/labex/project/rhce-ansible
inventory/hosts 파일을 생성합니다.
cat > inventory/hosts <<'EOF'
[control]
control ansible_connection=local
EOF
대괄호로 묶인 [control] 행은 그룹을 정의합니다. 다음 행은 control이라는 호스트 별칭을 정의하며, ansible_connection=local은 이 첫 번째 프로젝트에서 Ansible 이 SSH 를 사용하지 않도록 지시합니다.
ansible-inventory를 사용하여 파일을 구문 분석합니다. 이 명령어는 플레이북에서 사용하기 전에 인벤토리 구문을 확인합니다.
ansible-inventory -i inventory/hosts --graph
그래프에는 control 그룹과 control 호스트가 포함되어야 합니다.
기준 프로젝트 커밋
이 단계에서는 기준 파일들을 Git 에 추가하고 첫 번째 커밋을 생성합니다. 커밋은 나중에 검사할 수 있는 명명된 체크포인트입니다.
이 단계의 명령어를 실행하기 전에 프로젝트 디렉토리로 돌아와 상대 경로가 Ansible 프로젝트를 참조하도록 합니다.
cd /home/labex/project/rhce-ansible
파일들을 스테이징합니다. 스테이징은 다음 커밋에 포함할 변경 사항을 Git 에 알리는 과정입니다.
git add README.md .gitignore inventory/hosts
기준 커밋을 생성합니다.
git commit -m "Create Ansible project baseline"
커밋 출력에는 저장소에 추가된 파일들이 언급되어야 합니다. 만약 Git 이 커밋할 내용이 없다고 한다면, git status --short를 다시 실행하여 README.md, .gitignore, inventory/hosts가 제대로 스테이징되었는지 확인하십시오.
최종 상태와 가장 최근 커밋을 검사합니다. 상태가 깨끗하다면 추적 중인 모든 변경 사항이 커밋된 것입니다.
git status --short
git log --oneline -1
이제 git status --short는 비어 있어야 하며, git log --oneline -1은 새로운 커밋 메시지를 보여주어야 합니다. 이것으로 이후 실습에서 더 많은 Ansible 콘텐츠를 추가하기 전의 안정적인 체크포인트가 마련되었습니다.
요약
깔끔한 Ansible 프로젝트 작업 공간을 생성하고, Git 을 초기화하며, 기본적인 인벤토리를 추가하고, 첫 번째 기준 파일을 커밋했습니다. 이러한 프로젝트 습관은 향후 플레이북, 변수, 템플릿, 역할 및 검증 파일을 관리하는 데 큰 도움이 될 것입니다.


