Elastic Search 리포지토리 리소스를 자동으로 생성하기 위해 Puppet 구성을 작성 중입니다. 안타깝게도 제가 아는 한 Elastic Search YAML 구성 파일에서는 이 구성을 지정할 수 없으므로 HTTP와 Curl만 사용할 수 있습니다. 나는 다음을 자원으로 선언했습니다.
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']
]
}
이 질문에 대답하기 위해 Puppet 구성을 이해할 필요는 없지만 위의 내용은 본질적으로 s3-repository.json
Elastic Search에 대한 POST에서 사용되는 구성 세부 정보가 포함된 파일을 생성합니다.
두 번째 리소스는 조건부로 실행되며 다음 명령의 반환 코드가 0이 아닌 경우에만 실행됩니다. 본질적으로 다음을 수행합니다.
#!/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
내가 겪고 있는 문제는 요청 시 a를 curl
반환하는 것입니다. 0
응답이 200 응답이 아닌 경우 반환되기를 원합니다.404
GET
curl
1
이를 수행하는 쉬운 방법이 있습니까 curl
?
답변1
--fail
옵션에서 답을 찾았습니다 curl
. 이 옵션을 전달하면 curl
200이 아닌 응답에 대해 0이 아닌 종료 코드가 반환됩니다.
curl -i -X GET --fail 'http://localhost:9200/_snapshot/s3'