Usando o curl como um teste [duplicado]

1

Estou escrevendo a configuração do Puppet para automatizar a criação de um recurso do repositório do Elastic Search. Infelizmente, até onde eu sei, não há como especificar essa configuração no arquivo de configuração do Elastic Search YAML, então estou preso com HTTP e curl. Eu declarei o seguinte como recursos:

file { 'curator_repository_config':
    path    => "${elasticsearch::install_dir}/config/s3-repository.json",
    owner   => $elasticsearch::user,
    group   => $elasticsearch::user,
    mode    => '0400',
    content => template('chromeriver/curator/s3-repository.json.erb'),
}

exec { 'create_es_repository':
    command => "curl -is -X PUT 'http://localhost:9200/_snapshot/s3' -d @${elasticsearch::install_dir}/config/s3-repository.json",
    unless  => "curl -is -X GET 'http://localhost:9200/_snapshot/s3'",
    path    => '/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin',
    user    => $elasticsearch::user,
    require => [
        Service['elasticsearch'],
        File['curator_repository_config']
    ]
}

Entender a configuração do Puppet não é necessário para responder a essa pergunta, mas o texto acima basicamente cria um arquivo chamado s3-repository.json , que contém detalhes de configuração, e é usado no POST to Elastic Search.

O segundo recurso condicionalmente é executado, executando apenas se o código de retorno do comando a seguir for diferente de zero. Essencialmente faz isso:

#!/bin/bash
if ! curl -is -X GET 'http://localhost:9200/_snapshot/s3' &>/dev/null; then
    curl -is -X PUT 'http://localhost:9200/_snapshot/s3' @/path/to/s3-repository.json
fi

O problema que estou tendo é que curl retorna 0 para 404 na solicitação GET . Eu gostaria de ter curl return 1 se a resposta for uma resposta não-200.

Existe uma maneira fácil de fazer isso com curl ?

    
por Naftuli Kay 19.08.2015 / 01:08

1 resposta

1

Eu encontrei minha resposta na opção --fail para curl . Ao passar essa opção, curl retorna um código de saída diferente de zero para respostas não-200:

curl -i -X GET --fail 'http://localhost:9200/_snapshot/s3'
    
por 19.08.2015 / 01:14

Tags