소개
Ansible Fetch 모듈 랩에 오신 것을 환영합니다! 이 랩에서는 Ansible Fetch 모듈의 사용법을 자세히 살펴보겠습니다. Fetch 모듈을 사용하면 원격 머신에서 파일을 검색하여 Ansible 이 실행되는 제어 머신으로 복사할 수 있습니다. 이는 관리 호스트에서 특정 파일 또는 아티팩트를 수집해야 할 때 유용합니다.
시작해 봅시다!
단일 파일 가져오기
이 단계에서는 Ansible Fetch 모듈을 사용하여 원격 머신에서 단일 파일을 가져오는 방법을 배우게 됩니다. 이를 통해 모듈의 기본 사용법과 구문을 이해할 수 있습니다.
먼저, /home/labex/project/fetching_a_single_file.yml 파일을 완성합니다.
텍스트 편집기에서 열고 플레이북 파일에 다음 내용을 추가합니다.
- name: Fetch Module Lab
hosts: localhost
gather_facts: false
tasks:
- name: Fetch a single file
fetch:
src: /home/labex/example/example_1.txt
dest: /home/labex/project/example_1.txt
flat: true
fetch: 원격 호스트에서 파일을 가져오는 데 사용되는 Ansible 모듈입니다.src: 가져와야 하는 원격 호스트의 파일 경로를 지정합니다. 이 예에서는/home/labex/example/example_1.txt입니다.dest: 가져온 파일을 로컬 호스트에 저장해야 하는 대상 경로를 지정합니다. 이 예에서는/home/labex/project/example_1.txt입니다.flat: 이 매개변수는 대상 경로의 동작을 제어합니다.true로 설정하면 가져온 파일이 하위 디렉터리를 생성하지 않고 대상 디렉터리에 배치됩니다. 단일 파일을 가져오고 디렉터리 구조를 단순하게 유지하려는 경우에 유용합니다.
Ansible 의 fetch 모듈은 원격 호스트에서 로컬 호스트로 파일을 가져오는 데 사용됩니다. 이 구성에서는 "example_1.txt"라는 파일을 원격 호스트의 /home/labex/example/ 디렉터리에서 가져와 로컬 호스트의 /home/labex/project/ 디렉터리에 "example_1.txt"로 저장하는 데 사용됩니다. flat: true 매개변수는 가져온 파일이 하위 디렉터리 없이 대상 디렉터리에 직접 배치되도록 합니다.
그런 다음 다음 명령으로 플레이북을 실행합니다.
ansible-playbook fetching_a_single_file.yml
예시 출력:
[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 [Fetch Module Lab] **************************************************
TASK [Fetch a single file] *****************************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
마지막으로, example_1.txt 파일이 원격 호스트에서 로컬로 가져왔는지 확인합니다.
ll /home/labex/project/example_1.txt
예시 출력:
-rw-rw-r-- 1 labex labex 23 Mar 14 10:45 /home/labex/project/example_1.txt
여러 파일 가져오기
이 단계에서는 원격 머신에서 여러 파일을 가져와 Fetch 모듈에 대한 이해를 높입니다. 이를 통해 단일 작업에서 여러 파일을 수집할 수 있습니다.
먼저, /home/labex/project/fetching_multiple_files.yml 파일을 완성합니다.
텍스트 편집기에서 열고 플레이북 파일에 다음 내용을 추가합니다.
- name: Fetch Module Lab
hosts: localhost
gather_facts: false
tasks:
- name: Fetch multiple files
loop:
- example_2.txt
- example_3.txt
fetch:
src: "/home/labex/example/{{ item }}"
dest: "/home/labex/project/{{ item }}"
flat: true
loop: 이 키워드는 항목 목록을 반복하는 데 사용됩니다.fetch: 원격 호스트에서 파일을 가져오는 데 사용되는 Ansible 모듈입니다.src: 가져올 파일의 소스 경로를 지정합니다.{{ item }}자리 표시자는 루프의 각 항목으로 대체되어/home/labex/example/디렉터리에서example_2.txt및example_3.txt를 가져옵니다.dest: 가져온 파일을 저장해야 하는 대상 경로를 지정합니다. 다시,{{ item }}자리 표시자를 사용하여 각 파일이/home/labex/project/내의 해당 디렉터리에 배치되도록 합니다.flat: 이 매개변수는 대상 경로의 동작을 제어합니다.true로 설정하면 가져온 파일이 하위 디렉터리를 생성하지 않고 대상 디렉터리에 배치됩니다. 단일 파일을 가져오고 디렉터리 구조를 단순하게 유지하려는 경우에 유용합니다.
이 구성에서는 로컬 호스트의 /home/labex/example/ 디렉터리에서 여러 파일 (example_2.txt 및 example_3.txt) 을 가져와 /home/labex/project/ 내의 해당 디렉터리에 저장하는 데 사용됩니다. loop 구문을 사용하면 항목 목록을 반복하고 목록의 각 항목에 대해 fetch 작업을 수행할 수 있습니다.
그런 다음 다음 명령으로 플레이북을 실행합니다.
ansible-playbook fetching_multiple_files.yml
예시 출력:
[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 [Fetch Module Lab] **************************************************
TASK [Fetch multiple files] ****************************************************
changed: [localhost] => (item=example_2.txt)
changed: [localhost] => (item=example_3.txt)
PLAY RECAP *********************************************************************
localhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
마지막으로, example_2.txt 및 example_3.txt가 원격 호스트에서 로컬로 가져왔는지 확인합니다.
ll /home/labex/project/ | grep example
예시 출력:
-rw-rw-r-- 1 labex labex 23 Mar 14 10:45 example_1.txt
-rw-rw-r-- 1 labex labex 23 Mar 14 11:00 example_2.txt
-rw-rw-r-- 1 labex labex 23 Mar 14 11:00 example_3.txt
Fetch 모듈에서 변수 사용하기
이 단계에서는 변수를 통합하여 Ansible Fetch 모듈의 보다 고급 사용법을 탐구합니다. 플레이북에 정의된 동적 값을 기반으로 파일을 가져옵니다.
먼저, /home/labex/project/using_variablesin_fetch_modules.yml 파일을 완성합니다.
텍스트 편집기에서 열고 플레이북 파일에 다음 내용을 추가합니다.
- name: Fetch Module Lab
hosts: localhost
gather_facts: false
vars:
file_path: "/home/labex/example/example_4.txt"
dest_path: "/home/labex/project/example_4.txt"
tasks:
- name: Fetch files using variables
fetch:
src: "{{ file_path }}"
dest: "{{ dest_path }}"
flat: true
vars: 이 섹션에서는 플레이북 내에서 사용할 변수를 정의할 수 있습니다.fetch: 원격 호스트에서 파일을 가져오는 데 사용되는 Ansible 모듈입니다.src: 가져올 파일의 소스 경로를 지정합니다.file_path변수를 사용하여 소스 파일 경로를 동적으로 제공합니다.dest: 가져온 파일을 저장해야 하는 대상 경로를 지정합니다.dest_path변수를 사용하여 대상 파일 경로를 동적으로 제공합니다.flat: 이 매개변수는 대상 경로의 동작을 제어합니다.true로 설정하면 가져온 파일이 하위 디렉터리를 생성하지 않고 대상 디렉터리에 배치됩니다. 단일 파일을 가져오고 디렉터리 구조를 단순하게 유지하려는 경우에 유용합니다.
이 구성에서는 원격 호스트의 소스 파일 경로 (file_path 변수) 에서 파일을 가져와 로컬 Ansible 제어 노드의 대상 파일 경로 (dest_path 변수) 에 저장하는 데 사용됩니다. 변수를 사용하면 파일 경로를 동적으로 지정할 수 있어 플레이북의 유연성과 재사용성이 향상됩니다.
그런 다음 다음 명령으로 플레이북을 실행합니다.
ansible-playbook using_variablesin_fetch_modules.yml
예시 출력:
[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 [Fetch Module Lab] **************************************************
TASK [Fetch files using variables] *********************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
다음으로, example_4.txt 파일이 원격 호스트에서 로컬로 가져왔는지 확인합니다.
ll /home/labex/project/example_4.txt
예시 출력:
-rw-rw-r-- 1 labex labex 23 Mar 14 11:16 /home/labex/project/example_4.txt
마지막으로, -e 옵션을 사용하여 file_path 및 dest_path를 지정해 봅니다.
ansible-playbook using_variablesin_fetch_modules.yml -e file_path="/tmp/example_5.txt" -e dest_path="/tmp/target/example_5.txt"
예시 출력:
[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 [Fetch Module Lab] **************************************************
TASK [Fetch files using variables] *********************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
example_5.txt 파일이 원격 호스트에서 로컬로 가져왔는지 확인합니다.
ll /tmp/target/example_5.txt
예시 출력:
-rw-rw-r-- 1 labex labex 23 Mar 14 11:24 /tmp/target/example_5.txt
요약
Ansible Fetch Module Lab 을 완료하신 것을 축하드립니다! 이 랩에서는 Ansible Fetch 모듈을 사용하여 원격 머신에서 파일을 검색하고 제어 머신으로 복사하는 방법을 배웠습니다. 단일 파일 가져오기부터 시작하여 여러 파일을 가져오고 동적 파일 검색을 위해 변수를 통합하는 방식으로 진행했습니다.
이 랩을 완료함으로써 관리형 호스트에서 특정 파일 또는 아티팩트를 수집하기 위해 Fetch 모듈을 활용하는 데 귀중한 경험을 얻었습니다. 자동화 기능을 더욱 향상시키기 위해 Ansible 및 해당 모듈을 계속 탐색하십시오.
자동화를 즐기세요!


