autofs должен монтироваться в зависимости от сети/адреса

Я нашел способ заставить это работать без подключаемого модуля. По сути, вы можете написать скрипт, обертывающий инструмент gcloud, и указать параметр ansible_ssh_executableв этом скрипте, который вы можете определить на уровне инвентаря. Вы должны убедиться, что плагин инвентаризации gcp_computeидентифицирует хосты по имени, потому что это то, что ожидает gcloud compute ssh.

Вот скрипт:

#!/bin/sh
set -o errexit
# Wraps the gcloud utility to enable connecting to instances which are behind
# GCP Cloud IAP. Used by setting the `ansible_ssh_executable` setting for a play
# or inventory. Parses out the relevant information from Ansible's call to the
# script and injects into the right places of the gcloud utility.

arg_string="$@"

grep_hostname_regex='[a-z]*[0-9]\{2\}\(live\|test\)'
sed_hostname_regex='[a-z]*[0-9]{2}(live|test)'

target_host=$(
  echo "$arg_string\c" | grep -o "$grep_hostname_regex"
)

ssh_args=$(
  echo "$arg_string\c" | sed -E "s# ${sed_hostname_regex}.*##"
)

cmd=$(
  echo "$arg_string\c" | sed -E "s#.*${sed_hostname_regex} ##"
)

gcloud compute ssh "$target_host" \
  --command="$cmd" \
  --tunnel-through-iap \
  -- $ssh_args

Примечание:

  • Это проверено на macOS. Например, параметры sedмогут отличаться в Linux.
  • Регулярные выражения «host» должны соответствовать вашему соглашению об именах. Если у вас нет согласованного соглашения об именах, которое работало бы так же, как у меня, вам нужно найти какой-то другой способ анализа информации.
0
28.10.2020, 14:32
1 ответ

Когда вы находитесь вне офиса, просто остановите службу autofs :

sudo systemctl stop autofs

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

0
18.03.2021, 22:54

Теги

Похожие вопросы