Recuperar o acesso a um juju env depois de perder o arquivo jenv

3

Eu tenho um ambiente juju composto de três servidores, configurado via provedor manual. Após uma falha de hardware, perdi o arquivo .jenv para o ambiente manual. Eu ainda tenho a senha do usuário admin e posso acessar o gui nesse env, e ainda tenho acesso ssh às máquinas.

Eu tentei simplesmente criar um novo provedor manual, config.yaml, e definir a senha do usuário admin, mas isso claramente não é tudo que precisa ser feito, já que o juju ainda vê um ambiente não carregado. Existe alguma maneira de recuperar o acesso a esse ambiente?

    
por j.c.sackett 31.01.2015 / 15:07

1 resposta

0

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.

    
por dpb 05.04.2016 / 20:47

Tags