2017-07-25 2 views
0

私と一緒にいてください。私はこの複雑なものをAnabilitiesとやらなければならなかったし、それを一緒にまとめるのは本当に苦労している。dictを参照するサブ要素との関係

まとめてみると、私たちの従業員のSSHアカウントと公開鍵を私たちのサーバーに配備するための辞書とタスクがすでに用意されています。特定のWebサイトのユーザーアカウントに特定の従業員のキーを展開するために、この辞書を再利用したいと思います。おそらく例が私ができるよりも良く説明します。

employee_ssh_users: 
    user1: 'user1key' 
    user2: 'user2key' 
    user3: 'user3key' 
    user4: 'user4key' 

- name: Add employee SSH users 
    user: 
    name: "{{ item.key }}" 
    state: present 
    with_dict: "{{ employee_ssh_users }}" 

- name: Add employee public keys to employee accounts 
    authorized_key: 
    user: "{{ item.key }}" 
    state: present 
    key: "{{ item.value }}" 
    with_dict: "{{ employee_ssh_users }}" 

上記の設定とタスクは、従業員とそのキーをサーバーに追加する場合に有効です。今、これらのキーを再利用して、特定の従業員をコピーして従業員のキーを貼り付けることなく他の特定のユーザーに追加できるようにします。ここで私がやろうとしているものです:

website_keys: 
    - name: site1 
    authorized: 
     - user1 
     - user3 
    - name: site2 
    authorized: 
     - user1 
     - user2 

- name: Add employee public keys to website accounts 
    authorized_key: 
    user: "{{ item.0.name }}" 
    key: "{{ hostvars[inventory_hostname]['employee_ssh_users'][' + item.1 '] }}" 
    with_subelements: 
    - "{{ website_keys }}" 
    - authorized 

基本的に、私はそれがすべてでも可能です場合、キー変数にサブ要素を補間するために必要な正確に何を把握することはできません。

答えて

2

それは非常に簡単です:

- name: Add employee public keys to website accounts 
    authorized_key: 
    user: "{{ item.0.name }}" 
    key: "{{ employee_ssh_users[item.1] }}" 
    with_subelements: 
    - "{{ website_keys }}" 
    - authorized 

名前でemployee_ssh_usersを照会し、それが変数自体であるとして、引用符なしitem.1を使用することができます。

関連する問題