O playbook Ansible falha quando as alterações do caminho do diretório .ansible / tmp

0

Essencialmente, o que está acontecendo aqui é que a conta de usuário em que o ansible está sendo executado está presente no nó de controle e no cliente de destino.

No entanto, no cliente de destino, como parte do processo de correção do servidor, uma das etapas é alterar onde o diretório pessoal dessa conta mora de / home / voltron / para / opt / home / voltron / (não, a conta não pode ser criada usando esse diretório na criação do servidor, infelizmente.)

O problema em fazer isso com ansible é que ele "perde acesso" ao seu diretório tmp de trabalho em ~ / .ansible / tmp no cliente alvo (nesse caso o servidor t-rex). Isso faz com que o manual falhe em qualquer jogada seguinte com a seguinte mensagem de erro:

fatal: [t-rex]: UNREACHABLE! => {"changed": false, "msg": "Authentication or permission failure. In some cases, you may have been able to authenticate and did not have permissions on the remote directory. Consider changing the remote temp path in ansible.cfg to a path rooted in \"/tmp\". Failed command was: ( umask 77 && mkdir -p \"' echo /home/volton/.ansible/tmp/ansible-tmp-1507231978.66-123682989430617 '\" && echo ansible-tmp-1507231978.66-123682989430617=\"' echo /home/volton/.ansible/tmp/ansible-tmp-1507231978.66-123682989430617 '\" ), exited with result 1", "unreachable": true}

Agora, tudo o que preciso fazer é, de alguma forma, informar que o diretório de trabalho no cliente alvo mudou de local durante a execução do manual, reunindo os fatos, mas isso não parece ajudar. (Pelo menos do jeito que estou fazendo)

Eu tentei chamar imediatamente o módulo de instalação no play após o que altera a localização do diretório temporário de trabalho da conta ansiosa (voltron), e "parece" ser executado, mas quando a próxima instrução "import_playbook" é lido, a falha descrita acima ocorre, uma falha é dada, e a coisa toda explode, forçando-me a potencialmente executar novamente um playbook bastante longo. Obviamente, essa execução a seguir funciona porque os fatos do ansible agora sabem que o diretório de trabalho foi alterado.

Alguém tem alguma idéia sobre como eu informaria ansible quando está trabalhando a localização do diretório temporário muda? Deixe-me saber, obrigado!

    
por Viscosity 08.03.2018 / 17:03

1 resposta

0

Por que não alterar o diretório tmp ansible? Por exemplo. em ansible.cfg definir algo como

remote_tmp = /var/tmp/notfiddledwithduringtheplay

que pode então precisar ser criado como parte de um processo de bootstrap, ou você pode arriscar usando algum diretório comum tmp , ou ...

Há também um diretório local_tmp no caso de você estar mexendo com coisas no sistema local.

    
por 08.03.2018 / 17:23

Tags