Моя цель - создать экземпляр вычислительного движка в облаке 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
Более подробную информацию по этому поводу можно найти в этом Справочном центре. статья.