1. Ansible 설치 및 구성
문제 및 답
문제 1) 다음과 같이 ansible 및 ansible 제어 노드 control.labx.example.com 을 설치하고 구성합니다.
* 다음과 같이 /home/matthew/ansible/inventory라는 정적 인벤토리 파일을 생성합니다.
- node1은 dev 호스트 그룹의 구성원입니다.
- node2는 test 호스트 그룹의 구성원입니다.
- node3 및 node4는 prod 호스트 그룹의 구성원입니다.
- node5는 balancers 호스트 그룹의 구성원입니다.
- prod 그룹은 webservers 호스트 그룹의 구성원입니다.
* 다음과 같이 /home/matthew/ansible/ansible.cfg 라는 구성 파일을 만듭니다.
- 호스트 인벤토리 파일 /home/matthew/ansible/inventory
- 플레이북에서 역할의 위치 /home/matthew/ansible/roles
답 1)
dnf -y install ansible-*
su - matthew
mkdir -pv /home/matthew/ansible/roles
# vi /home/matthew/ansible/inventory
[dev]
node1
[test]
node2
[prod]
node3
node4
[balancers:children]
node5
[webservers:children]
prod
# vi /home/matthew/ansible/ansible.cfg
[defaults]
remote_user = matthew
inventory = /home/matthew/ansible/inventory
roles_path = /home/matthew/ansible/roles:/usr/share/ansible/roles
ask_pass = false
[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = false
ansible all -m ping //잘 연결되었는지 확인
테스트용 구성
문제 1) 다음과 같이 ansible 및 ansible 제어 노드 control.labx.example.com 을 설치하고 구성합니다.
* 다음과 같이 /home/ec2-user/ansible/inventory라는 정적 인벤토리 파일을 생성합니다.
- node1은 dev 호스트 그룹의 구성원입니다.
- node2는 test 호스트 그룹의 구성원입니다.
- node3는 prod 호스트 그룹의 구성원입니다.
- prod 그룹은 webservers 호스트 그룹의 구성원입니다.
* 다음과 같이 /home/ec2-user/ansible/ansible.cfg 라는 구성 파일을 만듭니다.
- 호스트 인벤토리 파일 /home/ec2-user/ansible/inventory
- 플레이북에서 역할의 위치 /home/ec2-user/ansible/roles
답1)
dnf -y install ansible-*
su - ec2-user
mkdir -pv /home/ec2-user/ansible/roles
# vi /home/ec2-user/ansible/inventory
[dev]
node1
[test]
node2
[prod]
node3
[webservers:children]
prod
# vi /home/ec2-user/ansible/ansible.cfg
[defaults]
remote_user = ec2-user
inventory = /home/ec2-user/ansible/inventory
roles_path = /home/ec2-user/ansible/roles:/usr/share/ansible/roles
ask_pass = false
[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = false
ansible all -m ping
풀이과정
1. ansible control 노드 ansible 설치(설치되어 있지 않을 경우, root에서 설치)
dnf -y install ansible-*
ansible --version //설치 정상 확인(버전이 뜨면 정상적으로 설치된 것)
2. user 변경 및 파일 작성
정적 인벤토리를 사용할 때 (https://watch-n-learn.tistory.com/75)
- 그냥 ansible 명령을 입력하는경우에는 기본 경로인 /etc/ansible/hosts가 사용됨
- ansible.cfg 파일이 있는 경로에서 ansible 명령을 입력하는경우에는 inventory 파일이 사용됨
- 시험에서는 아무곳에서나 ansible 입력해도 될 것 같음
1. 사용자 전환
su - ec2-user
2. 역할 경로 생성
mkdir -pv /home/ec2-user/ansible/roles
3. 인벤토리 생성
# vi /home/ec2-user/ansible/inventory
[dev]
node1
[test]
node2
[prod]
node3
[webservers:children]
prod
4. config 파일 생성
# vi /home/ec2-user/ansible/ansible.cfg
[defaults]
remote_user = ec2-user
inventory = /home/ec2-user/ansible/inventory
roles_path = /home/ec2-user/ansible/roles:/usr/share/ansib
le/roles
ask_pass = false
[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = false
3. ping 확인
unreachable 뜰경우 ssh ec2-user@ip 로 확인해보기
처음에 yes해줘야함 -> 시험에서는 필요 없음
2. Yum 생성
문제 및 답
문제 2) yum_repository 생성하는 sh 파일 만들기
/home/matthew/ansible/adhoc.sh아래와 같이 각 관리 노드에 yum저장소를 만들기 위해
ansible ad-hoc 명령을 실행하는 라는 셸 스크립트를 만듭니다.
- 저장소 이름 (name) : exam_rhel
- 저장소 설명 (description) : EX407 software
- 기본 URL (baseurl) : http://content.example.com/rhel7.5/x86_64/dvd
- GPG 서명 확인 활성화
- GPG 키 URL : http://content.example.com/rhel7.5/x86_64/dvd/RPM-GPG-KEY-redhat-release
- 저장소가 사용 설정됨
테스트용 환경 ) /home/ec2-user/ansible/adhoc.sh 생성
답2)
#활성화된 repo 확인
ansible all -m command -a 'dnf repolist all'
#doc 확인
ansible-doc yum_repository EXAMPLE
#vi /home/matthew/ansible/adhoc.sh
#vi /home/ec2-user/ansible/adhoc.sh //테스트용 환경
#!/bin/bash
ansible all -m yum_repository -a "name=exam_rhel description='EX407 software'
base_url=http://content.example.com/rhel7.5/x86_64/dvd/BaseOS
gpgcheck=yes gpgkey=http://content.example.com/rhel7.5/x86_64/dvd/RPM-GPG-KEY-redhat-release
enabled=yes"
ansible all -m yum_repository -a "name=exam_rhel description='EX407 software'
base_url=http://content.example.com/rhel7.5/x86_64/dvd/Appstream
gpgcheck=yes gpgkey=http://content.example.com/rhel7.5/x86_64/dvd/RPM-GPG-KEY-redhat-release
enabled=yes"
chmod +x adhoc.sh
./adhoc.sh
ansible all -m command -a 'ls /etc/yum.repos.d/'
풀이과정
1. 기존에 있는 repo 확인 : ansible all -m command -a 'dnf repolist all'
2. ansible doc 확인 : ansible-doc yum_repository EXAMPLE
참고해서 sh파일 작성하기
3. sh 작성 : vi /home/ec2-user/ansible/adhoc.sh 후 실행
현재는 유효한 url이 아니므로 실행시 에러뜸
3. 소프트웨어 패키지 설치
문제 및 설치
문제 3) /home/matthew/ansible/packages.yml 이라는 플레이 북을 생성합니다.
1. dev, test, prod 3개의 호스트 그룹에 소속된 호스트에 php 및 mariadb 패키지를 설치합니다.
2. dev 호스트 그룹의 호스트에 RPM development tools 그룹을 설치합니다.
3. dev 호스트 그룹의 호스트에서 모든 패키지를 최신 버전으로 업데이트합니다.
테스트용 환경) /home/ec2-user/ansible/packages.yml 생성
# vi /home/matthew/ansible/packages.yml
# vi /home/ec2-user/ansible/packages.yml //테스트용 환경
- name: install packages
hosts: dev, test, prod
tasks:
- name: install mariadb, php
yum:
name: "{{ item }}"
state: present
loop:
- php
- mariadb
- name: install RPM Development tools
yum:
name: "@RPM Development tools"
state: present
when: ansible_hostname in groups['dev']
- name: update all packages only dev group
yum:
name: '*'
state: latest
when: ansible_hostname in groups['dev']
ansible-playbook packages.yml
ansible all -a 'rpm -q mariadb'
풀이과정
1. ansible-doc 확인 : ansible-doc yum
2. packages.yml 작성
3. 실행 후 설치 확인 - ansible-playbook packages.yml / ansible all -a 'rpm -q mariadb'
'Linux > RHCE' 카테고리의 다른 글
[RHCE]hosts 파일 생성/파일 내용 수정하기 (0) | 2025.05.17 |
---|---|
[RHCE]LV 생성 및 적용 (0) | 2025.04.14 |
[RHCE]System role 생성(custom) 및 실행 (1) | 2024.11.03 |
[RHCE]System role 사용(timesync,selinux,balancer,phpinfo) (2) | 2024.04.22 |
[RHCE]연습 환경 구성(EC2 - EC2간 SSH 접속) (0) | 2024.01.28 |