【问题标题】:Ansible playbook doesn't copy files, does not give errorAnsible playbook 不复制文件,不报错
【发布时间】:2014-08-07 03:31:25
【问题描述】:

我的 ansible playbook 仅复制我指定的文件之一。该剧本运行完成,没有任何错误。如果我在剧本之外运行相同的命令,它将复制

我的非常简单的剧本

---
- hosts: "dudes"
  vars:
    remote_user: root
tasks:
    - name: Installs logstash-forwarder rpm
      yum: name=logstash-forwarder state=present disable_gpg_check=yes

    - name: Add the certs init and etc files into place
      action: copy src=/etc/ansible/files/logstash-forwarder/logstash-forwarder.crt dest=/etc/pki/tls/certs/ owner=root group=root mode=644
      action: copy src=/etc/ansible/files/logstash-forwarder/logstash-forwarder-etc dest=/etc/logstash-forwarder owner=root group=root mode=644 force=yes
      action: copy src=/etc/ansible/files/logstash-forwarder/logstash-forwarder-etc-sysconfig dest=/etc/sysconfig/logstash-forwarder owner=root group=root mode=644 force=yes
      action: copy src=/etc/ansible/files/logstash-forwarder/logstash-forwarder-init-d dest=/etc/init.d/logstash-forwarder mode=0755

    - name: add logstash forwarder to chkconfig
      command: chkconfig --add logstash-forwarder
      notify:
            - start logstash-forwarder
handlers:
    - name: start logstash-forwarder
      service: name=logstash-forwarder enabled=yes state=started

我使用

运行剧本
ansible-playbook -l doozy logstash-forwarder-dudes.yml 

它完成没有任何错误,表示所有任务都正常

实际被复制的唯一文件是最后一个文件,它是 init.d 中的 logstash-forwarder。 chkconfig 添加似乎也可以工作

如果我在之前未复制的文件之一上使用 ansible -m(而不是 playbook)运行命令,它将复制它们而不会出错

ansible -m copy -a "src=/etc/ansible/files/logstash-forwarder/logstash-forwarder.crt dest=/etc/pki/tls/certs/ owner=root group=root mode=644" doozy

我不确定为什么文件最终没有被复制到我的剧本中的目标主机,而是通过调用 ansible 复制模块来工作?

【问题讨论】:

    标签: copy ansible ansible-playbook


    【解决方案1】:

    Ansible 任务中不能有多个操作。

    在四个任务中复制文件,它应该可以工作:

    - name: Copy logstash-forwarder.crt
      copy: src=/etc/ansible/files/logstash-forwarder/logstash-forwarder.crt dest=/etc/pki/tls/certs/ owner=root group=root mode=644
    
    - name: Copy /etc/logstash-forwarder
      copy: src=/etc/ansible/files/logstash-forwarder/logstash-forwarder-etc dest=/etc/logstash-forwarder owner=root group=root mode=644 force=yes
    
    - name: Copy /etc/sysconfig/logstash-forwarder
      copy: src=/etc/ansible/files/logstash-forwarder/logstash-forwarder-etc-sysconfig dest=/etc/sysconfig/logstash-forwarder owner=root group=root mode=644 force=yes
    
    - name: Copy /etc/init.d/logstash-forwarder
      copy: src=/etc/ansible/files/logstash-forwarder/logstash-forwarder-init-d dest=/etc/init.d/logstash-forwarder mode=0755
    

    在代码中,我还使用了Action Shorthand,并将action: module ... 符号替换为module: ...。它不会改变代码的工作方式,但它是调用模块的首选方式。

    【讨论】:

      【解决方案2】:

      根据答案 #1,我添加了“owner=root”和“group=root”(owner=root 是一个错误,所以我将其更改为“user=myusername”)。

      提交后没有错误消息。这是一个改进,但仍然没有在目标上复制文件。

      【讨论】:

      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 2015-11-17
      • 1970-01-01
      • 2022-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多