使用Ansible复制/移动文件

时间:2017-04-11 11:38:09

标签: ansible

我正在使用Ansible,我想使用我的Ansible playbook在我的Ansible角色中使用以下代码复制或移动文件。

- name: Backing up existing ~/.zshrc
  shell: if [ -f ~/.zshrc ]; then cp ~/.zshrc{,.orig}; fi
  become: true
  become_user: root
  when: installation|success

然而,当我运行它时,我收到此错误,我做错了什么?

fatal: [localhost]: FAILED! => 
{  
   "changed":true,
   "cmd":"if [ -f ~/.zshrc ]; then cp ~/.zshrc{,.orig}; fi",
   "delta":"0:00:00.002640",
   "end":"2017-04-11 12:32:35.886640",
   "failed":true,
   "rc":1,
   "start":"2017-04-11 12:32:35.884000",
   "stderr":"cp: missing destination file operand after '/root/.zshrc{,.orig}'\nTry 'cp --help' for more information.",
   "stderr_lines":[  
      "cp: missing destination file operand after '/root/.zshrc{,.orig}'",
      "Try 'cp --help' for more information."
   ],
   "stdout":"",
   "stdout_lines":[  

   ]
}

1 个答案:

答案 0 :(得分:1)

并非所有的shell都支持大括号扩展,你可以在错误消息ssh <the very same computer> which python中看到它按字面意思理解。

将以下参数添加到cp: missing destination file operand after '/root/.zshrc{,.orig}'模块中以在Bash中运行命令(当然提供Bash安装在目标上):

shell

但总的来说,这不是Ansible中最优雅的方式。令人不安的是你为什么要在Ansible剧本中完成这样的任务呢?如果要在某个其他任务(应该修改executable: /bin/bash 文件)之前进行备份,则修改文件的大多数(如果不是全部)Ansible模块提供.zshrc开关以自动保存以前的版本