問題は、相対パスを適切に設定する必要があることだと思います。Ansible は最初に、呼び出された playbooks ディレクトリに相対的な指定されたパスを適用し、次に現在の作業パス (ansible-playbook
コマンドを実行しているパス) を調べ、最後に をチェックインする/etc/ansible/roles
ため、dir 構造の代わりにor{ role: java/java_role1 }
を使用できます。さらに別のオプションは、ansible がロールを探すパスを構成することです。そのために、 Ansible docsで説明されているように、プロジェクト内に設定できます。{ role: ../../roles/java/java_role1 }
{ role: roles/java/java_role1 }
roles_path
ansible.cfg
あなたの例に基づいて:
ディレクトリツリー:
ansible/
├── hosts
│ └── dev
├── plays
│ └── java_plays
│ └── java.yml
└── roles
├── java
│ └── java_role1
│ └── tasks
│ └── main.yml
└── role1
└── tasks
└── main.yml
それをテストするために、プレイには と が含まjava_role1
れrole1
ます。
plays/java_plays/java.yml:
---
- name: deploy java stuff
hosts: java
roles:
- { role: roles/role1 }
- { role: roles/java/java_role1 }
テスト目的で、これらのロールは単純にデバッグ メッセージを出力します。
role1/tasks/main.yml:
---
- debug: msg="Inside role1"
hosts ファイルはdev
単に localhost をjava
グループに設定します。これで、プレイブックを使用できます。
fishi@zeus:~/workspace/ansible$ ansible-playbook -i hosts/dev plays/java_plays/java.yml
PLAY [deploy java stuff] *******************************************************
TASK [setup] *******************************************************************
ok: [localhost]
TASK [role1 : debug] ***********************************************
ok: [localhost] => {
"msg": "Inside role1"
}
TASK [java_role1 : debug] *************************************
ok: [localhost] => {
"msg": "Inside java_role1"
}
PLAY RECAP *********************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0
を使用するときに同じことを行う{ role: ../../roles/java/java_role1 }
と、括弧{ role: ../../roles/role1 }
内のログ出力にはTASK
、ロール名だけでなく相対パス全体が表示されます。
fishi@zeus:~/workspace/ansible$ ansible-playbook -i hosts/dev plays/java_plays/java.yml
PLAY [deploy java stuff] *******************************************************
TASK [setup] *******************************************************************
ok: [localhost]
TASK [../../roles/role1 : debug] ***********************************************
ok: [localhost] => {
"msg": "Inside role1"
}
TASK [../../roles/java/java_role1 : debug] *************************************
ok: [localhost] => {
"msg": "Inside java_role1"
}
PLAY RECAP *********************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0