前提
- Ansibleで複数サーバに対し製品のインストール・設定を行う環境の構築中
- 製品はOSSなどではなく、とある会社固有の製品
実現したいこと
とある製品のインストール手順の中でshellファイルを読み込んで環境変数を設定し、その後のインストールなどを行うものがあります。
例)
bash
1$ source ./set_env.sh 2$ ./install_product01.sh 3$ ./install_product02.sh 4...
環境変数が事前にわかっている場合は environment
を使えば良いと思うのですが、今回のようにshellファイルに隠蔽されている場合は使えないと考えています。
また、 &&
などでコマンドをつなげれば設定できることもわかっていますが、インストール手順自体が多く、全てのtaskで毎回 source ./set_env.sh $$ ./install_product01.sh
のようにするのは現実的ではないと考えています。
今回のように、Ansibleの管理対象でshellファイルを実行し、環境変数を設定する方法についてご存知の方はいませんでしょうか。
試したこと
- 最初のtaskで
source ./set_env.sh
を実行
→ 次のtaskに引き継がれておらずNG
例)以下のような作りではインストール時に環境変数が設定されていないように見えた。
- name: 環境変数設定 shell: ./set_env.sh - name: インストール01実施 shell: ./install_product01.sh
補足情報(FW/ツールのバージョンなど)
- Ansible: 2.9.1
- Python: 2.7.5
回答4件
あなたの回答
tips
プレビュー