Qual é a melhor maneira de usar o encanto do mysql em Juju com credenciais dinâmicas de banco de dados?

3

Estou criando um charme Juju para abranger muitos projetos de desenvolvimento do Django. Eu tenho o charme de instalar o Django, o wsgi e o Apache2. O Django usa um banco de dados, usuário e senha separados para cada projeto criado. Como faço para fornecer essas credenciais para o charme quando o charme mysql tem apenas um conjunto de credenciais de banco de dados? Eu gostaria de analisar os caminhos de python para todos os projetos Django instalados e ter um charme mysql pronto para usar com eles. Como você pode ver abaixo, o usuário terá que configurá-los manualmente e alterá-los quando um novo / diferente projeto Django for implementado na nuvem.

user='relation-get user'
password='relation-get password'
host='relation-get host'
database='relation-get database'

Minha pergunta: Eu preciso criar um script bash para auto-criar charms mysql com um nome correlacional ao projeto Django?

    
por surgemcgee 22.05.2012 / 19:17

2 respostas

2

Você pode criar um novo charme mysql com uma nova interface que pode alocar dbs dinamicamente quando solicitado e usá-lo a partir do seu charme do django, ou implantar os projetos como serviços individuais.

Efetivamente, a nova interface para o mysql teria os ganchos alocando novos dbs conforme solicitado pelo serviço de conexão, em vez de criá-los quando o novo serviço estiver relacionado / conectado ao mysql.

Outra alternativa, corrija seus projetos de django para usar prefixos de tabela, o que eu achei que eles já tinham feito (ou talvez a tabela de aplicativos prefixando o projeto).

Editar

A melhor solução pode ser apenas usar uma relação de interface admin, que lhe dá o usuário root no mysql e então você pode criar dbs adicionais conforme necessário (apontado para mim no irc by clint) para todos os projetos de django instalados.

    
por Kapil Thangavelu 22.05.2012 / 19:52
1

O encanto mysql tem várias interfaces, uma das quais é projetada especificamente para que seu aplicativo tenha privilégios de administrador em todo o servidor. Então você só faria sua relação

requires:
  db:
    interface: mysql-root

Isso garantirá a você usuários "root" com privilégios que você pode usar para criar bancos de dados / usuários / etc. Você não obterá um 'banco de dados', já que você pode criar qualquer banco de dados, então tenha isso em mente.

    
por SpamapS 22.05.2012 / 22:03

Tags