Existe uma variável ansible que tem o caminho absoluto para o atual ansible-playbook que está sendo executado?
algum contexto:
Estou executando / criando um script ansible localhost
para configurar um docker mysql e querendo montar o volume de dados relativo ao script ansible.
Por exemplo, digamos que fiz check-out de um repositório ~/branch1/
e, em seguida, executei e ansible-playbook dev.yml
pensei que deveria salvar o volume ~/branch1/.docker_volume/
. Se eu o executei a partir de ~/branch2
então, ele deve configurar o volume para ~/branch2/.docker_volume/
.
Respostas:
Você pode usar
playbook_dir
variável.fonte
playbook_dir
variável está documentada. Você poderia me indicar a documentação, por favor. OU, você poderia explicar como conheceu essa variável?Não parece haver uma variável que contém exatamente o que você deseja.
No entanto, citando os documentos :
Dependendo da sua configuração, esses ou a
$ pwd
solução com base podem ser suficientes.fonte
Infelizmente não existe. Na verdade, o caminho absoluto é um pouco sem sentido (e potencialmente confuso) no contexto de como o Ansible é executado. Em suma, quando você invoca um manual, para cada tarefa, o Ansible copia fisicamente o módulo associado à tarefa para um diretório temporário na máquina de destino e, em seguida, invoca o módulo com os parâmetros necessários. Portanto, o caminho absoluto na máquina de destino é apenas um diretório temporário que contém apenas alguns arquivos temporários dentro dele e nem mesmo inclui o manual completo. Além disso, saber o caminho completo de um arquivo no servidor Ansible é praticamente inútil em uma máquina de destino, a menos que você esteja replicando toda a árvore de diretórios do Ansible nos destinos.
Para ver todas as variáveis definidas pelo Ansible, você pode simplesmente executar o seguinte comando :
Por que você acha que precisa saber o caminho absoluto para o manual?
fonte
local_action
módulo significa que existem casos de uso legítimos para isso.Eu estava usando um manual como este para testar minhas funções localmente:
mas isso parou de funcionar com o Ansible v2.2.
Eu depurei a solução mencionada de
e produziu meu diretório inicial e não o "diretório de trabalho atual"
Me acomodei com
de acordo com a solução acima.
fonte
Não existe uma variável incorporada para este propósito, mas você sempre pode descobrir o caminho absoluto do manual com o comando "pwd" e registrar sua saída em uma variável.
Agora o caminho está disponível na variável playbook_path_output.stdout
fonte
pwd
, não retorna o caminho do script do manual. Ele retorna o diretório atual do processo (normalmenteansible-playbook
). Os dois não precisam ser iguais e dependem da maneira exata como o ansible foi chamado.debug: var=ansible_env.PWD
(isso me dá o diretório a partir do qual eu executeiansible-playbook
na minha máquina local e o diretório inicial em servidores remotos){{ lookup('env','PWD') }}