1

yaml ファイルからインポートされた変数を使用して一連の firewalld ルールを作成しようとしています。yaml ファイルはサービス名のディクショナリを作成し、関連付けられたポートは各項目内のリストです。yaml の一部は次のようになります。

---
myservice:
  description: My service desc
  ports:
    - 1234/tcp
    - 1235/tcp
another:
  description: Another service
  ports:
    - 2222/tcp
    - 3333/tcp

私がこれまでに持っているAnsibleの役割は次のとおりです。

- name: Read services from file
  include_vars:
    file: "services.yml"
    name: services

- name: Create firewalld services
  command: >
    firewall-cmd --permanent
      --new-service={{ item.key }}
      --set-description="{{ item.value.description }}"
  register: addserv
  failed_when: addserv.rc != 26 and addserv.rc != 0
  changed_when: not "NAME_CONFLICT" in addserv.stderr
  with_dict: "{{ services }}"
  
- name: Add ports to firewalld service
  command: >
    firewall-cmd --permanent
      --service={{ item.key }} --add-port={{ item.value.ports }}
  register: addport
  changed_when: not "ALREADY_ENABLED" in addport.stderr

firewalld サービスを作成する最初の部分は問題なく動作しますが、2 番目の部分では、辞書キーを保持しながらポートのリストをループする方法に困惑しています。サブ要素を使用してポートリストを抽出しようとしましたが、それは機能しますが、キーからサービス名を保持する方法がわかりません。

4

1 に答える 1