Ansible local_action 모듈 효과적으로 사용하는 방법

AnsibleBeginner
지금 연습하기

소개

널리 사용되는 IT 자동화 도구인 Ansible 은 원격 호스트 대신 제어 노드에서 작업을 실행할 수 있는 다재다능한 모듈인 "local_action"을 제공합니다. 이 자습서에서는 Ansible 기반 워크플로우를 향상시키기 위해 local_action 모듈을 효과적으로 활용하는 방법을 살펴볼 것입니다.

local_action 모듈 이해

Ansible 의 local_action 모듈은 원격 호스트 대신 제어 노드 (Ansible playbook 을 실행하는 머신) 에서 작업을 실행할 수 있는 강력한 도구입니다. 이 모듈은 제어 노드에 특정한 작업, 예를 들어 로컬 파일, 서비스 또는 API 와 상호 작용해야 할 때 특히 유용합니다.

local_action 모듈이란 무엇인가요?

local_action 모듈은 원격 호스트가 아닌 제어 노드에서 지정된 작업을 실행하는 특수한 유형의 Ansible 모듈입니다. 이는 Ansible 의 기본 동작과 다릅니다. Ansible 의 기본 동작은 작업을 원격 호스트에서 실행합니다.

local_action 모듈을 언제 사용해야 하나요?

local_action 모듈은 다음과 같은 시나리오에서 유용합니다.

  1. 로컬 파일 작업: 제어 노드의 파일 또는 디렉토리와 상호 작용해야 할 때, 예를 들어 파일 생성, 수정 또는 삭제.
  2. 로컬 서비스 관리: 제어 노드에서 실행되는 서비스 또는 데몬을 관리해야 할 때, 예를 들어 서비스 시작, 중지 또는 재시작.
  3. API 상호 작용: 제어 노드에서만 액세스할 수 있는 API 와 상호 작용해야 할 때, 예를 들어 로컬 데이터베이스 쿼리 또는 웹 서비스 호출.
  4. 로컬 환경 확인: 제어 노드에 대한 확인 또는 정보 수집이 필요할 때, 예를 들어 사용 가능한 디스크 공간 또는 네트워크 연결 확인.

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 에서 제어 노드에 특정한 작업을 수행하는 데 효과적으로 활용할 수 있습니다.

local_action 을 활용한 작업 실행

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라는 파일을 생성합니다.

로컬 API 및 서비스 호출

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 의 유연성과 기능을 향상시키고 제어 노드에서 다양한 작업을 수행할 수 있습니다.

local_action 사용의 실제 예시

이 섹션에서는 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 파일에 저장합니다.

SSL 인증서 생성

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 의 잠재력을 최대한 활용하고 인프라 관리를 간소화할 수 있습니다.