Я установил ftp-сервер, используя ansible, и проверил, работает ли он вручную, выполнив lftp с моего локального хоста.
Я загрузил файл с помощью put и смог найти файл на ftp-сервере, когда я сделал ls.
Я написал пьесу для загрузки файла на FTP-сервер, и она всегда возвращалась успешно. Однако я не могу найти файл, который я загрузил, используя мою игру. Затем я отредактировал свою игру для отображения регистра результатов и нашел предупреждение. См. Ниже
---
- name: test ftp upload
hosts: localhost
tasks:
- name: install lftp
yum:
name: lftp
- name: upload file
shell: >
lftp ansible1.example.com<<EOF
cd pub
put /etc/hosts
bye
EOF
register: result
- name: display result
debug:
var: result
Ниже приведен вывод, полученный после запуска воспроизведения
PLAY [test ftp upload] ****************************************************************************************************************************************************************
TASK [Gathering Facts] ****************************************************************************************************************************************************************
ok: [localhost]
TASK [install lftp] *******************************************************************************************************************************************************************
ok: [localhost]
TASK [upload file] ********************************************************************************************************************************************************************
changed: [localhost]
TASK [display result] *****************************************************************************************************************************************************************
ok: [localhost] => {
"result": {
"changed": true,
"cmd": "lftp ansible1.example.com<<EOF cd pub put /etc/hosts bye EOF\n",
"delta": "0:00:00.010150",
"end": "2020-04-04 09:15:26.305530",
"failed": false,
"rc": 0,
"start": "2020-04-04 09:15:26.295380",
"stderr": "/bin/sh: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')",
"stderr_lines": [
"/bin/sh: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')"
],
"stdout": "",
"stdout_lines": []
}
}
PLAY RECAP ****************************************************************************************************************************************************************************
localhost : ok=4 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Я не могу понять предупреждение в части EOF, и если это является причиной загрузки файла не происходит. Потому что я использую приведенный ниже скрипт оболочки (который в основном такой же, как и в игре) для загрузки файла, и он отлично работает.
lftp ansible1.example.com<<EOF
cd pub
put /etc/hosts
bye
EOF