Basicamente, você precisa reconstruir o arquivo .jenv. Um exemplo é dado para openstack em este blog . O procedimento é bem detalhado e sei que a pergunta é antiga, mas queria arquivá-la para a posteridade.
Não vou imprimir tudo nesse blog, mas apenas uma versão rápida. Comece com uma placa de caldeira .jenv, como desta escrita, use algo como isto:
user: admin
password: test
environ-uuid: ENVIRONMENT_UUID
state-servers:
- ip-address-of-your-bootstrap-node:17070
server-hostnames:
- ip-address-of-your-bootstrap-node:17070
ca-cert: CA_CERT
bootstrap-config:
access-key: ""
admin-secret: TO_BE_DEFINED
agent-metadata-url: https://streams.canonical.com/juju/tools/
api-port: 17070
apt-http-proxy: http://squid.internal:3128
apt-https-proxy: http://squid.internal:3128
auth-mode: userpass
auth-url: http://10.230.19.65:5000/v2.0
authorized-keys:
bootstrap-addresses-delay: 10
bootstrap-retry-delay: 5
bootstrap-timeout: 600
ca-cert: SECOND_CA_CERT
ca-private-key: SECOND_CA_CERT_PRIVATE
charm-store-auth: ""
control-bucket: CONTROL_BUCKET
default-series: ""
development: false
disable-network-management: false
firewall-mode: instance
image-metadata-url: http://x.x.x.x:80/swift/v1/simplestreams/data/
image-stream: released
logging-config: <root>=WARNING;unit=DEBUG
lxc-clone-aufs: false
name: USERNAME
network: ""
password: PASSWORD
prefer-ipv6: false
proxy-ssh: true
region: region
secret-key: ""
set-numa-control-policy: false
ssl-hostname-verification: true
state-port: 37017
syslog-port: 6514
tenant-name: USERNAME
test-mode: false
tools-metadata-url: https://streams.canonical.com/juju/tools/
type: openstack
use-default-secgroup: true
use-floating-ip: false
username: USERNAME
uuid: ENVIRONMENT_UUID
Em seguida, modifique da seguinte forma:
environ-uuid e uuid podem ser obtidos a partir do mongo no nó de bootstrap da seguinte forma:
mongo --ssl -u admin -p $(grep oldpassword /var/lib/juju/agents/machine-0/agent.conf | awk -e '{print }') localhost:37017/admin
Uma vez no banco de dados, obtenha seu UUID:
juju:PRIMARY> db = db.getSiblingDB('juju')
juju:PRIMARY> db.environments.find().pretty()
{ "_id" : "cc503d03-6933-47a7-8a16-4d1094a6593e"
A entrada control-bucket e primeiro do ca-cert pode ser obtida do banco de dados:
# look for 'ca-cert' in this mess of output, copy out into your file
# with 'begin' and 'end' blocks. Look at another .jenv to get the
# right yaml format
juju:PRIMARY> db.settings.find().pretty()
O segundo ca-cert e a ca-chave privada estão no nó de inicialização em '/var/lib/juju/server.pem'
Todo o resto deve ser bastante auto-explicativo para o que você sub-in. A senha pode ser muito difícil se você a perder, mas se você fez, esse post tem uma descrição detalhada de como revertê-la do banco de dados. Veja no blog os detalhes longos e sujos, incluindo como acessar a VM no backend do openstack se você perdeu o acesso ssh, etc.