ansible - 在 Ansible Playbook 中获取复制任务错误
问题描述
我正在尝试将远程服务器上的文件复制到相同的文件名,并附加“.old” - 所以 file.crt 将有一个名为 file.crt.old 的副本。
我有一本包含以下陈述的剧本:
---
- name: Copy current certificate files to 'old' for the PostgreSQL servers
hosts: all
become: true
become_user: postgres
tasks:
- name: Copy file
ansible.builtin.copy:
remote_src: yes
src: /<abs path>/Config/file.crt
dest: /<abs path>/Config/file/server.crt.old
register: query1
args:
warn: no
- debug: msg="{{ query1.stdout_lines }}"
我使用以下命令执行剧本:
ansible-playbook pg_ckCerts3.yml --ask-become-pass --limit <server name> > test.txt
我不断收到以下错误:
TASK [Copy file] *****************************************************************************************************
fatal: [server name]: FAILED! => {"changed": false, "msg": "Unsupported parameters for (copy) module: warn Supported parameters include: _original_basename, attributes, backup, checksum, content, delimiter, dest, directory_mode, follow, force, group, local_follow, mode, owner, regexp, remote_src, selevel, serole, setype, seuser, src, unsafe_writes, validate"}
谁能告诉我我的剧本有什么问题?我已经尝试了十几种不同的方式......在文件名周围加上引号,没有,remote_src 是或真,复制和 ansible.builtin.copy,remote_src 首先或最后指定。无论如何,我总是遇到同样的错误。
一旦我让它工作,我实际上想要复制多个文件 - file.crt 和 file.key 文件然后列出要验证的文件,所以如果有人也可以提供帮助,那也将是非常重要的赞赏。
我通常使用以下代码列出文件,但我似乎一次只能在剧本中执行一项任务:
...
tasks:
- name: Get hostname, list current certificate files
shell: |
hostname
echo -e "\nCurrent cert files:"
ls -l --time-style=long-iso /var/lib/pgsql/*/*/<filename>*
register: query1
args:
warn: no
- debug: msg="{{ query1.stdout_lines }}"
谢谢,卡琳
解决方案
Ansible 告诉您这warn
不是copy
模块支持的参数。
请尝试删除它:
---
- name: Copy current certificate files to 'old' for the PostgreSQL servers
hosts: all
become: true
become_user: postgres
tasks:
- name: Copy file
ansible.builtin.copy:
remote_src: yes
src: /<abs path>/Config/file.crt
dest: /<abs path>/Config/file/server.crt.old