소개
이 랩에서는 인터넷에서 파일을 다운로드하여 원격 호스트에 저장할 수 있는 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!


