Возможно с Google Cloud Platform GCE - PullRequest
0 голосов
/ 26 июня 2018

Я использовал Ansible для создания кластера gce, следуя указаниям по адресу: https://docs.ansible.com/ansible/latest/scenario_guides/guide_gce.html

И в конце создания GCE я использовал модуль add_host Ansible для регистрации всех экземпляров в соответствующих группах.,e.g. gce_master_ip

Но тогда, когда я попытаюсь выполнить следующие задачи после задачи создания, они не будут работать:

- name: Create redis on the master
  hosts: gce_master_ip
  connection: ssh
  become: True
  gather_facts: True
  vars_files:
    - gcp_vars/secrets/auth.yml
    - gcp_vars/machines.yml
  roles:
    - { role: redis, tags: ["redis"] }

В файле auth.yml, который я уже предоставил учетной записи службыадрес электронной почты, путь к файлу учетных данных json и идентификатор проекта.Но, видимо, этого недостаточно.Я получил ошибки, как показано ниже:

UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey).\r\n", "unreachable": true}

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

Есть ли что-то, что я должен сделать, чтобы убедиться, что соответствующие учетные данныепредоставляются для установления соединения?

Во время моего поиска я думаю, что один вопрос только что кратко упомянул, что вы можете использовать команду gcloud compute ssh....Но есть ли способ, которым я мог бы указать в Ansible не использовать классический ssh и использовать один из gcloud?

1 Ответ

0 голосов
/ 26 июня 2018

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

Например, вы можете управлять своими ключами с помощью функции Вход в систему .Для использования входа в систему ОС:

  1. Включение входа в ОС для экземпляра, созданного путем установки поля метаданных «enable-oslogin» в значение «ИСТИНА» через параметр метаданных при создании экземпляра GCE с Ansible.
  2. Создайте пользователя IAM с правами role / iam.serviceAccountUser и role / compute.osLoginAdmin .
  3. Либо создайте новую, либо выберите существующую пару ключей SSH и загрузить открытый ключ для использования с ОС. Логин: gcloud compute os-login ssh-keys add --key-file [KEY_FILE_PATH] --ttl [EXPIRE_TIME] (где --ttl указывает, как долго вы хотите использовать этот открытый ключ - например, --ttl 1d истечет срок его действия через 1 день)
  4. Здесь вы сможете настроить Ansible для использования имени пользователя службы и соответствующего закрытого ключа для загруженного открытого ключа, чтобы успешно выполнять SSH в любых экземплярах GCE с поддержкой входа в ОС.Например, это можно сделать, переопределив параметры инвентаризации ansible_user и ansible_ssh_private_key_file или передав параметры --private-key и --user в ansible-playbook.
.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...