我已经安装了 ansible 来自动部署我的系统,我需要一些额外的模块来使用它。我在 ansible github 上下载了模块 yumrepo.py 并将其添加到我的库目录中。但是当我运行时,它显示错误ERROR: yumrepo is not a legal parameter of an Ansible Play
。这是我在文件 ansible.cfg 中的配置。
inventory = /etc/ansible/hosts
library = /etc/ansible/module/
remote_tmp = $HOME/.ansible/tmp
和我的剧本
---
- name: Add multiple repositories into the same file (1/2)
yumrepo:
name: epel
description: EPEL YUM repo
file: external_repos
baseurl: http://download.fedoraproject.org/pub/epel/$releasever/$basearch/
gpgcheck: no
希望有人能帮助我。非常感谢
答案1
您从哪个存储库下载yumrepo.py
?
你可能应该使用的是ansible-yumrepo
角色:https://github.com/picotrading/ansible-yumrepo(请参阅此处更多关于角色的信息)
您可以将其安装在roles
与您的剧本位于同一目录中的目录中。当我从 github 克隆存储库时,我发现我需要将角色从 重命名ansible-yumrepo
为本地。yumrepo
$ git clone https://github.com/picotrading/ansible-yumrepo.git roles/yumrepo
然后可以使用以下剧本作为初始点对于您想要做的事情:
- hosts: all
roles:
- role: yumrepo
yumrepo_repos:
myrepo1:
name: epel
description: EPEL YUM repo
file: external_repos
baseurl: http://download.fedoraproject.org/pub/epel/$releasever/$basearch/
gpgcheck: no
答案2
yumrepo 由以下机构提供ansible-extras问题很可能是这个模块包含 yumrepo 的版本尚未发布。如果你检查 ansible 安装中的 extras 目录,你可以验证这一点。我的位于:
/usr/local/lib/python2.7/site-packages/ansible/modules/extras/packaging/os/
ls -ltr
您将看到没有 yumrepo.py 文件。因此,正如有人建议的那样,一种解决方案是将 yumrepo 角色克隆到您的角色目录中,而不是尝试使用该模块。如果您绝对想使用此模块,您可以将此 yumrepo.py 模块从 github repo 复制到目录 ~/unreleased-ansible-extras 中,然后按照以下说明将其添加到您的 ANSIBLE_LIBRARY 环境变量中http://docs.ansible.com/ansible/developing_modules.html
例如
export ANSIBLE_LIBRARY=$ANSIBLE_LIBRARY:~/unreleased-ansible-extras
但您最好暂时使用该角色并等待下一个版本。
答案3
将模块文件放入playbooks/library
其中会自动拾取它,不要更改默认的 ANSIBLE_LIBRARY 变量,只需使用 yum/pip 安装的内容即可。另外,不要将它们放在子目录中。
你将会得到类似...的东西
hosts/hostfile
hosts/group_vars/all/custom_vars.yml
playbooks/library/plugin.py
playbooks/library/plugin2.py
playbooks/roles
playbooks/my_playbook.yml
答案4
我找到了我的额外软件包,
/usr/local/lib/python2.7/dist-packages/ansible/modules/extras/
并且我已经通过安装了 Ansible pip
,但仍然yumrepo
不存在。