Se você quiser usar o jdk instalado através de outro charme, você precisará criar um feitiço subordinado ( link ). Um encanto subordinado opera na mesma instância (recipiente) do encanto pelo qual ele está subordinado.
O metadata.yaml ficaria assim:
name:
summary:
maintainer:
description:
tags: [misc]
subordinate: true
requires:
interface-name:
interface: interface-name
series: ['trusty']
As interfaces a seguir podem ser usadas para o Java JDK e o Hadoop:
Exemplo pequeno: Supondo que você queira o jdk de outro charme, usarei o charme kafka como exemplo e usarei o jdk que ele instala.
metadata.yaml
name: layer-jdk-example
summary: <Fill in summary here>
maintainer: maintainer
description: |
<Multi-line description here>
tags:
- misc
subordinate: true
requires:
kafka:
interface: kafka
scope: container
series: ['trusty']
layer.yaml
includes: ['layer:basic', 'interface:kafka']
reactivo / layer-jdk-example.py
import os
from charms.reactive import when, when_not, set_state
@when_not('layer-jdk-example.installed')
def install_layer_jdk_example():
os.getenv("JAVA_HOME")
# locate / download java file and compile
# do stuff ...
set_state('layer-jdk-example.installed')
Construa, implemente e adicione uma relação ao kafka. Espero que isso ajude.