Используйте ansible для настройки экземпляра Google Compute, созданного ansible - PullRequest
3 голосов
/ 11 мая 2019

Я использую модуль gcp_compute_instance ansible для создания экземпляра, в основном воспроизводя то, что находится в этом документе . Это прекрасно работает для создания экземпляра, но после создания экземпляра я не могу настроить его для другой книги воспроизведения, поскольку экземпляр не распознает учетную запись службы как действительного пользователя ssh. Ошибка, которую я получаю, когда запускаю вторую пьесу, -

Failed to connect to the host via ssh: ansible@35.196.226.99: Permission denied (publickey).

Я не нашел ни в одном документе или руководствах по gce / ansible, как настроить ssh-доступ к вновь созданному экземпляру. Все документы вроде бы подразумевают, что он должен просто работать с тем, что вы настроили для фактического создания экземпляра, что явно не так. Я попытался дать учетной записи службы роль, которая имеет разрешение compute.instances.osAdminLogin, но есть еще две информации, которых я не знаю.

  1. Какое имя пользователя использовать для подключения. Моя вторая книга воспроизведения сейчас имеет remote_user в качестве имени учетной записи службы, но это не работает. Как я автоматически настраиваю это в ansible, чтобы я мог запускать обе книги воспроизведения без ручного вмешательства?
  2. Как связать ключ ssh с учетной записью службы? с помощью gcloud compute os-login ssh-keys add добавляет его в личный кабинет, а не в служебную учетную запись

Обратите внимание, что я могу просто войти в экземпляр ssh, используя свою личную учетную запись, которая использует функцию входа в ОС GCE и мой личный ключ ssh, но я хочу запустить вторую сборную playbook, используя служебную учетную запись с собственным ключом ssh а не мой личный аккаунт, чтобы я мог поделиться всем процессом с другими людьми или со службой CI / CD

Ответы [ 3 ]

0 голосов
/ 16 мая 2019

В соответствии с документом , который вы упоминаете, вы можете использовать либо служебную учетную запись с ролями, необходимыми для выполнения операции, либо учетную запись, связанную с машиной (GCE), которая также является служебной учетной записью .

Этого можно достичь, создав учетную запись службы. и сгенерировав для этого ключ JSON .

0 голосов
/ 28 июня 2019

скрипты в документе, который следует за операцией, не работают.Я только что потратил на это целый день, и проблема в том, что экземпляр подключается к созданной сети, а не к проекту по умолчанию.В таком случае не имеет значения ни os_login, ни ключи, ни правила брандмауэра, которые вы просто не можете подключить ни через облачную консоль, ни через SSH удаленно.В качестве первого шага для устранения этой проблемы:

  • удалите раздел, который создает сеть
  • , переписать ответный раздел, который создает экземпляр:

    - name: create a instance gcp_compute_instance: state: present name: "{{ system_name }}" machine_type: "{{ system_type }}" disks: - auto_delete: true boot: true source: "{{ disk }}" network_interfaces: - access_configs: - name: 'External NAT' nat_ip: "{{ address }}" type: 'ONE_TO_ONE_NAT' zone: "{{ zone }}" project: "{{ gcp_project }}" auth_kind: "{{ gcp_cred_kind }}" service_account_file: "{{ gcp_cred_file }}" scopes: - "{{ gcp_scopes }}" register: instance

Конечно, когда виртуальная машина работает и разрешает доступ через ssh.Вы можете вернуться и оценить, нужна ли дополнительная сеть и как ее использовать.

0 голосов
/ 12 мая 2019

Вы можете хранить ключи SSH своей учетной записи ANS внутри GCP.Если вы это сделаете, ваши ключи будут генерироваться автоматически при создании виртуальной машины.

Чтобы добавить ключи, вы можете перейти к Compute Engine> Метаданные> SSH-ключи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...