vcsrepo módulo de fantoches não usa parâmetro de usuário para mercurial

1

Eu tenho um servidor que se baseia em puppet vcsrepo para atualizar o código em um repositório mercurial local com base em uma tag.

Quando eu mudo a tag requerida, usando o parâmetro vcsrepo "revision", vcsrepo deve fazer um hg pull e hg update no repositório.

Tudo isso está funcionando bem.

No entanto, criei um clone desse servidor para testar outra coisa e, agora, quando executo a atualização do fantoche, recebo um erro:

Not trusting file /var/hg/repo/.hg/hgrc from untrusted user *user*, group *group*

Isso acontece porque o fantoche está sendo executado como root, enquanto o arquivo hgrc pertence a usuário

O parâmetro do usuário em vcsrepo deve lidar com isso:

vcsrepo { '/var/hg/repo':
    ensure   => present,
    provider => hg,
    source   =>       'ssh://****',
    user => 'user',
    owner => 'user',
    group => 'group',
    revision => '1.12'
  }

ou seja

os comandos hg devem ser executados como usuário para que o requisito de Confiança no Mercurial seja satisfeito.

Mas não está funcionando. O servidor clone é um pouco para cópia em bit do original.

    
por Garreth McDaid 03.09.2015 / 15:12

1 resposta

1

Eu percebi isso.

O fantoche é executado como root. Isso significa que para vcsrepo usando mercurial, o usuário root precisa confiar no usuário que possui o arquivo .hgrc no repositório que está sendo atualizado.

Para estabelecer essa confiança, adicione

[trusted]
user = 'user'

Para /root/.hgrc

Quando o mercurial é executado, sua aparência é em $ HOME / .hgrc para relacionamentos de confiança.

No meu servidor existente, o agente fantoche estava sendo executado com o cron, então o cron teria visto o $ HOME como /root/.hgrc

No servidor clonado, eu estava executando a atualização de marionetes interativamente, tendo aberto um shell de root usando

sudo bash

No entanto, isso mantém minha variável $ HOME com o mesmo valor do meu usuário inicial, então o Mercurial não conseguiu encontrar as informações confiáveis necessárias em /root/.hgrc

Quando eu estabeleci um shell de root com

sudo -i

A variável correta $ HOME foi definida e a atualização do fantoche funcionou.

O parâmetro 'user' em vcsrepo refere-se ao usuário usado para autenticar no servidor remoto mercurial, não ao usuário que executa o processo no servidor local.

    
por 03.09.2015 / 15:55