質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Q&A

解決済

1回答

757閲覧

Ansible urlモジュールでcurlコマンドを実行したい

khaii21

総合スコア66

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

0グッド

0クリップ

投稿2023/11/08 00:05

編集2023/11/08 07:05

実現したいこと

Linux系のcurlコマンドをAnsibleのurlモジュールで実行したいのですが、
エラーとなります。
設定の仕方に誤りがあると考えていますが、修正方法が分かりません。
何かお気づきの方がいらっしゃいましたらご教授頂けないでしょうか。
宜しくお願い致します。

前提

curlコマンドの内容

1$ curl -k https://web01.hoge.co.jp/hoge.html?alive=value1 -s

ブラウザーによる実行結果の表示

{ “isAlive”: value1 }

エラーメッセージ

fatal: [web01.hoge.co.jp]: FAILED! => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, "msg": "hostname 'web01.hoge.co.jp' doesn't match 'web.vip.hoge.co.jp'", "status": -1, "url": "https://web01.hoge.co.jp:4443/hoge.html"} web.vip.hoge.co.jpはVIPのweb01.hoge.co.jpに紐づいています

該当のソースコード

playbook.yml

1- name: "サービスステータスの変更" 2 ansible.builtin.uri: 3 url: https://web01.hoge.co.jp/hoge.html 4 method: POST 5 body: 6 alive: "value1"

commandモジュールにてcurlコマンドを実行した結果

playbook.yml

1ansible.builtin.command: curl -k https://hoge.web01.co.jp/hoge.html?alive=value1 -s

上記のplaybookでのcurlコマンドを実行した際の結果ログ

ok: [web01.hoge.co.jp] => { "vip_service_out": { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": true, "cmd": [ "curl", "-k", "https://web01.hoge.co.jp/hoge.html?alive=value1", "-s" ], "delta": "0:00:00.ssssss", "end": "yyyy-mm-dd HH:MM:SS.ssssss", "failed": false, "msg": "", "rc": 0, "start": "yyyy-mm-dd HH:MM:SS.ssssss", "stderr": "", "stderr_lines": [], "stdout": "{ \"isAlive\": value1 }", "stdout_lines": [ "{ \"isAlive\": value1 }" ] } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakaiY

2023/11/08 01:04

> エラーとなります。 エラーの内容を質問に追記していただけますか。
khaii21

2023/11/08 03:53 編集

ご確認ありがとうございます。 エラーメッセージを追記させて頂きました。 commandモジュールにてcurlコマンドを実行した結果も追記させて頂きました。 宜しくお願い致します。
guest

回答1

0

ベストアンサー

エラーメッセージを見ると、ホスト名が不一致とあります。

"hostname 'web01.hoge.co.jp' doesn't match 'web.vip.hoge.co.jp'"

たぶん、SSLの証明書のものなので、uri モジュールのパラメータ validate_certs をfalseにしてみるとどうでしょう。
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/uri_module.html#parameter-validate_certs
curlコマンドでま -k オプションでチェックを無効にしています。

ちなみに、URLのクエリ文字列は、ボディではないので、質問のコードはそこも問題です。

yaml

1- name: "サービスステータスの変更" 2 ansible.builtin.uri: 3 url: https://web01.hoge.co.jp/hoge.html?alive=value1 4 method: POST 5 validate_certs: false

投稿2023/11/08 05:04

編集2023/11/08 05:06
TakaiY

総合スコア12774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

khaii21

2023/11/08 06:49

ご確認、ご教授ありがとうございます。 ご指摘頂いた内容に修正したところ、アクセスが出来ました。 ただレスポンスが404となってしまいます。 エラーメッセージに出力されるURLは、直接ブラウザーに入力すると正常に表示はされますので、URL自体に誤りは無いと考えているのですが、何かお気づきのことがありましたらご指摘頂けますと幸いです。 エラーメッセージは質問文の方に追記させて頂きました。
khaii21

2023/11/08 07:07

申し訳ございません。 ステータスが404である事は問題ありませんでした。 色々とご確認ありがとうございました。 大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問