Ansible: 운영 체제 배포 자동화하기

1. Ansible 운영 체제 배포 자동화하기

Ansible은 SSH 프로토콜을 사용하기 때문에, 모든 호스트에 대해 SSH가 활성화되어 있어야 합니다. 또한 SSH로 접속하는 데 사용할 수 있는 인증서가 필요합니다.

$ sudo apt-get update
$ sudo apt-get install openssh-server
$ sudo systemctl status ssh

2. Ansible 설치

Ansible을 설치하기 위해서는 먼저 파이썬이 설치되어 있어야 합니다. 다음 명령을 사용하여 Ansible을 설치합니다.

$ sudo apt update
$ sudo apt install software-properties-common
$ sudo apt-add-repository --yes --update ppa:ansible/ansible
$ sudo apt install ansible
$ ansible --version

3. Ansible Inventory 파일 생성

Ansible Inventory 파일은 운영 체제 배포를 수행할 호스트 목록을 지정하는 파일입니다. 각 호스트의 IP 주소, SSH 키 파일 등을 정의합니다.

[web]
192.168.1.1

[db]
192.168.1.2

4. Playbook 생성

Ansible Playbook은 작업을 실행하는 YAML 파일입니다. 각 Playbook은 한 개 이상의 작업(task)을 정의하며, 작업은 Ansible이 명령으로 실행하는 셸 명령어 또는 모듈(module)로 구성됩니다.

---
- hosts: all
  become: yes
  tasks:
  - name: install Apache web server
    apt: name=apache2 state=present

위의 예제에서는 `hosts`를 `all`로 지정했기 때문에, Inventory 파일의 모든 호스트에 대해 작업이 실행됩니다. `become` 설정을 통해 root 권한으로 실행할 수 있습니다.

5. Playbook 실행

Playbook을 실행하려면 다음 명령을 사용하여 실행할 수 있습니다.

$ ansible-playbook -i inventory playbook.yml

이 명령은 `inventory` 파일에서 호스트 목록을 가져오고 `playbook.yml` 파일에서 배포 작업을 수행합니다. 소규모 환경에서는 이 방법이 적합하지만 대규모 환경에서는 다른 방법을 사용해야 합니다. 출력 정보는 `./ansible.log` 파일에 저장됩니다.

6. 작업 확인

Playbook을 실행하면 출력에 각 호스트에 대한 작업 결과가 반환됩니다. 호스트의 운영 체제 배포를 확인하려면 다음 명령을 사용할 수 있습니다.

$ ansible -i inventory all -m shell -a 'cat /etc/os-release'

Ansible은 프로그래밍 언어와 비슷하게 여러 모듈과 기능을 제공합니다. 이러한 기능을 통해 자동화를 수행할 수 있는 다양한 옵션을 제공합니다. 대규모 인프라의 복잡한 운영을 단순화하는데 중요한 역할을 하며, Ansible을 활용한 세부적인 설정 방법을 학습 후, 성능 및 안정성 향상을 위해 직접 최적화하면 더욱 높은 효율을 달성할 수 있습니다.