私たちは多くの機会不足の役割のためにプライベートgit reposを持っています。レポホストは、たとえば、サイトからサイトに異なります私はgalaxyとrequires.ymlで変数置換を使用できますか?
- サイト1は
https://gitforsite1.ourdomain.com
- サイト2は、私が欲しいもの
https://gitforsite2.ourdomain.com
を使用して使用する単一requirements.yml
のファイルを持っているし、正しいGitのレポを置換することです。
#!/bin/bash
...
if [ "$1" = "site1" ]; then
export REPO_ROOT="https://gitforsite1.ourdomain.com"
fi
if [ "$1" = "site2" ]; then
export REPO_ROOT="https://gitforsite2.ourdomain.com"
fi
... error checking if the value is not site1 or site2 ...
# Then install the roles
ansible-galaxy install -f -r config/requirements.yml -p roles
、その後requirements.yml
にこの値を代入:私はこれを行うことが一つの方法は、bashスクリプトは、環境変数を設定することです
---
- src: {{ lookup('env', 'REPO_ROOT') }}/role1.git
name: role1
- src: {{ lookup('env', 'REPO_ROOT') }}/role.git
name: role2
このアプローチが与える:ファイル構造があることを示唆しているERROR! Unable to load data from the requirements file
を間違っている。 (それはアプローチが働くかもしれないし、私は構文が間違っているかもしれない)。
私は変数を設定することができますアプローチは、環境、コマンドライン、何でも良いです。また、これがサポートされていない場合は、実行時にファイルを書き直す必要がありますか?おそらくsed
を使用していますか?
EDIT 1: はrequirements.yml
ファイルが使用されている方法を示すために、上記のbashスクリプトの抜粋でansible-galaxy
行を追加しました。私はこれが問題だと思う:ansible-galaxy
は、group_vars/all
または環境に含まれているかどうかにかかわらず、変数の置換を展開していません。 Python 2.7.10でAniableバージョン2.3.1.0を使用する。
EDIT 2:発見 in the docsansible.cfg
に、別のGalaxyインスタンスを指すようにserver
オプションがそうのような、そこにある:
[galaxy]
server=https://gitforsite1.ourdomain.com
ギャラクシーは、使用この設定を行いますしかしそれがなければなりませんそれはhttps://gitforsite1.ourdomain.com/api
を呼び出すため、完全なGalaxy Webアプリになります。それは私にも役に立たない。
異なるサイトのインベントリの 'group_vars/all'ファイルに' REPO_ROOT'を入れてみませんか? – Jack
Ansibleのバージョンは? 1.4以降では ' - src:" {{ansible_env.REPO_ROOT}}/role1.git "'を使うことができます。 – Deathgrip
@Jackありがとう - いいアイデアですが、 'ansible-galaxy'はこれらを無視しているようです(投稿編集を参照)。 – ChalkBoard