Использование переменных в модуле 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
) на удаленном хосте и сохранения его в целевом пути (переменная dest_path
) на локальном узле управления Ansible. Использование переменных позволяет динамически задавать пути к файлам, обеспечивая гибкость и повторное использование в плейбуке.
Затем запустите плейбук с помощью следующей команды:
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
Наконец, попробуйте указать file_path
и dest_path
с помощью опции -e
:
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