Ansible Fetch 모듈

AnsibleBeginner
지금 연습하기

소개

Ansible Fetch 모듈 랩에 오신 것을 환영합니다! 이 랩에서는 Ansible Fetch 모듈의 사용법을 자세히 살펴보겠습니다. Fetch 모듈을 사용하면 원격 머신에서 파일을 검색하여 Ansible 이 실행되는 제어 머신으로 복사할 수 있습니다. 이는 관리 호스트에서 특정 파일 또는 아티팩트를 수집해야 할 때 유용합니다.

시작해 봅시다!

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 99%입니다.학습자들로부터 98%의 긍정적인 리뷰율을 받았습니다.

단일 파일 가져오기

이 단계에서는 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.txtexample_3.txt를 가져옵니다.
  • dest: 가져온 파일을 저장해야 하는 대상 경로를 지정합니다. 다시, {{ item }} 자리 표시자를 사용하여 각 파일이 /home/labex/project/ 내의 해당 디렉터리에 배치되도록 합니다.
  • flat: 이 매개변수는 대상 경로의 동작을 제어합니다. true로 설정하면 가져온 파일이 하위 디렉터리를 생성하지 않고 대상 디렉터리에 배치됩니다. 단일 파일을 가져오고 디렉터리 구조를 단순하게 유지하려는 경우에 유용합니다.

이 구성에서는 로컬 호스트의 /home/labex/example/ 디렉터리에서 여러 파일 (example_2.txtexample_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.txtexample_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_pathdest_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 및 해당 모듈을 계속 탐색하십시오.

자동화를 즐기세요!