소개
Ansible 은 IT 업계에서 널리 사용되는 강력한 오픈 소스 자동화 도구입니다. Ansible 이 발전함에 따라 최신 기능과 개선 사항을 활용하기 위해 설치를 최신 상태로 유지하는 것이 중요합니다. 이 튜토리얼에서는 이 랩 환경에서 사용되는 운영 체제인 Ubuntu 에서 Ansible 을 최신 버전으로 업그레이드하는 과정을 안내합니다.
Ansible 은 IT 업계에서 널리 사용되는 강력한 오픈 소스 자동화 도구입니다. Ansible 이 발전함에 따라 최신 기능과 개선 사항을 활용하기 위해 설치를 최신 상태로 유지하는 것이 중요합니다. 이 튜토리얼에서는 이 랩 환경에서 사용되는 운영 체제인 Ubuntu 에서 Ansible 을 최신 버전으로 업그레이드하는 과정을 안내합니다.
Ansible 을 업그레이드하기 전에 Ansible 이 무엇인지 이해하고 현재 설치된 버전을 확인하는 것이 도움이 됩니다.
Ansible 은 구성 관리, 애플리케이션 배포 및 작업 자동화를 단순화하는 오픈 소스 자동화 플랫폼입니다. 시스템의 원하는 상태를 설명하는 문서인 플레이북을 생성하기 위해 YAML 구문을 사용합니다.
Ansible 의 주요 이점은 다음과 같습니다.
Ansible 이 이미 설치되어 있는지, 그렇다면 어떤 버전인지 확인하는 것으로 시작해 보겠습니다. 터미널을 열고 다음을 실행합니다.
ansible --version
다음과 유사한 출력을 볼 수 있습니다.
ansible [core 2.12.0]
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/labex/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3/dist-packages/ansible
ansible collection location = /home/labex/.ansible/collections:/usr/share/ansible/collections
executable location = /usr/bin/ansible
python version = 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0]
jinja version = 3.0.3
libyaml = True
첫 번째 줄은 현재 Ansible 버전을 표시합니다. 이와 같은 출력이 보이지 않으면 Ansible 이 아직 설치되지 않았을 수 있습니다. 다음 단계에서 설치할 것이므로 괜찮습니다.
Ansible 은 major.minor.patch의 세 숫자로 의미론적 버전 관리 (semantic versioning) 를 따릅니다.
이제 Ansible 이 무엇인지 이해하고 현재 버전을 확인했으므로 다음 단계에서 Ansible 을 설치하거나 업그레이드할 준비가 되었습니다.
이 단계에서는 Ubuntu 22.04 시스템에 Ansible 을 설치하거나 업그레이드합니다. 최신 안정 버전을 얻기 위해 공식 Ansible PPA (Personal Package Archive) 를 사용합니다.
먼저 PPA 를 추가하는 데 필요한 종속성이 있는지 확인해야 합니다.
sudo apt update
sudo apt install -y software-properties-common
이 명령은 패키지 인덱스를 업데이트하고 add-apt-repository 명령을 제공하는 software-properties-common 패키지를 설치합니다.
이제 공식 Ansible PPA 저장소를 추가해 보겠습니다.
sudo add-apt-repository --yes --update ppa:ansible/ansible
저장소가 시스템에 추가되었음을 보여주는 출력을 볼 수 있습니다. --yes 플래그는 추가를 자동으로 확인하고 --update는 패키지 목록을 즉시 새로 고칩니다.
저장소를 추가했으므로 이제 최신 버전의 Ansible 을 설치할 수 있습니다.
sudo apt install -y ansible
-y 플래그는 확인을 요청하지 않고 설치를 자동으로 확인합니다.
이 명령은 Ansible 이 아직 설치되지 않은 경우 설치하거나 PPA 에서 사용할 수 있는 최신 버전으로 업그레이드합니다.
설치가 완료된 후 Ansible 이 올바르게 설치되었는지 확인하고 버전을 확인해 보겠습니다.
ansible --version
출력은 PPA 에서 사용할 수 있는 최신 버전의 Ansible 을 표시해야 합니다. 이전에 이전 버전을 설치한 경우 이제 더 새로운 버전 번호를 볼 수 있습니다.
확인 스크립트의 진행 상황을 추적하기 위해 마커 파일을 만들어 보겠습니다.
touch /tmp/ansible_version_checked
touch /tmp/ansible_installed
이제 Ubuntu 시스템에 Ansible 을 성공적으로 설치하거나 업그레이드했습니다. 다음 단계에서는 설치가 올바르게 작동하는지 확인하기 위해 몇 가지 기본 Ansible 명령을 사용하는 방법을 살펴봅니다.
이제 Ansible 이 설치되었으므로 간단한 Ansible 플레이북을 생성하고 실행하여 제대로 작동하는지 확인해 보겠습니다. 플레이북은 시스템의 원하는 상태와 Ansible 이 해당 상태에 도달하기 위해 수행해야 하는 작업을 설명하는 YAML 파일입니다.
먼저 Ansible 프로젝트용 디렉토리를 만들어 보겠습니다.
mkdir -p ~/project/ansible-test
cd ~/project/ansible-test
이제 내장 코드 편집기를 사용하여 간단한 플레이북을 만들어 보겠습니다. WebIDE 에서 왼쪽 사이드바의 "Explorer" 아이콘을 클릭하고 방금 생성한 ansible-test 디렉토리로 이동하여 test-playbook.yml이라는 새 파일을 만듭니다.
이 파일에 다음 내용을 추가합니다.
---
- name: Test Ansible Installation
hosts: localhost
connection: local
gather_facts: no
tasks:
- name: Print a message
debug:
msg: "Ansible is installed and working correctly!"
- name: Get Ansible version
command: ansible --version
register: ansible_version_output
- name: Display Ansible version
debug:
msg: "{{ ansible_version_output.stdout_lines[0] }}"
- name: Create a test file
file:
path: /tmp/ansible-test-file.txt
state: touch
mode: "0644"
이 플레이북은 다음을 수행합니다.
localhost) 을 대상으로 합니다./tmp/ansible-test-file.txt에 테스트 파일을 생성합니다.이제 플레이북을 실행하여 Ansible 이 제대로 작동하는지 확인해 보겠습니다.
cd ~/project/ansible-test
ansible-playbook test-playbook.yml
다음과 유사한 출력을 볼 수 있습니다.
PLAY [Test Ansible Installation] ***********************************************
TASK [Print a message] *********************************************************
ok: [localhost] => {
"msg": "Ansible is installed and working correctly!"
}
TASK [Get Ansible version] *****************************************************
changed: [localhost]
TASK [Display Ansible version] *************************************************
ok: [localhost] => {
"msg": "ansible [core 2.12.0]"
}
TASK [Create a test file] ******************************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=4 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
출력은 모든 작업이 성공적으로 완료되었음을 보여줍니다. 요약의 changed=2는 두 개의 작업이 시스템을 변경했음을 나타냅니다 (버전 가져오기 및 파일 생성).
테스트 파일이 생성되었는지 확인해 보겠습니다.
ls -l /tmp/ansible-test-file.txt
지정한 권한으로 파일이 나열되는 것을 볼 수 있습니다.
-rw-r--r-- 1 labex labex 0 Aug 30 12:34 /tmp/ansible-test-file.txt
확인 스크립트에 대해 이 단계를 완료된 것으로 표시해 보겠습니다.
touch /tmp/ansible_playbook_tested
축하합니다! 간단한 플레이북을 실행하여 최신 버전의 Ansible 을 성공적으로 설치하고 제대로 작동하는지 확인했습니다. 이를 통해 Ansible 설치가 완전히 작동하고 사용할 준비가 되었음을 확인할 수 있습니다.
이제 Ansible 을 설치하고 작동시켰으므로 구성과 모듈의 개념을 살펴보겠습니다.
Ansible 은 동작을 제어하기 위해 구성 파일을 사용합니다. 주요 구성 파일은 ansible.cfg이며 여러 위치에 존재할 수 있습니다. 기본 구성 파일을 살펴보겠습니다.
ls -la /etc/ansible/
기본 Ansible 디렉토리 구조를 볼 수 있습니다.
total 20
drwxr-xr-x 2 root root 4096 Aug 30 12:00 .
drwxr-xr-x 85 root root 4096 Aug 30 12:00 ..
-rw-r--r-- 1 root root 8669 Aug 30 12:00 ansible.cfg
-rw-r--r-- 1 root root 1021 Aug 30 12:00 hosts
기본 인벤토리 파일인 hosts 파일을 살펴보겠습니다.
cat /etc/ansible/hosts
인벤토리 파일에는 Ansible 이 관리할 수 있는 호스트 목록이 포함되어 있습니다. 기본적으로 주석 처리된 예제가 포함되어 있습니다.
프로젝트 디렉토리에 자체 Ansible 구성 파일을 만들어 보겠습니다. WebIDE 에서 ~/project/ansible-test 디렉토리에 다음 내용으로 ansible.cfg라는 새 파일을 만듭니다.
[defaults]
inventory = ./inventory
host_key_checking = False
stdout_callback = yaml
이제 간단한 인벤토리 파일을 만들어 보겠습니다. WebIDE 에서 ~/project/ansible-test 디렉토리에 다음 내용으로 inventory라는 새 파일을 만듭니다.
[local]
localhost ansible_connection=local
Ansible 모듈은 특정 작업을 수행하는 재사용 가능한 코드 단위입니다. 사용 가능한 몇 가지 모듈을 살펴보겠습니다.
ansible-doc -l | wc -l
이 명령은 사용 가능한 모든 모듈을 나열하고 개수를 셉니다. 일반적으로 1000 개 이상의 많은 모듈을 볼 수 있습니다.
플레이북에서 사용한 file 모듈과 같은 특정 모듈에 대한 문서를 살펴보겠습니다.
ansible-doc file
문서 뷰어를 종료하려면 q를 누를 수 있습니다.
이제 몇 가지 더 많은 Ansible 모듈을 보여주는 더 고급 플레이북을 만들어 보겠습니다. WebIDE 에서 ~/project/ansible-test 디렉토리에 다음 내용으로 modules-demo.yml이라는 새 파일을 만듭니다.
---
- name: Ansible Modules Demo
hosts: localhost
connection: local
gather_facts: yes
tasks:
- name: Display system information
debug:
msg: "System: {{ ansible_distribution }} {{ ansible_distribution_version }}"
- name: Create a directory
file:
path: /tmp/ansible-demo
state: directory
mode: "0755"
- name: Copy a file
copy:
content: "Created by Ansible modules demo playbook\n"
dest: /tmp/ansible-demo/info.txt
mode: "0644"
- name: Gather information about a file
stat:
path: /tmp/ansible-demo/info.txt
register: file_info
- name: Show file information
debug:
msg: "File created at {{ file_info.stat.mtime }}"
이 플레이북을 실행해 보겠습니다.
cd ~/project/ansible-test
ansible-playbook modules-demo.yml
플레이북은 다음을 수행합니다.
/tmp/ansible-demo에 디렉토리를 생성합니다.확인 스크립트에 대해 이 단계를 완료된 것으로 표시해 보겠습니다.
touch /tmp/ansible_modules_explored
이제 Ansible 구성, 인벤토리 파일에 대해 배우고 다양한 모듈을 탐색했습니다. 이는 Ansible 을 효과적으로 사용하기 위한 필수 구성 요소입니다.
이 랩에서는 Ubuntu 시스템에 Ansible 을 최신 버전으로 설치하고 업그레이드하는 방법을 성공적으로 배웠습니다. 몇 가지 주요 작업을 수행했습니다.
이러한 기술은 자동화 프로젝트에서 Ansible 을 사용하는 데 탄탄한 기반을 제공합니다. Ansible 설치를 최신 상태로 유지함으로써 최신 기능, 버그 수정 및 보안 업데이트를 활용할 수 있습니다.
Ansible 여정을 계속 진행하면서 역할 (roles), 컬렉션 (collections), 엔터프라이즈 관리를 위한 Ansible AWX/Tower와 같은 더 고급 주제를 탐색할 수 있습니다. 이러한 도구는 더 정교한 자동화 워크플로우를 구축하고 대규모 인프라를 관리하는 데 도움이 됩니다.