Como posso adicionar o PATH ao executar o módulo pip do Ansible?


17

Estou tentando instalar o psycopg2 em um virtualenv Python com o pipmódulo do Ansible , mas preciso acrescentar uma entrada no PATH para que ele seja construído corretamente (ele precisa saber o caminho para o diretório que contém pg_config). Vejo que posso passar environmentpara o pipmódulo, mas não tenho certeza de como preceder em vez de substituir PATH.

Aqui estou tentando acrescentar o caminho ao diretório necessário, mas ele substitui o virtualenv PATHe falha:

- pip:
    name: psycopg2
    virtualenv: /path/to/my/venv
  environment:
    PATH: /usr/pgsql-9.3/bin:$PATH

Respostas:


33

Se você estiver usando o Ansible 1.4 ou posterior (o que eu recomendo), você poderá acessar a variável env remota PATH :

- pip: name=psycopg2 virtualenv=/path/to/my/venv
  environment:
    PATH: /usr/pgsql-9.3/bin:{{ ansible_env.PATH }}

Se, em vez disso, você estiver interessado na PATHvar env do cliente local executando os scripts Ansible (em vez do servidor de destino ), faça o seguinte:

- pip: name=psycopg2 virtualenv=/path/to/my/venv
  environment:
    # This only makes sense if your client and server are homogeneous, that is,
    # they have the same PATHs.
    PATH: /usr/pgsql-9.3/bin:{{ lookup('env', 'PATH') }}

4
A ansible_env.PATHopção era o que eu precisava - funcionou perfeitamente. Obrigado!
Collin Allen

1
Observe que isso requer o PATH da estação de trabalho, não do servidor!
vdboor

4
Se você precisar anexar ~/bin, use PATH: "{{ansible_env.HOME}}/bin:{{ansible_env.PATH}}". Se você usar PATH: "~/bin:{{ansible_env.PATH}}", alguns programas (como o do Python shutil.which) não poderão usar esse componente.
Lekensteyn

3
Esteja ciente também de que ansible_envse refere ao ambiente do usuário SSH, não ao sudoambiente. ansible_env.USERportanto, pode resultar em rootum usuário não privilegiado.
Lekensteyn
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.