RHCE (EX294) 시험 준비
RHCE (Red Hat Certified Engineer) EX294 시험 준비를 위한 문제 풀이입니다.
이 글을 작성하는 이유는 더 많은 사람들이 시험에 합격하길 바라는 마음에 작성했습니다. 이전 합격 후기에 문제 공유가 가능하냐는 댓글이 많아 작성했습니다. 해당 글은 문제가 있을 경우 삭제하겠습니다.
문제 풀이에 틀린 내용이 있을 수 있으며, 아래 풀어드린 내용을 이해하고 접근하시면 쉽게 문제 풀이가 가능 할 것으로 보입니다.
저는 동일한 내용을 5~10번 정도 보지않고 푼 뒤에 시험을 봤습니다.
아래 문제 풀이에 사용된 패키지 및 파일은 공유가 어렵습니다. (구글에 파일이름으로 찾으면 나옵니다. Git 등)

시험 정보
- 시험 시간: 4시간
- 서버 구성: Controller 1대, Node 5대 (총 6대)
- 주요 평가 요소:
- ansible-doc 명령어 활용 능력
- Jinja2 변수 사용 능력
- Ansible playbook 작성 능력
시험 포인트 체크리스트
- Ansible 설치 및 구성
- yum 저장소 생성
- Collection 설치
- 패키지 설치
- Ansible 역할 사용하기
- Ansible Galaxy를 사용하여 역할 설치하기
- 역할 생성 및 사용하기
- Logical Volume (LV) 생성 및 사용하기
- Hosts 파일 생성하기
- 파일 내용 수정하기
- Web 컨텐츠 디렉토리 생성하기
- 하드웨어 보고서 생성하기
- 비밀번호 보관소 생성하기
- 사용자 계정 생성하기
- Ansible Vault 재키 생성하기
- 크론작업 설정하기
💡 시험 전 꼭 알아야 할 팁
| 구분 | 내용 |
|---|---|
| 환경 | ctrl 서버의 local repository는 이미 구성되어 있음 |
| 주의사항 | 문제에서 요청하는 내용 그대로 진행 (파일 이름 정확히 확인!) |
| OS 설정 | 문제에서 요청하는 것 이외에는 OS 설정 정보 수정 불필요 |
| 멱등성 | Ansible은 멱등성 성질이 있어 반복 수행해도 무방 |
| 핵심 역량 | ansible-doc 명령어와 Jinja2 변수 활용이 당락 결정 |
| 터미널 구성 | 3~4개 터미널 사용 권장 |
터미널 구성 권장사항
- 1번 터미널: ctrl 작업 터미널
- 2번 터미널: ansible-doc 명령어 전용
- 3번 터미널: 메모장 (URL, 비밀번호 등)
- 4번 터미널 (선택): 추가 작업용
ansible-doc 활용법
# 사용 가능한 모든 모듈 확인
ansible-doc --list
# 특정 모듈 설명 확인
ansible-doc 모듈명
🔥Tip
# ansible node1 -m setup 결과를 미리 파일로 저장해두면 변수 찾기가 빨라집니다
ansible node1 -m setup > /home/admin/ansible/node1_facts.txt
시험 환경 구성
서버 구성도
| Hostname | IP | FQDN |
|---|---|---|
| repo | 192.168.59.100 | rhgls.domain1.example.com |
| Controller | 192.168.59.130 | ctrl.example.com |
| Node1 | 192.168.59.131 | node1.example.com |
| Node2 | 192.168.59.132 | node2.example.com |
| Node3 | 192.168.59.133 | node3.example.com |
| Node4 | 192.168.59.134 | node4.example.com |
| Node5 | 192.168.59.135 | node5.example.com |
1️⃣ 기본 패키지 설치
Controller 서버
yum install vim bash-completion wget
Node 서버 (1~5)
yum install vim bash-completion wget lvm2
2️⃣ /etc/hosts 설정
모든 서버에 동일하게 적용:
cat << 'EOF' >> /etc/hosts
192.168.59.100 repo rhgls.domain1.example.com
192.168.59.130 ctrl ctrl.example.com
192.168.59.131 node1 node1.example.com
192.168.59.132 node2 node2.example.com
192.168.59.133 node3 node3.example.com
192.168.59.134 node4 node4.example.com
192.168.59.135 node5 node5.example.com
EOF
3️⃣ Controller 서버 Local Repository 구성
cat << 'EOF' > /etc/yum.repos.d/local.repo
[BaseOS]
name=BaseOS
baseurl=http://rhgls.domain1.example.com/os/BaseOS
enabled=1
gpgcheck=0
[AppStream]
name=AppStream
baseurl=http://rhgls.domain1.example.com/os/AppStream
enabled=1
gpgcheck=0
[Ansible]
name=Ansible
baseurl=http://rhgls.domain1.example.com/ansible
enabled=1
gpgcheck=0
EOF
yum clean all
yum repolist all
4️⃣ admin 계정 생성 (모든 서버)
# admin 계정 생성
useradd -G wheel admin
passwd admin
# 비밀번호: admin
# sudoers 설정
vim /etc/sudoers
# 다음 라인 추가 또는 주석 해제:
%wheel ALL=(ALL) NOPASSWD:ALL
# admin 계정으로 전환
su - admin
5️⃣ SSH Key 설정 (Controller에서만)
# Controller에서 실행
ssh-keygen # 모두 Enter로 기본값 사용
# Node 서버들에 SSH Key 복사
ssh-copy-id admin@node1
ssh-copy-id admin@node2
ssh-copy-id admin@node3
ssh-copy-id admin@node4
ssh-copy-id admin@node5
# 접속 테스트
ssh admin@node1
6️⃣ Repo 서버 구성 (시험 환경에서 제공)
참고: 실제 시험에서는 Repo 서버가 이미 구성되어 있습니다. 참고용으로만 확인하세요.
# HTTP 서버 설치 및 시작
systemctl enable --now httpd
# DocumentRoot 경로 확인/변경
vim /etc/httpd/conf/httpd.conf
# DocumentRoot "/var/www"
# ISO 마운트
mkdir /var/www/os
mount /dev/sr0 /var/www/os
# Ansible 패키지 업로드 및 Repository 생성
mkdir /var/www/ansible
# ansible-2.9.27-1.el8ae.noarch.rpm 등 복사
createrepo /var/www/ansible/
# 시험 자료 업로드
mkdir /var/www/materials
# 필요한 파일들 업로드
문제 및 풀이
문제 1. Ansible 설치 및 구성
📌 문제
제어 노드 control_domain1.example.com에 Ansible을 다음과 같이 구성하시오:
- 필요한 패키지 설치
-
/home/admin/ansible/inventory정적 인벤토리 파일 생성- node1은 dev 호스트 그룹
- node2는 test 호스트 그룹
- node3, node4는 prod 호스트 그룹
- node5는 balancers 호스트 그룹
- prod 그룹은 webservers 호스트 그룹의 구성원
✅ 풀이
# 1. Ansible 패키지 설치
sudo dnf -y install ansible-*
# 2. 작업 디렉토리 생성
su - admin
mkdir /home/admin/ansible
cd /home/admin/ansible
# 3. ansible.cfg 복사 및 수정
cp /etc/ansible/ansible.cfg /home/admin/ansible/ansible.cfg
vim ansible.cfg
ansible.cfg 설정 내용:
[defaults]
inventory = /home/admin/ansible/inventory
roles_path = /home/admin/ansible/roles
remote_user = admin
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
inventory 파일 작성:
vim inventory
[dev]
node1
[test]
node2
[prod]
node3
node4
[balancers]
node5
[webservers:children]
prod
테스트:
ansible all -m ping
💡 Tip
- ansible과 ansible-core 패키지 간 ansible.cfg 파일 구조가 다르니 주의
/home/admin/ansible/ansible.cfg에 설정하지 않으면 0점 처리- inventory 파일 경로가 정확한지 반드시 확인
문제 2. yum 저장소 생성
📌 문제
/home/admin/ansible/yum_repo.yml 플레이북을 생성하여 각 관리 노드에 다음 yum 저장소를 만드시오:
Repository 1:
- 저장소 이름:
EX294_BASE - 설명:
EX 294 base software - Base URL:
http://rhgls.domain1.example.com/os/BaseOS - GPG 서명 확인: 활성화
- GPG 키 URL:
http://rhgls.domain1.example.com/os/RHEL/RPM-GPG-KEY-redhat-release - 저장소: 활성화
Repository 2:
- 저장소 이름:
EX294_STREAM - 설명:
EX 294 stream software - Base URL:
http://rhgls.domain1.example.com/os/AppStream - GPG 서명 확인: 활성화
- GPG 키 URL:
http://rhgls.domain1.example.com/os/RHEL/RPM-GPG-KEY-redhat-release - 저장소: 활성화
✅ 풀이
방법 1: Ad-hoc 명령어 (adhoc.sh 파일 요구 시)
vim adhoc.sh
#!/bin/bash
ansible all -m yum_repository -a 'file=external_base name=EX294_BASE description="EX 294 base software" baseurl=http://rhgls.domain1.example.com/os/BaseOS enabled=1 gpgcheck=0'
ansible all -m yum_repository -a 'file=external_stream name=EX294_STREAM description="EX 294 stream software" baseurl=http://rhgls.domain1.example.com/os/AppStream enabled=1 gpgcheck=0'
chmod 744 adhoc.sh
./adhoc.sh
방법 2: Playbook (yum_repo.yml 파일 요구 시)
vim yum_repo.yml
---
- name: Configure yum repositories
hosts: all
tasks:
- name: Add BaseOS repository
yum_repository:
name: EX294_BaseOS
description: EX294 BaseOS software
file: external
baseurl: http://rhgls.domain1.example.com/os/BaseOS
gpgcheck: yes
gpgkey: http://rhgls.domain1.example.com/os/RHEL/RPM-GPG-KEY-redhat-release
enabled: yes
- name: Add AppStream repository
yum_repository:
name: EX294_AppStream
description: EX294 AppStream software
file: external
baseurl: http://rhgls.domain1.example.com/os/AppStream
gpgcheck: yes
gpgkey: http://rhgls.domain1.example.com/os/RHEL/RPM-GPG-KEY-redhat-release
enabled: yes
실행 및 확인:
ansible-playbook yum_repo.yml
# 확인
ansible all -m shell -a 'cat /etc/yum.repos.d/external.repo'
ansible all -m shell -a 'yum repoinfo'
💡 Tip
file파라미터로 저장소 파일명 지정 가능gpgcheck설정은 문제에서 요구하는 대로 정확히 설정- 실행 후 반드시 각 노드에서 저장소 파일이 생성되었는지 확인
문제 3. Collection 설치
📌 문제
http://rhgls.domain1.example.com/materials에서 다음 컬렉션을 /home/admin/ansible/mycollections에 설치하시오:
- redhat-rhel_system_roles-1.15.1.tar.gz
- ansible-posix-1.5.1.tar.gz
- community-general-5.4.0.tar.gz
✅ 풀이
# 1. 디렉토리 생성
mkdir -p /home/admin/ansible/mycollections
cd /home/admin/ansible/mycollections
# 2. 컬렉션 파일 다운로드
wget http://rhgls.domain1.example.com/materials/redhat-rhel_system_roles-1.15.1.tar.gz
wget http://rhgls.domain1.example.com/materials/ansible-posix-1.5.1.tar.gz
wget http://rhgls.domain1.example.com/materials/community-general-5.4.0.tar.gz
방법 1: 개별 설치
ansible-galaxy collection install /home/admin/ansible/mycollections/redhat-rhel_system_roles-1.15.1.tar.gz -p /home/admin/ansible/mycollections
ansible-galaxy collection install /home/admin/ansible/mycollections/ansible-posix-1.5.1.tar.gz -p /home/admin/ansible/mycollections
ansible-galaxy collection install /home/admin/ansible/mycollections/community-general-5.4.0.tar.gz -p /home/admin/ansible/mycollections
방법 2: requirements.yml 사용 (권장)
vim requirements.yml
---
collections:
- name: /home/admin/ansible/mycollections/redhat-rhel_system_roles-1.15.1.tar.gz
- name: /home/admin/ansible/mycollections/ansible-posix-1.5.1.tar.gz
- name: /home/admin/ansible/mycollections/community-general-5.4.0.tar.gz
ansible-galaxy collection install -r requirements.yml -p /home/admin/ansible/mycollections
# 설치 확인
ansible-galaxy collection list
💡 Tip
- ansible.posix는 MANIFEST.JSON 대신 galaxy.yml을 사용하는 경우가 있어 설치 방법이 다를 수 있음
- 설치 후
ansible-galaxy collection list로 경로별 설치 내역 확인 - 이 문제는 실제 시험에서 독립 문제로 나오지 않을 수 있음
문제 4. 패키지 설치
📌 문제
/home/admin/ansible/packages.yml 플레이북을 생성하여:
- dev, test, prod 호스트 그룹에 php, mariadb 패키지 설치
- dev 호스트 그룹에 RPM Development Tools 패키지 그룹 설치
- dev 호스트 그룹의 모든 패키지를 최신 버전으로 업데이트
✅ 풀이
vim /home/admin/ansible/packages.yml
---
- name: Install packages on dev, test, and prod
hosts:
- dev
- test
- prod
become: true
tasks:
- name: Install php and mariadb
yum:
name:
- php
- mariadb-server
state: latest
- name: Install development packages on dev
hosts: dev
become: true
tasks:
- name: Install RPM Development Tools
yum:
name: "@RPM Development Tools"
state: latest
- name: Update all packages
yum:
name: '*'
state: latest
실행 및 확인:
ansible-playbook packages.yml
# 확인
ansible all -m shell -a 'rpm -qa | grep -i maria'
ansible all -m shell -a 'rpm -qa | grep -i php'
ansible dev -m shell -a 'yum grouplist'
💡 Tip
- 패키지 그룹은
"@그룹명"형식으로 지정 state: latest는 최신 버전 설치/업데이트- 여러 호스트 그룹을 대상으로 할 때는 리스트 형태로 지정 가능
문제 5. SELinux Role 사용하기
📌 문제
/home/admin/ansible/selinux.yml 플레이북을 생성하여:
- 모든 관리 노드에서 실행
- selinux role 사용
- SELinux 정책을 targeted로 구성
- SELinux 상태를 enforcing으로 설정
✅ 풀이
# 1. rhel-system-roles 패키지 설치
sudo dnf install rhel-system-roles
# 2. playbook 작성
vim ~/ansible/selinux.yml
---
- hosts: all
become: true
vars:
- selinux_policy: targeted
- selinux_state: enforcing
roles:
- rhel-system-roles.selinux
실행 및 확인:
# 실행 전 상태 확인
ansible all -m shell -a 'getenforce'
# playbook 실행
ansible-playbook selinux.yml
# 실행 후 상태 확인
ansible all -m shell -a 'getenforce'
💡 Tip
- Collections를 설치하지 않았다면 rhel-system-roles 패키지를 수동 설치해야 함
- role 이름은 정확히
rhel-system-roles.selinux형식으로 사용 - vars에 지정한 변수명은 해당 role의 문서를 참고 (ansible-doc 활용)
문제 6. Ansible Galaxy를 사용하여 역할 설치
📌 문제
/home/admin/ansible/roles/requirements.yml 파일을 사용하여 다음 URL에서 역할을 다운로드하고 /home/admin/ansible/roles에 설치하시오:
- http://rhgls.domain1.example.com/materials/haproxy.tar
- 역할 이름: balancer
- http://rhgls.domain1.example.com/materials/phpinfo.tar
- 역할 이름: phpinfo
✅ 풀이
# 1. roles 디렉토리 생성
mkdir -p ~/ansible/roles
# 2. requirements.yml 작성
vim ~/ansible/roles/requirements.yml
---
- name: balancer
src: http://rhgls.domain1.example.com/materials/haproxy.tar
- name: phpinfo
src: http://rhgls.domain1.example.com/materials/phpinfo.tar
# 3. role 설치
ansible-galaxy role install -r ~/ansible/roles/requirements.yml -p /home/admin/ansible/roles/
# 4. 설치 확인
ls -al /home/admin/ansible/roles
💡 Tip
ansible-galaxy role install명령어 사용 (collection이 아님에 주의)-p옵션으로 설치 경로 지정- src는 URL, 로컬 파일 경로, Galaxy 저장소 이름 등 다양하게 지정 가능
- 역할 이름은
name으로 지정
문제 7. Apache Role 생성 및 사용
📌 문제
/home/admin/ansible/roles/apache 역할을 생성하고 다음 요구사항을 충족하시오:
- httpd 패키지 설치, 부팅 시 자동 시작, 서비스 시작
- 방화벽 활성화 및 웹 서버 액세스 허용 규칙 설정
- index.html.j2 템플릿으로 /var/www/html/index.html 생성
- 내용:
Welcome to HOSTNAME on IPADDRESS - HOSTNAME: 관리 노드의 FQDN
- IPADDRESS: 관리 노드의 IP 주소
- 내용:
-
/home/admin/ansible/newrole.yml플레이북 생성- webservers 호스트 그룹에서 실행
✅ 풀이
# 1. role 구조 생성
cd ~/ansible
ansible-galaxy init roles/apache
# 2. tasks/main.yml 작성
vim ~/ansible/roles/apache/tasks/main.yml
---
# tasks file for apache
- name: Install httpd
yum:
name: httpd
state: latest
- name: Start and enable httpd service
service:
name: httpd
enabled: yes
state: started
- name: Start and enable firewalld service
service:
name: firewalld
enabled: yes
state: started
- name: Add http service to firewalld
firewalld:
service: http
state: enabled
permanent: yes
immediate: yes
- name: Create index.html from template
template:
src: index.html.j2
dest: /var/www/html/index.html
# 3. index.html.j2 템플릿 작성
vim ~/ansible/roles/apache/templates/index.html.j2
Welcome to {{ ansible_fqdn }} on {{ ansible_default_ipv4.address }}
# 4. newrole.yml playbook 작성
vim ~/ansible/newrole.yml
---
- name: Deploy Apache webserver role
hosts: webservers
become: true
roles:
- apache
# 5. 실행 및 확인
ansible-playbook newrole.yml
# prod 그룹(webservers) 결과 확인
curl node3
curl node4
💡 Tip
- Jinja2 변수 찾기:
ansible node3 -m setup | grep -i fqdn또는less로 확인 - 주요 Ansible facts:
ansible_fqdn: Fully Qualified Domain Nameansible_default_ipv4.address: 기본 IPv4 주소ansible_hostname: 호스트명
- firewalld의
immediate: yes는 즉시 적용을 의미
문제 8. Ansible Galaxy Role 사용하기
📌 문제
/home/admin/ansible/roles.yml 플레이북을 생성하여:
balancers 호스트 그룹:
- balancer role 사용
- webservers 호스트 그룹 간 웹 서버 로드 밸런싱 구성
- http://node5.domain1.example.com/ 접속 시:
Welcome to node3.domain1.example.com on 172.24.1.8- 새로고침 시:
Welcome to node4.domain1.example.com on 172.24.1.9
webservers 호스트 그룹:
- phpinfo role 사용
- /hello.php 접속 시:
Hello PHP World from FQDN- 예:
Hello PHP World from node3.domain1.example.com - PHP 버전 및 구성 정보 표시
✅ 풀이
사전 작업 (실제 시험에서는 불필요):
# balancer role의 defaults/main.yml 수정
vim /home/admin/ansible/roles/balancer/defaults/main.yml
haproxy_backend_servers:
- name: node3
address: 192.168.59.133:80
- name: node4
address: 192.168.59.134:80
# node5 방화벽 설정
ansible node5 -m shell -a 'firewall-cmd --add-service=http'
ansible node5 -m shell -a 'firewall-cmd --runtime-to-permanent'
roles.yml 작성:
vim ~/ansible/roles.yml
---
- hosts: webservers
become: true
roles:
- phpinfo
- hosts: balancers
become: true
roles:
- balancer
실행 및 확인:
ansible-playbook roles.yml
# balancers 로드 밸런싱 확인
curl node5
curl node5 # 다시 실행하면 다른 노드로 연결
# phpinfo 확인
curl node3/hello.php
curl node4/hello.php
💡 Tip
- haproxy_backend_servers 변수는 balancer role의 defaults 또는 playbook vars에서 정의
- 실제 시험에서는 role이 이미 올바르게 구성되어 있을 가능성이 높음
gather_facts: true가 필요한 경우 playbook 상단에 명시
문제 9. Logical Volume 생성 및 사용
📌 문제
모든 관리 노드에서 실행되는 /home/admin/ansible/lv.yml 플레이북을 생성하여:
- research 볼륨 그룹에 논리 볼륨 생성
- 논리 볼륨 이름: data
- 크기: 1500 MiB
- ext4 파일시스템으로 포맷
- 1500 MiB 생성 불가 시:
- 에러 메시지: "Could not create logical volume of that size" 출력
- 800 MiB로 재생성
- research 볼륨 그룹이 없는 경우:
- 에러 메시지: "Volume group does not exist" 출력
- 논리 볼륨 마운트하지 않음
✅ 풀이
사전 작업 (테스트 환경 구성):
# lvm2 패키지 설치 (모든 노드)
cat << 'EOF' > packages2.yml
---
- name: Install lvm2 package
hosts: all
become: true
tasks:
- name: Install lvm2
yum:
name:
- lvm2
state: latest
EOF
ansible-playbook packages2.yml
# 디스크 추가 (각 노드에 /dev/sdb 추가)
# node1-3: 2GB, node4-5: 1GB
# PV 및 VG 생성 (node1-4만)
ansible node1,node2,node3,node4 -m shell -a 'pvcreate /dev/sdb'
ansible node1,node2,node3,node4 -m shell -a 'vgcreate research /dev/sdb'
lv.yml 작성:
vim ~/ansible/lv.yml
---
- name: Create Logical Volume
hosts: all
tasks:
- name: Check if VG exists
debug:
msg: "Volume group does not exist"
when: ansible_lvm.vgs.research is undefined
- block:
- name: Create a logical volume of 1500m
lvol:
vg: research
lv: data
size: 1500
rescue:
- name: Display error message
debug:
msg: "Could not create logical volume of that size"
- name: Create a logical volume of 800m
lvol:
vg: research
lv: data
size: 800
- name: Format with ext4 filesystem
filesystem:
fstype: ext4
dev: /dev/mapper/research-data
when: ansible_lvm.vgs.research is defined
실행 및 확인:
ansible-playbook lv.yml
# 확인
ansible all -m shell -a 'vgs'
ansible all -m shell -a 'lvs'
ansible all -m shell -a 'lsblk'
💡 Tip
block과rescue를 사용한 에러 처리 패턴 숙지ansible_lvm.vgs.research로 VG 존재 여부 확인when조건으로 VG가 있는 경우에만 filesystem 생성- 논리 볼륨 경로:
/dev/mapper/VG이름-LV이름
문제 10. Hosts 파일 생성
📌 문제
- http://rhgls.domain1.example.com/materials/hosts.j2 템플릿 다운로드
- 템플릿을 완성하여 /etc/hosts 형식의 파일 생성
- http://rhgls.domain1.example.com/materials/hosts.yml 다운로드
- dev 호스트 그룹에서 /etc/myhosts 파일 생성
- playbook은 수정하지 않음
출력 예시:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.24.1.6 node1.domain1.example.com node1
172.24.1.7 node2.domain1.example.com node2
172.24.1.8 node3.domain1.example.com node3
172.24.1.9 node4.domain1.example.com node4
172.24.1.10 node5.domain1.example.com node5
✅ 풀이
# 1. 파일 다운로드
cd ~/ansible
wget http://rhgls.domain1.example.com/materials/hosts.j2
wget http://rhgls.domain1.example.com/materials/hosts.yml
방법 1:
vim hosts.j2
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
{% for host in groups['all'] %}
{{ hostvars[host]['ansible_facts']['default_ipv4']['address'] }} {{ hostvars[host]['ansible_facts']['fqdn'] }} {{ hostvars[host]['ansible_facts']['hostname'] }}
{% endfor %}
vim hosts.yml
---
- hosts: all
gather_facts: true
become: true
tasks:
- name: Create /etc/myhosts from template
template:
src: hosts.j2
dest: /etc/myhosts
when: ansible_hostname in groups['dev']
방법 2 (더 간결):
vim hosts.j2
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
{% for host in groups['all'] %}
{{ hostvars[host].ansible_default_ipv4.address }} {{ hostvars[host].ansible_fqdn }} {{ hostvars[host].ansible_hostname }}
{% endfor %}
vim hosts.yml
---
- hosts: all
gather_facts: true
become: true
- hosts: dev
become: true
tasks:
- name: Create /etc/myhosts from template
template:
src: hosts.j2
dest: /etc/myhosts
실행 및 확인:
ansible-playbook hosts.yml
# dev 호스트에서 확인
ansible dev -m shell -a 'cat /etc/myhosts'
💡 Tip
gather_facts: true필수 (ansible facts 수집)- Jinja2 for 루프:
{% for item in list %} ... {% endfor %} groups['all']로 모든 호스트 접근hostvars[host]로 특정 호스트의 변수 접근- dict 접근:
['key']또는.key형식 모두 가능
참고: 본 문서는 RHCE EX294 시험 준비를 위한 참고 자료입니다. 실제 시험 문제와 다를 수 있습니다.
[RHCE] RHCE (EX294) 문제 풀이 - 2
RHCE (EX294) 시험 준비문제 11. 파일 내용 수정📌 문제/home/admin/ansible/issue.yml 플레이북을 생성하여: 인벤토리 호스트 전체에서 실행 /etc/issue 파일 내용을 한 줄로 변경:dev 호스트: Developmenttest 호스
handari.tistory.com
'리눅스 > 자격증' 카테고리의 다른 글
| [RHCE] RHCE (EX294) 문제 풀이 - 2 (2) | 2025.11.28 |
|---|---|
| [RHCE] Repo Server 및 사전 구성 (1) | 2025.04.28 |
| [RHCE] 시험 전 Check Point + 후기 (19) | 2025.04.18 |
| [RHCSA] 시험 전 Check Point + 후기 (0) | 2024.01.17 |