Необходимо найти способ создания и определения местоположения файлов ключей SSH , чтобы сборщик мог подключиться к GCE Instance :
google_compute
google_compute.pub
google_compute_known_hosts
Они идентичны тем, которые вы используете для прямого подключения к экземпляру с Cloud Shell или с Локального компьютера , но на этот раз соединение должно быть выполнено Строитель сам.
Создайте эти файлы в интерактивном режиме, как описано в Генерация ключей SSH , к идентификационному пути компоновщика (тестируйте его с помощью cd ~ && pwd
, обычно: /builder/home/.ssh
).
После установления соединения скопируйте эти файлы в Облачное хранилище Google через gsutil
. Этот шаг необходимо выполнить только один раз.
steps:
- name: 'gcr.io/cloud-builders/gsutil'
args: ['cp', '-rP', '${_BUIKDER_HOME}', 'gs://${_BUCKET_NAME}/builder/']
substitutions:
_BUCKET_NAME: <bucket_name>
_BUIKDER_HOME: <builder_home>
timeout: "60s"
Вы можете взять эти ключевые файлы в свое рабочее пространство. Если вы предпочитаете, как это, то они должны остаться остаться в хранилище.
Цель этого размещения состоит в том, что они будут использоваться для повторного подключения к экземпляру, поскольку при каждом запуске компоновщика он будет возвращаться к этапу по умолчанию, поэтому файлы больше не будут существовать.
Как только файлы ключей будут готовы, вы можете выполнить scp transfer
, как показано ниже:
steps:
- name: 'gcr.io/cloud-builders/gsutil'
args: ['cp', '-rP', 'gs://${_BUCKET_NAME}/builder/.ssh'], '_${_BUILDER_HOME}']
- name: 'gcr.io/cloud-builders/gcloud'
args: ['compute', 'scp', '--recurse', '--zone', '${_ZONE}', '${_LOCAL_PATH}', '${_USER_NAME}@${_INSTANCE_NAME}:${INSTANCE_PATH}']
substitutions:
_ZONE: <zone>
_USER_NAME: <user_name>
_LOCAL_PATH: <local_path>
_BUCKET_NAME: <bucket_name>
_BUILDER_HOME: : <builder_home>
_INSTANCE_NAME: <instance_name>
_INSTANCE_PATH: <instance_path>
timeout: "60s"
Примечание. Используйте флаг '--recurse', чтобы скопировать каталог или ни один, чтобы скопировать только файл.