嗨,我有一个任务,要求将文件从远程文件箱ftp到ansible受控机器。我使用的是基于期望的FTP,所以如果远程文件箱中不存在文件,则希望ansible失败。以下是我的代码。我正在使用寄存器变量。但是我看不到调试显示寄存器内容。
- name: copy files remote
shell: |
set timeout 1000
spawn ftp {{ buildIP }}
expect ":"
send "{{ build_user }}\n"
expect "ssword:"
send "{{ build_password }}\n"
expect "ftp>"
send "get {{ build_path }} /root/Desktop/Sanity/{{ TID }}/{{ Image_dir }}/{{ build_filename }}\n"
expect "ftp>"
send "quit\n"
set multiPrompt {[#$]}
expect -re $multiPrompt
exit 0
args:
executable: /usr/bin/expect
register: shell_output
tags: copy_source_code
- debug:
var: shell_output.stdout_lines
答案 0 :(得分:0)
我建议您使用get_url从FTP中获取文件,而不是期望的,它会在重演中显示任务是成功还是失败
播放示例:
---
- hosts: localhost
tasks:
- name: FTP Download
get_url: url=ftp://username:password@localhost/file.zip dest=/tmp
register: get_url_result
如果FTP服务器中不存在该文件,则输出将类似于以下内容:
PLAY RECAP ********************************************* ***********
localhost:ok = 1已更改= 0 =无法访问= 0
失败= 1
在任务错误详细信息中,您也可以找到“未找到”错误