AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 772768
Accepted
Itai Ganot
Itai Ganot
Asked: 2016-04-26 07:13:59 +0800 CST2016-04-26 07:13:59 +0800 CST 2016-04-26 07:13:59 +0800 CST

Qual é a maneira correta de exportar valores ambientais por meio do ansible playbook?

  • 772

Eu escrevi um playbook ansible que deve instalar uma ferramenta chamada kafkacat.

A maioria das tarefas do playbook funciona, exceto uma (a mais importante).

Estou compilando a ferramenta a partir do código-fonte e a instalei manualmente usando as etapas que estou construindo no ansible.

A parte relevante do manual é:

- name: Install kafkacat (configure)
    command: chdir={{ kafkacat_installdir }} {{ kafkacat_installdir }}/configure --enable-json --enable-static
    sudo: yes

  - name: Install kafkacat (make)
    command: chdir={{ kafkacat_installdir }} make
    environment:
      CPPFLAGS: ' -Itmp-bootstrap/usr/local/include'
      STATIC_LIB_yajl: ' tmp-bootstrap/usr/local/lib/libyajl_s.a'
      STATIC_LIB_rdkafka: ' tmp-bootstrap/usr/local/lib/librdkafka.a'
      LIBS: ' -lpthread -lrt '
    sudo: yes

  - name: Install kafkacat (make install)
    command: chdir={{ kafkacat_installdir }} make install
    sudo: yes

É necessário que o processo "make" funcione, para saber as exportações que especifiquei na tarefa, mas por algum motivo parece que os valores não são exportados corretamente e isso faz com que o playbook falhe:

failed: [kafka-1] => {"changed": true, "cmd": ["make"], "delta": "0:00:00.422669", "end": "2016-04-25 15:10:16.085697", "rc": 2, "start": "2016-04-25 15:10:15.663028", "warnings": []}
stderr: /usr/bin/ld: cannot find -lyajl
/usr/bin/ld: cannot find -lyajl
collect2: error: ld returned 1 exit status
make: *** [kafkacat] Error 1
stdout: gcc -MD -MP  -Itmp-bootstrap/usr/local/include -g -O2 -Wall -Wfloat-equal -Wpointer-arith -g -O2 -Wall -Wfloat-equal -Wpointer-arith  -c kafkacat.c -o kafkacat.o
gcc -MD -MP  -Itmp-bootstrap/usr/local/include -g -O2 -Wall -Wfloat-equal -Wpointer-arith -g -O2 -Wall -Wfloat-equal -Wpointer-arith  -c format.c -o format.o
gcc -MD -MP  -Itmp-bootstrap/usr/local/include -g -O2 -Wall -Wfloat-equal -Wpointer-arith -g -O2 -Wall -Wfloat-equal -Wpointer-arith  -c json.c -o json.o

A razão pela qual -lyajl não foi encontrado é porque a exportação não está funcionando.

Eu também tentei fazer algo assim:

  - name: Install kafkacat (configure)
    command: chdir={{ kafkacat_installdir }} CPFLAGS='CPPFLAGS= -Itmp-bootstrap/usr/local/include' STATIC_LIB_yajl='tmp-bootstrap/usr/local/lib/libyajl_s.a' STATIC_LIB_rdkafka='tmp-bootstrap/usr/local/lib/librdkafka.a' LIBS=' -lpthread -lrt' {{ kafkacat_installdir }}/configure --enable-json --enable-static

Sua ajuda é muito apreciada e obrigado antecipadamente,

ansible kafka
  • 2 2 respostas
  • 219 Views

2 respostas

  • Voted
  1. Best Answer
    Edenhill
    2016-04-29T11:38:59+08:002016-04-29T11:38:59+08:00

    Parece que seus valores STATIC_LIB_... são prefixados por um espaço que fará com que a verificação da lib estática falhe.

    • 1
  2. brent
    2016-04-26T07:23:08+08:002016-04-26T07:23:08+08:00

    Seus env vars não foram disponibilizados durante a configurefase, portanto, não foram usados ​​durante o make. Dê uma olhada na fonte configure.base para kafkacat.

    De configure:

    # Load base module
    source mklove/modules/configure.base
    

    De configure.base:

    # Tries to figure out if we can use a static library or not.
    # Arguments:
    #  library name   (e.g. -lrdkafka)
    #  compiler flags (optional "", e.g: "-lyajl")
    # Returns/outputs:
    #  New list of compiler flags
    function mkl_lib_check_static {
        local libname=$1
        local libs=$2
        local arfile_var=STATIC_LIB_${libname#-l}
    
        # If STATIC_LIB_<libname_without_-l> specifies an existing .a file we
        # use that instead.
        if [[ -f ${!arfile_var} ]]; then
        libs=$(echo $libs | sed -e "s|$libname|${!arfile_var}|g")
        else
            libs=$(echo $libs | sed -e "s|$libname|${LDFLAGS_STATIC} $libname ${LDFLAGS_DYNAMIC}|g")
        fi
    
        echo $libs
    }
    

    Em outra situação, você poderia ter verificado que o ansible estava configurando o env corretamente fazendo uma depuração rápida

      - name: Show environment
        shell: "env"
        environment:
          CPPFLAGS: ' -Itmp-bootstrap/usr/local/include'
          STATIC_LIB_yajl: ' tmp-bootstrap/usr/local/lib/libyajl_s.a'
          STATIC_LIB_rdkafka: ' tmp-bootstrap/usr/local/lib/librdkafka.a'
          LIBS: ' -lpthread -lrt '
        sudo: yes
    
    • 0

relate perguntas

  • Tarefas Ansible Recorrentes

  • Não é possível formar um link de um arquivo que está em sites disponíveis para um diretório habilitado para sites no servidor remoto usando ansible?

  • como executar um determinado papel do ansible?

  • Ansible e rbash

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve