2017-01-27 9 views
0

私は2つの役割を両方の仕事のリストで持っています。危険なDRY(あなた自身を繰り返さないでください)

- name: Ensure bible server is running 
    command: npm run forever 
    args: 
    chdir: ~/bible-server 
    when: "foreverlist.stdout.find('bibleServer.js') == -1" 

例ロールBタスク:

しかし、いくつかは(すべてではない)の役割Aにおけるタスクの役割B

例ロールタスクのタスクとほぼ同一であります

- name: Ensure certs server is running 
    command: npm run forever 
    args: 
    chdir: ~/certs-server 
    when: "foreverlist.stdout.find('certsServer.js') == -1" 

関数を宣言して引数を渡すようなタスクを宣言できるようにタスクをパラメータ化することは可能ですか?

+0

それは何のための変数です。私は質問と全く混同している。 – techraf

+0

これは、1つのタスクを定義して別のロールから呼び出す場合、それは正気の問題です。とにかくコード内でコロンを数回繰り返すことになります。 – techraf

答えて

2

はい、これは在庫があるためです。インベントリの変数として設定を指定します。両方のロールが同じホスト上にある場合は、辞書を使用できます。次に、辞書を繰り返して、各構成でタスクを繰り返します。 inventory

- name: Ensure Servers are running 
    command: npm run forever 
    args: 
    chdir: "~/{{ item.path }}" 
    when: "foreverlist.stdout.find('{{ item.script }}') == -1" 
    with_items: "{{ servers }}" 

ハイレベルな概要です:タスクで次に

servers: 
    - path: bible-server 
    script: bibleServer.js 
    - path: cert-server 
    script: certServer.js 

。私はinventoryで読むことを強くお勧めします。なぜなら、その使用はAnsibleの中核原理ですからです。 loopsも読んでください。

+0

しかし、OPには2つの役割があり、すべてではなく一部のタスクが同じです。それはどう答えますか? – techraf

関連する問題