4

私はgithubのから必要な役割をクローニングしAnsible、役割が見つからないエラー

--- 
- hosts: all 
    become: yes 
    roles: 
    - base 
    - jenkins 

提供ベイグラントマシンにローカルホストに対して、次の脚本を再生しようと、彼らは、次のコマンドを実行すると、相対パスroles/{role name}

に常駐:ansible-playbook -i "localhost," -c local playbook.yml出力するエラー:

==> default: ERROR! the role 'geerlingguy.java' was not found in /home/vagrant/provisioning/roles:/home/vagrant/provisioning:/etc/ansible/roles:/home/vagrant/provisioning/roles 
==> default: 
==> default: The error appears to have been in '/home/vagrant/provisioning/roles/jenkins/meta/main.yml': line 3, column 5, but may 
==> default: be elsewhere in the file depending on the exact syntax problem. 
==> default: 
==> default: The offending line appears to be: 
==> default: 
==> default: dependencies: 
==> default: - geerlingguy.java 
==> default: ^here 

私はgithubのから欠落している依存関係をクローン化し、そしてそれを常駐してみました相対パスはroles/javaroles/geerlingguy/javaですが、どちらも問題を解決しておらず、エラーも同じです。

同期型プロビジョニング・フォルダにすべてのロールをローカルに保持し、プロビジョニング・メソッドを可能な限り自己完結型にするために、ギャラクシー・ランタイムを使用しないでください。ここで

それが今

. 
├── playbook.yml 
└── roles 
    ├── base 
    │   └── tasks 
    │    └── main.yml 
    ├── java 
    │   ├── defaults 
    │   │   └── main.yml 
    │   ├── meta 
    │   │   └── main.yml 
    │   ├── README.md 
    │   ├── tasks 
    │   │   ├── main.yml 
    │   │   ├── setup-Debian.yml 
    │   │   ├── setup-FreeBSD.yml 
    │   │   └── setup-RedHat.yml 
    │   ├── templates 
    │   │   └── java_home.sh.j2 
    │   ├── tests 
    │   │   └── test.yml 
    │   └── vars 
    │    ├── Debian.yml 
    │    ├── Fedora.yml 
    │    ├── FreeBSD.yml 
    │    ├── RedHat.yml 
    │    ├── Ubuntu-12.04.yml 
    │    ├── Ubuntu-14.04.yml 
    │    └── Ubuntu-16.04.yml 
    └── jenkins 
     ├── defaults 
     │   └── main.yml 
     ├── handlers 
     │   └── main.yml 
     ├── meta 
     │   └── main.yml 
     ├── README.md 
     ├── tasks 
     │   ├── main.yml 
     │   ├── plugins.yml 
     │   ├── settings.yml 
     │   ├── setup-Debian.yml 
     │   └── setup-RedHat.yml 
     ├── templates 
     │   └── basic-security.groovy 
     ├── tests 
     │   ├── requirements.yml 
     │   ├── test-http-port.yml 
     │   ├── test-jenkins-version.yml 
     │   ├── test-plugins-with-pinning.yml 
     │   ├── test-plugins.yml 
     │   ├── test-prefix.yml 
     │   └── test.yml 
     └── vars 
      ├── Debian.yml 
      └── RedHat.yml 

答えて

1

あるとしてあなたは/rolesフォルダ(またはシステムフォルダ内)にあるすべての必要なロールをインストールまたはクローンなければならない規定のフォルダ構造である

ansible-galaxy install -p ROLES_PATH geerlingguy.java 

必要がありますこの特定の問題を修正してください。

ただし、best practiceは、必要な役割がすべて必要な場合はrequirements.ymlファイルを使用し、ansible-galaxyで直接プレイブックにインストールする必要があります。ここで

- name: run ansible galaxy 
    local_action: command ansible-galaxy install -r requirements.yml --ignore-errors 
+0

は、私が最初の例を試してみましたが、それが問題を解決しませんでした。私は要件ファイルが必要であるというエラーを受けましたので、私はそれをanacle-galaxyのドキュメントのように試しました:sudo ansible-galaxy install -p $ ROLES_PATH -r requirements.txt、requirements.txtの内容はgeerlingguy.javaです。次のエラーが発生しました:requirements.txtが正常にインストールされていません:ファイル==>デフォルト:ダウンロードしたものがtar.gzではありません –

+0

requirements.ymlと同じエラーが確認されました –

+0

[このエラーが発生しました] //github.com/ansible/ansible/blob/6787fc70a643fb6e2bdd2c6a6202072d21db72ef/lib/ansible/galaxy/role.py#L242)。もしtarファイルが何らかの形で不正であれば。 私はdevディレクトリに問題なしで 'sudo ansible-galaxy install -p my-folder -r requirements.txt'(コンテンツとして' geerlingguy.java'のみを使用)を実行しました。なぜsudoをやるの? –

1

がソリューションです:役割のために必要なパスがroles/geerlingguy.java/ある、ないroles/geerlingguy/java/

関連する問題