nixops: как использовать локальный ключ ssh при развертывании на машине с существующими nixos (targetEnv отсутствует)?

У меня есть машина с nixos (предоставлена ​​с использованием terraform, config), я хочу подключиться к нему с помощью deployment.targetHost = ipAddress< /а> и deployment.targetEnv = "none"

Но я не могу настроить nixops на использование ключа /secrets/stage_ssh_key ssh

Это не работает (на самом деле это не задокументировано, я нашел его здесь https://github.com/NixOS/nixops/blob/d4e5b779def1fc9e7cf124930d0148e6bd670051/nixops/backends/none.py#L33-L35 )

{
  stage =
    { pkgs, ... }:
    {
      deployment.targetHost = (import ./nixos-generated/stage.nix).terraform.ip;
      deployment.targetEnv = "none";

      deployment.none.sshPrivateKey        = builtins.readFile ./secrets/stage_ssh_key;
      deployment.none.sshPublicKey         = builtins.readFile ./secrets/stage_ssh_key.pub;
      deployment.none.sshPublicKeyDeployed = true;

      environment.systemPackages = with pkgs; [
        file
      ];
    };
}

nixops ssh stage приводит к запросу пароля, ожидается - вход без пароля

nixops ssh stage -i ./secrets/stage_ssh_key работает как положено, пароль не спрашивает

Как воспроизвести:

  • скачать репозиторий
  • rm -rf secrets/*
  • добавить ключи aws в secrets/aws.nix

    { EC2_ACCESS_KEY="XXXX"; EC2_SECRET_KEY="XXXX"; }

  • nix-shell

  • make generate_stage_ssh_key
  • terraform apply
  • make nixops_create
  • nixops deploy спрашивает пароль

person srghma    schedule 05.08.2018    source источник
comment
Я больше не использую nixops + terraform, вместо этого просто nixos switch + terraform. Например. это мой shellHook gist.github.com/srghma/aafd28305441e5e643be2855ef17e373   -  person srghma    schedule 25.11.2019