소개
Ansible 은 서버 및 애플리케이션을 손쉽게 관리할 수 있는 강력한 인프라 자동화 도구입니다. 이 튜토리얼에서는 Ansible 인벤토리에서 호스트의 연결 방법을 지정하는 방법을 살펴보며, 인프라의 효율적이고 안정적인 원격 관리를 보장합니다.
Ansible 은 서버 및 애플리케이션을 손쉽게 관리할 수 있는 강력한 인프라 자동화 도구입니다. 이 튜토리얼에서는 Ansible 인벤토리에서 호스트의 연결 방법을 지정하는 방법을 살펴보며, 인프라의 효율적이고 안정적인 원격 관리를 보장합니다.
Ansible 은 여러 호스트를 동시에 관리하고 구성할 수 있는 강력한 자동화 도구입니다. Ansible 의 핵심은 관리하고자 하는 호스트를 정의하는 파일 또는 파일 집합인 인벤토리입니다.
Ansible 인벤토리는 INI, YAML 또는 JSON 과 같은 다양한 형식으로 정의될 수 있습니다. 가장 일반적인 형식은 호스트와 관련 변수를 간단한 구문으로 정의하는 INI 형식입니다.
다음은 INI 형식의 Ansible 인벤토리 파일 예시입니다.
[webservers]
web1.example.com
web2.example.com
[databases]
db1.example.com
db2.example.com
[all:vars]
ansible_user=ubuntu
ansible_ssh_private_key_file=/path/to/your/ssh/key.pem
이 예제에서 인벤토리는 webservers와 databases 두 개의 그룹을 정의합니다. 각 그룹에는 두 개의 호스트가 포함되어 있습니다. [all:vars] 섹션은 SSH 사용자 및 개인 키 파일과 같이 모든 호스트에 적용되는 전역 변수를 정의합니다.
Ansible 은 SSH, WinRM 및 로컬과 같은 다양한 연결 방법을 지원하여 인벤토리의 호스트와 상호 작용합니다. 연결 방법은 인벤토리와 호스트의 구성에 의해 결정됩니다.
연결 방법에 대해 자세히 이해하려면 다음 섹션으로 이동하세요.
Ansible 은 인벤토리 내 호스트와 상호 작용하기 위한 다양한 연결 방법을 지원합니다. 가장 일반적인 연결 방법은 다음과 같습니다.
SSH (기본값): Ansible 은 SSH 프로토콜을 사용하여 호스트에 연결합니다. 이는 기본 연결 방법이며 대부분의 Linux/Unix 기반 시스템에 적합합니다.
WinRM: Ansible 은 Windows 원격 관리 (WinRM) 프로토콜을 사용하여 Windows 호스트에 연결할 수 있습니다.
로컬: Ansible 은 원격 호스트에 연결하지 않고 제어 노드 (Ansible 이 설치된 컴퓨터) 에서 작업을 실행할 수 있습니다.
Ansible 인벤토리에서 호스트의 연결 방법을 구성하려면 ansible_connection 변수를 사용할 수 있습니다. 다음은 예시입니다.
[webservers]
web1.example.com ansible_connection=ssh
web2.example.com ansible_connection=winrm
[databases]
db1.example.com ansible_connection=local
이 예제에서 webservers 그룹은 SSH 연결 방법을 사용하고, web2.example.com 호스트는 WinRM 연결 방법을 사용하며, databases 그룹은 로컬 연결 방법을 사용합니다.
인벤토리의 모든 호스트에 대한 기본 연결 방법을 설정하려면 [all:vars] 섹션에 ansible_connection 변수를 정의할 수 있습니다.
[all:vars]
ansible_connection=ssh
이렇게 하면 특정 호스트에서 재정의되지 않는 한 인벤토리의 모든 호스트에 SSH 연결 방법이 적용됩니다.
또한 SSH 사용자, 개인 키 파일 및 포트와 같은 다른 연결 관련 변수를 구성할 수 있습니다. 다음은 예시입니다.
[webservers]
web1.example.com ansible_user=ubuntu ansible_ssh_private_key_file=/path/to/your/ssh/key.pem
web2.example.com ansible_user=administrator ansible_password=MyPassword123
[databases]
db1.example.com ansible_connection=local
이 예제에서 webservers 그룹은 특정 사용자 및 개인 키 파일을 사용하는 SSH 연결 방법을 사용하고, web2.example.com 호스트는 사용자 이름과 암호를 사용하는 WinRM 연결 방법을 사용합니다.
Ansible 인벤토리에서 연결 방법을 구성하는 방법을 이해함으로써 관리하려는 호스트와 효과적으로 통신할 수 있도록 Ansible 을 설정할 수 있습니다.
이제 Ansible 에서 사용 가능한 다양한 연결 방법을 이해했으니, 실제 환경에서 이를 적용하는 방법을 살펴보겠습니다.
SSH 연결 방법은 Ansible 에서 가장 일반적이고 널리 사용되는 방법입니다. SSH 연결 방법을 사용하려면 Ansible 이 설치된 제어 노드가 대상 호스트에 연결하기 위한 필요한 SSH 키 또는 자격 증명을 가지고 있어야 합니다.
다음은 Ansible playbook 에서 SSH 연결 방법을 사용하는 예시입니다.
- hosts: webservers
tasks:
- name: 시스템 정보 수집
ansible.builtin.setup:
이 예제에서 hosts 지시문은 webservers 그룹을 지정하고, tasks 섹션에는 setup 모듈을 사용하여 시스템 정보를 수집하는 단일 작업이 포함되어 있습니다.
WinRM 연결 방법을 사용하려면 대상 Windows 호스트가 WinRM 연결을 허용하도록 구성되어 있어야 합니다. 일반적으로 WinRM 서비스를 활성화하고 필요한 방화벽 규칙을 구성해야 합니다.
다음은 Ansible playbook 에서 WinRM 연결 방법을 사용하는 예시입니다.
- hosts: windows
tasks:
- name: Windows 명령 실행
ansible.windows.win_command:
cmd: ipconfig
이 예제에서 hosts 지시문은 windows 그룹을 지정하고, tasks 섹션에는 대상 Windows 호스트에서 ipconfig 명령을 실행하는 단일 작업이 포함되어 있습니다.
로컬 연결 방법은 원격 호스트에 연결하지 않고 제어 노드에서 작업을 실행하려는 경우 유용합니다. 이는 원격 실행이 필요하지 않은 작업 (예: 로컬 파일 관리 또는 시스템 구성) 에 특히 유용합니다.
다음은 Ansible playbook 에서 로컬 연결 방법을 사용하는 예시입니다.
- hosts: localhost
connection: local
tasks:
- name: 로컬 디렉토리 생성
ansible.builtin.file:
path: /tmp/local_dir
state: directory
이 예제에서 hosts 지시문은 localhost 그룹을 지정하고, connection 지시문은 연결 방법을 명시적으로 local로 설정합니다. tasks 섹션에는 제어 노드에 로컬 디렉토리를 만드는 단일 작업이 포함되어 있습니다.
Ansible playbook 에서 다양한 연결 방법을 이해하고 적용함으로써 Ansible 이 인프라의 호스트와 효과적으로 통신하고 관리할 수 있도록 보장할 수 있습니다.
이 튜토리얼을 마치면 Ansible 인벤토리 내 호스트의 연결 방법을 구성하는 방법에 대한 포괄적인 이해를 얻게 됩니다. 이 지식은 특정 인프라 요구 사항에 맞춰 Ansible 배포를 맞춤화하고 원활한 원격 관리 및 자동화를 가능하게 합니다.