Назад | Перейти на главную страницу

Как запустить сценарий Ansible gce.py из экземпляра, работающего в облаке?

Моя цель - создать экземпляр вычислительного движка в облаке Google, из которого я могу запускать скрипты ansible для дальнейшего создания дополнительных экземпляров, которые будут запускать контейнеры через GKE.

Я уже выяснил ряд вещей:

gce.py может использовать внешний IP-адрес или внутренний IP-адрес, в зависимости от значения переменной оболочки INVENTORY_IP_TYPE.

Ни один из них не настроен средой вычислительного механизма для использования ключа SSH, сгенерированного gcloud compute ssh-config, который выглядит следующим образом:

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

* где 99.99.99.99 - публичный IP-адрес

Конечным результатом является то, что я могу использовать ssh для compute-instance.us-central1-a.project-name, но не на общедоступный IP-адрес, 99.99.99.99 или частный IP-адрес, без указания файла закрытого ключа (google_compute_engine), который не является опция в скрипте gce.py.

Я могу добиться желаемого поведения, добавив внутренний IP-адрес в качестве другой записи для хоста:

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

.. однако в файле конфигурации есть примечание о том, что файл создается автоматически (и не для этого):

# 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.
#

Есть ли известный «правильный» способ заставить gce.py работать из облака Google, как есть, без взлома значения ansible_ssh_host, генерируемого скриптом?

Спецификации конфигурации для управляемых экземпляров Ansible определены в инструкции. Playbook - это файлы в формате YAML, содержащие коллекции задач, которые представляют желаемое состояние управляемого экземпляра (ов).

Ansible также требует инвентаризации экземпляров, которыми нужно управлять. вам нужно будет управлять их инвентарем с помощью статического файла или плагина динамического инвентаря.

Создание ресурсов Compute Engine, управление ими и их уничтожение можно выполнить с помощью команды Ansible для применения playbooks:

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

Более подробную информацию по этому поводу можно найти в этом Справочном центре. статья.