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で使用される設定の詳細を含むファイルを生成します。
2番目のリソースは条件付きで実行され、次のコマンドの戻りコードがゼロ以外の場合にのみ実行されます。本質的に次のことを行います。
#!/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 以外の応答に対してゼロ以外の終了コードが返されます。
curl -i -X GET --fail 'http://localhost:9200/_snapshot/s3'