Como executar o script gce.py do Ansible dentro de uma instância em execução na nuvem?

3

Meu objetivo é criar uma instância de mecanismo de computação na nuvem do Google a partir da qual eu possa executar scripts ansiosos para criar instâncias adicionais que executem contêineres por meio do GKE.

Eu já descobri várias coisas:

  • Como criar uma instância em que ansible e gce.py possam ser executados
  • Como conceder a essa instância direitos suficientes para chamar o apache-cloudlib
  • Esse ansible usa 'ansible_ssh_host' do inventário para fazer sua conexão

gce.py pode usar o endereço IP externo ou o endereço IP interno, dependendo do valor da variável de shell INVENTORY_IP_TYPE.

Nenhum deles é configurado pelo ambiente do mecanismo de computação para usar a chave SSH gerada pelo gcloud compute ssh-config, que se parece com isso:

Host compute-instance.us-central1-a.project-name
   Hostname 99.99.99.99
   IdentityFile /home/user/.ssh/google_compute_engine

* em que 99.99.99.99 é o endereço IP público

O resultado final é que eu posso ssh para compute-instance.us-central1-a.project-name, mas não para o IP público, 99.99.99.99 ou o IP privado, sem especificar o arquivo de chave privada (google_compute_engine), que não é uma opção no script gce.py.

Eu posso obter o comportamento desejado adicionando o IP interno como outra entrada para o host:

Host compute-instance.us-central1-a.project-name 10.128.0.2

.. no entanto, há uma nota no arquivo de configuração que o arquivo é gerado automaticamente (e não para fazer isso):

# The following has been auto-generated by "gcloud compute config-ssh"
# to make accessing your Google Compute Engine virtual machines easier.
#
# To remove this blob, run:
#
#   gcloud compute config-ssh --remove
...
# You should not hand-edit this section, unless you are deleting it.
#

Existe uma maneira "certa" conhecida de fazer com que o gce.py funcione a partir do google cloud, sem invadir o valor do ansible_ssh_host gerado pelo script?

    
por Cognitiaclaeves 21.06.2016 / 03:14

1 resposta

1

As especificações de configuração para as instâncias gerenciadas do Ansible são definidas em um playbook. Playbooks são arquivos em formato YAML contendo coleções de tarefas que representam o estado desejado da (s) instância (s) gerenciada (s).

Ansible também requer uma listagem de inventário de instâncias para gerenciar. você precisará gerenciar o inventário deles com um arquivo estático ou um plug-in de inventário dinâmico.

Criar recursos do Compute Engine, gerenciá-los e destruí-los pode ser executado usando o comando Ansible para aplicar os livros didáticos:

ansible-playbook -i inventory.ini gce-playbook.yml

Mais informações sobre esse assunto podem ser encontradas nesta Central de Ajuda artigo .

    
por 29.11.2016 / 01:56