向 ansible 添加额外模块

向 ansible 添加额外模块

我已经安装了 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不存在。

相关内容