web-dev-qa-db-ja.com

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

誰かが私を助けてくれることを願っています。ありがとうございます

4
Ha Phuoc

yumrepo.pyからどのリポジトリをダウンロードしましたか?

代わりにおそらく使用する必要があるのは、ansible-yumreporoleです。 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
1

モジュールファイルを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
1
Jacob Evans

yumrepoは ansible-extras によって提供されます。問題は、yumrepoを含むこのモジュールのバージョンがまだリリースされていない可能性が高いです。 ansibleインストールのextrasディレクトリを確認すると、これを確認できます。鉱山は:

/usr/local/lib/python2.7/site-packages/ansible/modules/extras/packaging/os/
ls -ltr 

Yumrepo.pyファイルがないことがわかります。したがって、1つの解決策は、誰かがすでにモジュールを使用する代わりに、yumrepoロールをロールディレクトリに複製することを提案していることです。このモジュールの使用を完全に設定している場合は、このyumrepo.pyモジュールをgithubレポからディレクトリ〜/ unreleased-ansible-extrasにコピーし、 http:/のようにANSIBLE_LIBRARY環境変数に追加できます。 /docs.ansible.com/ansible/developing_modules.html

例えば.

export ANSIBLE_LIBRARY=$ANSIBLE_LIBRARY:~/unreleased-ansible-extras

しかし、ロールを使用して、当面は次のリリースを待つ方が良いでしょう。

1
James E

エクストラパッケージを/usr/local/lib/python2.7/dist-packages/ansible/modules/extras/pip経由でAnsibleをインストールしましたが、yumrepoはまだ存在しません。