使用命令语法的Ansible复制文件

时间:2019-02-05 22:51:06

标签: ansible

分配如下:

让我们在创建任务之前创建一个文件afile.txt

创建一个剧本test.yml用于

将afile.txt从您的控制计算机复制到/ home / ubuntu /位置的主机作为afile_copy.txt并 调试上述任务以显示返回值 执行您的剧本(test.yml)并观察输出

我确实关注了

  1. 使用触摸创建afile_copy.txt
  2. 按如下方式创建剧本:

- name: copy files
  hosts: all
  tasks: 
    - name: copy file
      command: cp afile.txt /home/ubuntu/afile_copy.txt
      register:output
    - debug: var=output

当我使用命令运行剧本时 ansible-playbook -i myhosts test.yml 它失败并显示错误消息

stderr:cp:无法统计'afile.txt':没有此类文件或目录

afile.txt位于目录/ home / scrapbook / tutorial

4 个答案:

答案 0 :(得分:1)

您应该使用复制模块而不是命令模块。命令模块在远程节点上执行。

答案 1 :(得分:0)

1)首先执行临时命令进行复制:

可以使用所有-i myhosts -m复制-a“ src = afile.txt dest = / home / ubuntu /”

2)执行上述命令后,执行以下playbpook:

  • 主机:全部
    任务:

    • 状态:path = / home / ubuntu / afile_copy.txt

      注册:st

    • 名称:重命名

      命令:mv afile.txt /home/ubuntu/afile_copy.txt

      何时:不存在st.stat。

      注册:输出

    • 调试:var = output

答案 2 :(得分:0)

应使用复制模块代替命令模块

- name: copy files
  hosts: all
  tasks: 
    - name: copy file
      copy: src=afile.txt dest=/home/ubuntu/afile_copy.txt
      register:output
    - debug: var=output

答案 3 :(得分:0)

---
- name: copy files
  hosts: all
  tasks: 
    - name: copy file
      copy: 
        src: afile.txt 
        dest: /home/ubuntu/afile_copy.txt
      register: output
    - debug: var=output