Ansible get_url 모듈

AnsibleBeginner
지금 연습하기

소개

이 랩에서는 인터넷에서 파일을 다운로드하여 원격 호스트에 저장할 수 있는 Ansible get_url 모듈을 살펴봅니다. get_url 모듈은 인증, 헤더 및 체크섬 검증을 포함하여 다운로드 프로세스를 사용자 정의할 수 있는 다양한 옵션을 제공합니다.

URL 에서 파일 다운로드

이 단계에서는 Ansible get_url 모듈을 사용하여 URL 에서 파일을 다운로드하고 원격 호스트에 저장합니다.

먼저, /home/labex/project/get_url-module-playbook.yaml이라는 새 Ansible 플레이북 파일을 생성하고 텍스트 편집기에서 엽니다. 다음 내용을 플레이북 파일에 추가합니다.

- hosts: localhost
  tasks:
    - name: Download a file from a URL
      get_url:
        url: "https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz"
        dest: "/tmp/ansible-2.9.25.tar.gz"
  • hosts: 플레이북을 실행할 대상 호스트를 지정합니다. 이 경우 대상 호스트가 localhost이므로 플레이북은 로컬 호스트에서 실행됩니다.
  • tasks: 실행할 작업 목록입니다.
  • name: 작업의 목적을 식별하는 작업에 대한 설명적인 이름입니다.
  • get_url: 인터넷에서 파일을 다운로드하는 데 사용되는 Ansible 의 모듈입니다.
  • url: 파일을 다운로드할 URL 을 지정하는 매개변수입니다. 이 경우 공식 Ansible 릴리스에서 Ansible 버전 2.9.25 를 다운로드합니다.
  • dest: 다운로드한 파일을 저장할 대상 호스트의 대상 경로를 지정하는 매개변수입니다. 이 경우 파일을 /tmp/ansible-2.9.25.tar.gz에 저장합니다.

요약하면, 이 플레이북은 지정된 URL 에서 Ansible 버전 2.9.25 tarball 을 다운로드하여 로컬 호스트의 /tmp/ansible-2.9.25.tar.gz에 저장합니다.

그런 다음 다음 명령으로 플레이북을 실행합니다.

ansible-playbook get_url-module-playbook.yaml

파일이 성공적으로 다운로드되어 원격 호스트에 저장되었는지 확인하기 위해 출력을 관찰합니다. 예시 출력:

