소개
널리 사용되는 IT 자동화 도구인 Ansible 은 원격 호스트 대신 제어 노드에서 작업을 실행할 수 있는 다재다능한 모듈인 "local_action"을 제공합니다. 이 자습서에서는 Ansible 기반 워크플로우를 향상시키기 위해 local_action 모듈을 효과적으로 활용하는 방법을 살펴볼 것입니다.
널리 사용되는 IT 자동화 도구인 Ansible 은 원격 호스트 대신 제어 노드에서 작업을 실행할 수 있는 다재다능한 모듈인 "local_action"을 제공합니다. 이 자습서에서는 Ansible 기반 워크플로우를 향상시키기 위해 local_action 모듈을 효과적으로 활용하는 방법을 살펴볼 것입니다.
Ansible 의 local_action 모듈은 원격 호스트 대신 제어 노드 (Ansible playbook 을 실행하는 머신) 에서 작업을 실행할 수 있는 강력한 도구입니다. 이 모듈은 제어 노드에 특정한 작업, 예를 들어 로컬 파일, 서비스 또는 API 와 상호 작용해야 할 때 특히 유용합니다.
local_action 모듈이란 무엇인가요?local_action 모듈은 원격 호스트가 아닌 제어 노드에서 지정된 작업을 실행하는 특수한 유형의 Ansible 모듈입니다. 이는 Ansible 의 기본 동작과 다릅니다. Ansible 의 기본 동작은 작업을 원격 호스트에서 실행합니다.
local_action 모듈을 언제 사용해야 하나요?local_action 모듈은 다음과 같은 시나리오에서 유용합니다.
local_action 모듈 사용 방법다른 모듈과 마찬가지로 local_action 모듈을 Ansible playbook 에 포함할 수 있습니다. 다음은 예시입니다.
- name: 로컬 파일 생성
local_action:
module: file
path: /tmp/local_file.txt
state: touch
이 예제에서는 local_action 모듈을 사용하여 제어 노드의 /tmp 디렉토리에 local_file.txt라는 파일을 생성합니다.
local_action 모듈은 제어 노드에서 더 복잡한 작업을 수행하기 위해 다른 모듈과 함께 사용할 수도 있습니다.
- name: 제어 노드의 사용 가능한 디스크 공간 확인
local_action:
module: command
args:
cmd: df -h
register: disk_space
- debug:
var: disk_space.stdout_lines
이 예제에서는 local_action 모듈을 사용하여 제어 노드에서 df -h 명령을 실행하고, 출력을 disk_space 변수에 저장한 다음 debug 모듈을 사용하여 출력합니다.
local_action 모듈의 기능과 사용 사례를 이해함으로써 Ansible playbook 에서 제어 노드에 특정한 작업을 수행하는 데 효과적으로 활용할 수 있습니다.
Ansible 의 local_action 모듈은 제어 노드에서 작업을 실행하는 유연한 방법을 제공하여 다양한 용도에 활용할 수 있도록 합니다. 이 섹션에서는 제어 노드에서 작업을 실행하기 위해 local_action 모듈을 효과적으로 사용하는 방법을 살펴봅니다.
local_action 모듈의 주요 용도 중 하나는 제어 노드에서 명령을 실행하는 것입니다. 이는 시스템 수준 작업을 수행하거나 원격 호스트에서 액세스할 수 없는 로컬 리소스와 상호 작용해야 할 때 특히 유용합니다.
- name: 로컬 명령 실행
local_action:
module: command
args:
cmd: ls -l /tmp
register: local_command_output
- debug:
var: local_command_output.stdout_lines
이 예제에서는 local_action 모듈을 사용하여 제어 노드에서 ls -l /tmp 명령을 실행하고, 출력을 local_command_output 변수에 저장한 다음 debug 모듈을 사용하여 출력합니다.
local_action 모듈은 제어 노드의 파일 및 디렉토리와 상호 작용하는 데에도 사용할 수 있습니다. 이는 파일 생성, 수정 또는 삭제와 같은 작업뿐만 아니라 디렉토리 구조를 관리하는 데 유용합니다.
- name: 로컬 디렉토리 생성
local_action:
module: file
path: /tmp/local_directory
state: directory
- name: 로컬 파일 생성
local_action:
module: file
path: /tmp/local_directory/local_file.txt
state: touch
이 예제에서는 local_action 모듈을 사용하여 제어 노드의 /tmp 디렉토리에 local_directory라는 디렉토리를 생성하고, 그 디렉토리 내에 local_file.txt라는 파일을 생성합니다.
local_action 모듈은 로컬 API 및 서비스 (예: 로컬 데이터베이스 쿼리 또는 제어 노드에서만 액세스할 수 있는 웹 서비스 호출) 와 상호 작용하는 데에도 사용할 수 있습니다.
- name: 로컬 API 호출
local_action:
module: uri
url: http://localhost:8080/api/data
register: api_response
- debug:
var: api_response.json
이 예제에서는 local_action 모듈을 사용하여 제어 노드에서 실행 중인 로컬 API 를 호출하고, 응답을 api_response 변수에 저장한 다음 debug 모듈을 사용하여 출력합니다.
local_action 모듈을 작업 실행에 활용하는 방법을 이해함으로써 Ansible playbook 의 유연성과 기능을 향상시키고 제어 노드에서 다양한 작업을 수행할 수 있습니다.
이 섹션에서는 Ansible playbook 에서 local_action 모듈을 사용하는 몇 가지 실제 예시를 살펴봅니다. 이러한 예시는 다양한 사용 사례를 다루고 이 강력한 모듈의 다재성을 보여줍니다.
local_action 모듈의 일반적인 사용 사례 중 하나는 제어 노드의 파일 및 디렉토리 백업입니다. 변경 사항을 수행하기 전에 로컬 구성 또는 데이터를 보존해야 할 때 특히 유용합니다.
- name: 로컬 구성 파일 백업
local_action:
module: archive
path:
- /etc/nginx/conf.d
- /etc/mysql/my.cnf
dest: /tmp/local_backup.zip
format: zip
이 예제에서는 local_action 모듈을 사용하여 제어 노드의 /etc/nginx/conf.d 및 /etc/mysql/my.cnf 디렉토리의 ZIP 아카이브를 생성하고, 아카이브를 /tmp/local_backup.zip 파일에 저장합니다.
local_action 모듈의 또 다른 실용적인 사용 사례는 제어 노드에서 SSL 인증서를 생성하는 것입니다. 테스트 또는 개발 목적으로 자체 서명된 인증서를 생성해야 할 때 유용합니다.
- name: 자체 서명된 SSL 인증서 생성
local_action:
module: openssl_certificate
path: /etc/ssl/certs/local_cert.pem
privatekey_path: /etc/ssl/private/local_key.pem
state: present
organization_name: LabEx
country_name: US
email_address: admin@example.com
이 예제에서는 local_action 모듈을 사용하여 제어 노드에서 자체 서명된 SSL 인증서 및 개인 키를 생성하고, 인증서는 /etc/ssl/certs/local_cert.pem 파일에, 개인 키는 /etc/ssl/private/local_key.pem 파일에 저장합니다.
local_action 모듈은 제어 노드의 로컬 데이터베이스와 상호 작용하는 데에도 사용할 수 있습니다. SQL 쿼리 실행 또는 데이터베이스 백업과 같은 작업에 유용합니다.
- name: 로컬 MySQL 데이터베이스 쿼리
local_action:
module: mysql_query
login_user: root
login_password: password
query: SELECT * FROM users
register: database_query
- debug:
var: database_query.results
이 예제에서는 local_action 모듈을 사용하여 제어 노드의 로컬 MySQL 데이터베이스에 대한 SQL 쿼리를 실행하고, 결과를 database_query 변수에 저장한 다음 debug 모듈을 사용하여 출력합니다.
이러한 실제 예시를 통해 Ansible playbook 에서 local_action 모듈을 효과적으로 사용하여 제어 노드에서 다양한 작업을 수행하는 방법을 더 잘 이해할 수 있습니다.
이 가이드를 마치면 Ansible 의 local_action 모듈에 대한 포괄적인 이해를 얻게 될 것입니다. 이에는 모듈의 이점, 실제 사용 사례, 자동화 프로세스에 원활하게 통합하기 위한 최선의 방법이 포함됩니다. 이 튜토리얼에서 제공하는 통찰력을 통해 Ansible 의 잠재력을 최대한 활용하고 인프라 관리를 간소화할 수 있습니다.