
Quero usar o CircleCI para implantar meu código na instância do Compute Engine. Criei um usuário de conta de serviço e uso o comando gcloud scp abaixo:
gcloud --quiet compute scp --recurse dev/test/ [DEST_INSTANCE]:/var/www/dev/dev/test --zone=northamerica-northeast1-a --project [PROJECT_NAME]
para fazer upload de arquivos para a subpasta var e a implantação falha com o erro abaixo:
scp: /var/www/dev/dev/test: Permission denied
ERROR: (gcloud.compute.scp) [/usr/bin/scp] exited with return code [1].
Exited with code 1
Agora, quero conceder acesso à conta de serviço, mas não a vejo na lista de usuários aos quais conceder acesso quando uso o cat /etc/passwd
. Como posso conceder permissão a uma conta de serviço? As funções que atribuí a esta conta são:
Responder1
Parece que seu nome de usuário não tem permissões na VM do GCE para gravação /var/www/dev/dev/test
.
Para resolver seu problemavocê pode escolher uma das duas soluções alternativas:
Alterar permissões:
conceda acesso de gravação
/var/www/dev/dev/test
diretamente ao seu nome de usuário, por exemplo:sudo chown -R $USER /var/www/dev/dev/test
copiar arquivos com
gcloud compute scp
Diretamente a/var/www/dev/dev/test
.
Copie arquivos em duas etapas:
usar
gcloud compute scp
para transferir arquivos/diretórios onde seu usuário pode escrever, por exemplo,/tmp
ou/home/$USER
;SSH na instância da VM por meio de
gcloud compute ssh
ou via Console e copie os arquivos do local temporário usandosudo
para obter as permissões adequadas.
Observaçãoque, como esta pergunta é sobre VMs GCE, você não pode fazer SSH diretamente para uma instância de VM como root
, nem copiar arquivos diretamente como root
, pelo mesmo motivo: gcloud compute scp
usos scp
que dependem ssh
de autenticação.
Além disso, consulte a documentaçãoTransferindo arquivos para instânciasseçãoTransferir arquivos usando a ferramenta de linha de comando gcloud.
Responder2
Verifique a conta de serviço em uso. Há uma conta de serviço padrão para o GCE e criada pelo GCP. O outro é aquele que você criou.
Se estiver usando aquele que você criou, você autorizou o login da conta de serviço usando o arquivo de chave JSON?
Responder3
Ative a conta de serviço correta para a qual você concedeu os papéis na captura de tela usando o comando:
gcloud auth activate-service-account $account --key-file=the_key_file.json