[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

PLAY [localhost] ***************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [Download a file from a URL] **********************************************
changed: [localhost]

PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

파일이 성공적으로 다운로드되어 원격 호스트에 저장되었는지 확인합니다.

ll /tmp/ansible-2.9.25.tar.gz

예시 출력:

-rw-rw-r-- 1 labex labex 14M Mar 15 13:03 /tmp/ansible-2.9.25.tar.gz

HTTP 요청 헤더 사용자 정의

이 단계에서는 Ansible get_url 모듈을 사용하여 파일 다운로드 프로세스 중에 전송되는 HTTP 요청 헤더를 사용자 정의합니다.

먼저, 모든 내용을 제거하고 다음 내용을 플레이북 파일에 추가하여 기존 플레이북 파일을 수정합니다.

- hosts: localhost
  tasks:
    - name: Download a file from a URL with custom headers
      get_url:
        url: "https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz"
        dest: "/tmp/ansible-2.9.25-1.tar.gz"
        headers:
          Custom-Header-1: Value1
          Custom-Header-2: Value2
  • get_url: 인터넷에서 파일을 다운로드하는 데 사용되는 Ansible 의 모듈입니다.
  • url: 파일을 다운로드할 URL 을 지정하는 매개변수입니다. 이 경우 공식 Ansible 릴리스에서 Ansible 버전 2.9.25 를 다운로드합니다.
  • dest: 다운로드한 파일을 저장할 대상 호스트의 대상 경로를 지정하는 매개변수입니다. 이 경우 파일을 /tmp/ansible-2.9.25-1.tar.gz에 저장합니다.
  • headers: 파일 다운로드 시 서버로 전송되는 HTTP 요청에 포함할 사용자 정의 헤더를 지정할 수 있는 선택적 매개변수입니다. 이 경우 Custom-Header-1 (값: Value1) 및 Custom-Header-2 (값: Value2) 의 두 가지 사용자 정의 헤더를 포함하도록 설정됩니다. 이러한 헤더는 파일이 호스팅된 서버에서 필요에 따라 인증, 권한 부여 또는 기타 목적으로 사용될 수 있습니다.

요약하면, 이 플레이북은 지정된 URL 에서 Ansible 버전 2.9.25 tarball 을 다운로드하고 HTTP 요청에 사용자 정의 헤더를 포함하여 로컬 호스트의 /tmp 디렉토리에 ansible-2.9.25-1.tar.gz로 저장합니다.

그런 다음 다음 명령으로 플레이북을 실행합니다.

ansible-playbook get_url-module-playbook.yaml

파일이 성공적으로 다운로드되어 원격 호스트에 저장되었는지 확인하고, 사용자 정의 헤더가 HTTP 요청에 포함되었는지 확인하기 위해 출력을 관찰합니다. 예시 출력:

[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

PLAY [localhost] **************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [Download a file from a URL with custom headers] **************************
changed: [localhost]

PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

파일이 성공적으로 다운로드되어 원격 호스트에 저장되었는지 확인합니다.

ll /tmp/ansible-2.9.25-1.tar.gz

예시 출력:

-rw-rw-r-- 1 labex labex 14M Mar 15 13:17 /tmp/ansible-2.9.25-1.tar.gz

체크섬으로 파일 무결성 검증

이 단계에서는 Ansible get_url 모듈을 사용하여 체크섬을 사용하여 다운로드한 파일의 무결성을 검증합니다.

먼저, 모든 내용을 제거하고 다음 내용을 플레이북 파일에 추가하여 기존 플레이북 파일을 수정합니다.

- hosts: localhost
  tasks:
    - name: Download a file and verify checksum
      get_url:
        url: "https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz"
        dest: "/tmp/ansible-2.9.25-2.tar.gz"
        checksum: "sha256:https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz.sha"
  • get_url: 인터넷에서 파일을 다운로드하는 데 사용되는 Ansible 의 모듈입니다.
  • url: 파일을 다운로드할 URL 을 지정하는 매개변수입니다. 이 경우 공식 Ansible 릴리스에서 Ansible 버전 2.9.25 를 다운로드합니다.
  • dest: 다운로드한 파일을 저장할 대상 호스트의 대상 경로를 지정하는 매개변수입니다. 이 경우 파일을 /tmp/ansible-2.9.25-2.tar.gz에 저장합니다.
  • checksum: 다운로드하는 파일의 체크섬과 해당 유형을 지정하는 데 사용되는 매개변수입니다. 이 경우 sha256:https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz.sha로 설정되어 Ansible 이 지정된 URL 에서 제공된 체크섬과 비교하여 다운로드한 파일의 SHA256 체크섬을 검증해야 함을 나타냅니다. 이렇게 하면 다운로드한 파일의 무결성이 보장됩니다.

요약하면, 이 플레이북은 지정된 URL 에서 Ansible 버전 2.9.25 tarball 을 다운로드하고, 로컬 호스트의 /tmp 디렉토리에 ansible-2.9.25-2.tar.gz로 저장하며, SHA256 체크섬을 지정된 URL 에서 제공된 체크섬과 비교하여 무결성을 검증합니다.

그런 다음 다음 명령으로 플레이북을 실행합니다.

ansible-playbook get_url-module-playbook.yaml

파일이 성공적으로 다운로드되어 원격 호스트에 저장되었는지 확인하고, 체크섬 검증이 통과되었는지 확인하기 위해 출력을 관찰합니다. 예시 출력:

[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

PLAY [localhost] ***************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [Download a file and verify checksum] *************************************
changed: [localhost]

PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

파일이 성공적으로 다운로드되어 원격 호스트에 저장되었는지 확인합니다.

ll /tmp/ansible-2.9.25-2.tar.gz

예시 출력:

-rw-rw-r-- 1 labex labex 14M Mar 15 13:31 /tmp/ansible-2.9.25-2.tar.gz

요약

축하합니다! Ansible get_url 모듈 랩을 성공적으로 완료했습니다. URL 에서 파일을 다운로드하고, 원격 호스트에 저장하고, HTTP 요청 헤더를 사용자 정의하고, 체크섬을 사용하여 파일 무결성을 검증하는 방법을 배웠습니다.

get_url 모듈은 파일 다운로드를 자동화하고 다운로드 프로세스의 다양한 측면을 처리할 수 있는 다재다능한 도구입니다. 이 지식을 통해 Ansible 플레이북을 향상시키고 인프라 전체에서 파일 배포를 효율적으로 관리할 수 있습니다.

Ansible 문서를 계속 탐색하고 다양한 모듈을 실험하여 자동화 기능을 확장하십시오. 즐거운 Ansible-ing!