2015-10-13 12 views
6

URLからいくつかの正規表現を抽出します。私はこれを行うことができる唯一の方法は、以下ました:In Ansible、フィルタを使用する変数定義内で変数を使用する方法

- name: Set regex pattern for github URL 
    set_fact: pattern="^(git\@github\.com\:|https?\:\/\/github.com\/)(.*)\/([^\.]+)(\.git)?$" 

    - name: Extract organization name 
    set_fact: project_repo="{{ deploy_fork | regex_replace("^(git\@github\.com\:|https?\:\/\/github.com\/)(.*)\/([^\.]+)(\.git)?$", "\\3") }}" 
    when: deploy_fork | match("{{ pattern }}") 

をこのアプローチでは、私はmatchフィルタではなく、私は別の変数に抽出されたテキストを割り当てるset_fact行に変数patternを再利用することができますよ。 filter(s)を使用するset_factの変数を再利用する方法はありますか?

答えて

8

定義済みの変数を直接参照できるだけですみます。これを試して;それは私のために働いた:

- name: Set regex pattern for github URL 
    set_fact: pattern="^(git\@github\.com\:|https?\:\/\/github.com\/)(.*)\/([^\.]+)(\.git)?$" 
- name: Extract organization name 
    set_fact: project_repo="{{ deploy_fork | regex_replace(pattern, "\\3") }}" 
    when: deploy_fork | match(pattern) 
0

あなたはこれらがすでに暗示されている として、条件文の内部で変数を使用するために、{{}}を使用する必要はありません。あなたがここに詳細な説明Ansible Conditionals

を見つけることができます

関連する問題