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'
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
?
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'
Tags curl