1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ansible】extravarsを二つ以上シンプルに渡す

Last updated at Posted at 2026-02-02

二つ以上渡す

ansibleでは、
--extra-varsを使えば、実行時に、引数を渡すことができます。
また、これは、set_factや、varsなどで設定する変数を全て上書くことができます。
また、実行時に変数を渡すことができるので、既存のansibleを普段とは別の使い方をしたい場合にも活用できます。

書き方としては、公式ページに以下のように記載があります。

Values passed in using the key=value syntax are interpreted as strings. Use the JSON format if you need to pass non-string values such as Booleans, integers, floats, and lists.

ansible-playbook release.yml --extra-vars "version=1.23.45 other_variable=foo"

ですが、渡らない という状況にハマりました。
状況としては、以下です。
・jenkins pipelineを使って、pythonのコードを呼び出し、そのpythonから、ansible-playbook ****.yml --extravars "XXX=A YYY=B"
を実行する(公式ドキュメントにある半角スペースで区切る方法)

・jenkinsのコンソール上には、上記のextra-varsをつけたコマンドが表示されているが、実行されたansible_hr.logを見ると値が渡っていない。

・ローカルで実行した際は、公式の記述のように、一つのextra-varsに対して、スペース区切りで二つ渡せば実行できた。

なぜ

試したこと

・jsonの記述にしてみる。
公式には以下の記法もありこちらも試してみましたがダメでした。

ansible-playbook release.yml --extra-vars '{"version":"1.23.45","other_variable":"foo"}'
ansible-playbook arcade.yml --extra-vars '{"pacman":"mrs","ghosts":["inky","pinky","clyde","sue"]}'

・エスケープ文字を足す。
エスケープ文字を足して実行。同じくダメでした。

--extra-vars \"AAA=true BBB="${CCC}"\"

結論

以下でできました。シンプルですね。

【--extra-varsを2個つける】

ansible-playbook ****.yml --extra-vars "XXX=A" --extra-vars "YYY=B"

pythonから呼び出した、あるいは、 jenkinsとpythonの両方を経由した、などが関係して、読み込めなくなっていたのかもしれません。

また、以下の記法もできるようでした。

ansible-playbook ****.yml -e "XXX=A" -e "YYY=B"

ドキュメントに無いけれど。

なぜこれで解決したのか?

原因の詳細は不明ですが、Jenkins ➔ Python ➔ Shell という複数の階層を経由する際、引数のクォートの解釈やスペースのパースが崩れてしまい、一つの大きな文字列として誤認されたり、逆に分割されすぎたりした可能性があります。

引数を分けて指定することで、各環境(Jenkins/Python)の引数パーサーが「どこまでが一つのオプションか」を明確に判別できるようになり、確実にAnsibleへ変数が届くようになったと考えられます。

実はこれは結構昔に下書きした記事なのですが、やっぱり根本原因は不明なので、このまま投稿することにしました。

以上、読んでいただきありがとうございました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?