カールをテストとして使用する

カールをテストとして使用する

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.jsonElastic 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 レスポンスでない場合、返されることを望みます。404GETcurl1

これを行う簡単な方法はありますかcurl

答え1

--failオプションで答えを見つけましたcurl。このオプションを渡すと、curl200 以外の応答に対してゼロ以外の終了コードが返されます。

curl -i -X GET --fail 'http://localhost:9200/_snapshot/s3'

関連情報