Como posso prefixar o PATH enquanto executo o módulo pip do Ansible?

16

Estou tentando instalar o psycopg2 em um virtualenv do Python com o módulo pip do Ansible, mas preciso prefixar uma entrada no PATH para que ele seja compilado corretamente (ele precisa saber o caminho para o diretório que contém pg_config ) . Vejo que posso transmitir environment para o módulo pip , mas não tenho certeza de como preceder em vez de sobrescrever PATH .

Aqui estou tentando prefixar o caminho com o diretório necessário, mas ele sobrescreve o virtualenv PATH e falha:

- pip:
    name: psycopg2
    virtualenv: /path/to/my/venv
  environment:
    PATH: /usr/pgsql-9.3/bin:$PATH
    
por Collin Allen 20.02.2014 / 21:47

1 resposta

32

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

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

Se você estiver interessado no PATH env var do cliente local executando os scripts Ansible (em vez do servidor direcionado ), então você quer fazer 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') }}
    
por 21.02.2014 / 02:04