我复制了ansible" copy"模块到项目但复制的模块不起作用

时间:2016-10-13 12:51:14

标签: ansible

我开发了ansible模块。

我已将ansible的复制模块的源代码copy.py复制到项目的根目录中,作为c_copy.py(" c_copy"模块),然后执行任务使用" c_copy"模块。因此,我无法理解,但任务失败了,尽管任务使用了" copy"模块已被取代。 似乎" c_copy"模块无法在角色的文件目录中找到文件。

所以,请告诉我为什么" c_copy"模块不能很好地工作。

为了寻求帮助,我创建了github存储库。

https://github.com/suzuki-shunsuke/ansible-module-test-example

您可以查看我的源代码并重现我的问题。

重现的要求

  • Python 2.7.12(pyenv)
  • PIP
  • Vagrant(我的Vagrant版本是1.8.6)

设置

$ git clone https://github.com/suzuki-shunsuke/ansible-module-test-example
$ cd ansible-module-test-example
$ pyenv install 2.7.12
$ pip install --upgrade pip
$ pip install --upgrade virtualenv
$ virtualenv env
$ source env/bin/activate
$ cp env/lib/python2.7/site-packages/ansible/modules/core/files/copy.py c_copy.py

测试

$ vagrant up --provision-with=ansible

ansible.cfg

[defaults]
library = .

任务/ main.yml

- name: run the copy module
  copy:
    src: test.txt
    dest: /tmp/test.txt
- name: run the clone of the copy module
  c_copy:
    src: test.txt
    dest: /tmp/c_test.txt

结果

TASK [copy : run the copy module]  **********************************************
changed: [default]

TASK [copy : run the clone of the copy module]  *********************************
fatal: [default]: FAILED! => {"changed": false, "failed": true, "msg": "Source test.txt not found"}

1 个答案:

答案 0 :(得分:1)

某些模块包含动作插件 Here是复制模块的一个。

因此,当您致电copy时,Ansible会执行动作插件copy,后者又调用copy模块。 当没有动作插件时,直接调用同名模块。

如果您查看copy动作插件代码,您会注意到一堆文件处理内容,而c_copy模块会忽略这些内容。

尝试复制动作插件代码并再次测试您的设置。