我开发了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
您可以查看我的源代码并重现我的问题。
$ 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
[defaults]
library = .
- 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"}
答案 0 :(得分:1)
某些模块包含动作插件 Here是复制模块的一个。
因此,当您致电copy
时,Ansible会执行动作插件copy
,后者又调用copy
模块。
当没有动作插件时,直接调用同名模块。
如果您查看copy
动作插件代码,您会注意到一堆文件处理内容,而c_copy
模块会忽略这些内容。
尝试复制动作插件代码并再次测试您的设置。