Vagrantマシンをプロビジョニングするために、ローカルホストに対して次のプレイブックをプレイしようとしています
---
- hosts: all
become: yes
roles:
- base
- jenkins
私はgithubから必要な役割を複製しました、そしてそれらは相対パス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/Java
とroles/geerlingguy/Java
の相対パスに配置しようとしましたが、どちらも問題を解決せず、エラーは同じままです。
Ansible-galaxyランタイムを使用せずに、すべてのロールを同期されたプロビジョニングフォルダーにローカルに保持して、プロビジョニングメソッドをできるだけ自己完結型にしたいと考えています。
現在のプロビジョニングフォルダー構造は次のとおりです
.
├── 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
/roles
フォルダー(またはシステムフォルダー)に必要なロールallをインストールまたは複製する必要があります
ansible-galaxy install -p ROLES_PATH geerlingguy.Java
この特定の問題を修正する必要があります。
ただし、 ベストプラクティス は、必要なすべての役割が必要なrequirements.yml
ファイルを使用し、ansible-galaxy
を使用して直接プレイブックにインストールする必要があります。
- name: run ansible galaxy
local_action: command ansible-galaxy install -r requirements.yml --ignore-errors
これが解決策です:役割に必要なパスはroles/geerlingguy.Java/
ではなくroles/geerlingguy/Java/
です