Ansible:Firewalldで複数のサービスを設定する方法(他のプレイブックで繰り返されます)

Ansible:Firewalldで複数のサービスを設定する方法(他のプレイブックで繰り返されます)

ゾーンに複数のサービスを設定しようとしたときにこの問題が検出されました。
最初の項目のみが設定され、他の項目は常に次のエラーが発生します。

TASK [Set services] *******************************************************************************************************************************************************************************************************************************
changed: [localhost] => (item=ssh)
failed: [localhost] (item= samba) => {"ansible_loop_var": "item", "changed": false, "item": " samba", "msg": "ERROR: Exception caught: org.fedoraproject.FirewallD1.Exception: INVALID_SERVICE: Zone 'work': ' samba' not among existing services Permanent operation, Services are defined by port/tcp relationship and named as they are in /etc/services (on most systems)"}


サービスを切り替えてSambaを最初のサービスに設定すると、sshで同じエラーが発生します。

主なスクリプト:

- name: Configure Firewalld
  hosts: localhost
  gather_facts: no

  vars:
    firewall:
    - zone: work
      service: ssh, samba
    - zone: public
      service: samba

  tasks:
  - name: Set services
    include_tasks: ./service.yml
    loop: "{{firewall | selectattr('service', 'defined') | list}}"
    loop_control:
      loop_var: service

サービスマニュアル:


- set_fact:
    zone: "{{service.zone}}"


- name: "Servcie name"
  debug:
    var: item 
  with_items: "{{service.service | split(',')}}"


- name: Set services 
  ansible.posix.firewalld:
    zone: "{{zone}}"
    service: "{{item}}"
    state: enabled
    permanent: yes
  with_items: "{{service.service | split(',')}}"
  register: result

この問題を解決する方法について提案がありますか?

ベストアンサー1

問題がどこにあるのか調べることができました。
サービスプレイブックで次のものを交換する必要があります。
古い:

- name: Set services 
  ansible.posix.firewalld:
    zone: "{{zone}}"
    service: "{{item}}"
    state: enabled
    permanent: yes
  with_items: "{{service.service | split(',')}}"
  register: result

新しい:

- name: Set services 
  ansible.posix.firewalld:
    zone: "{{zone}}"
    service: "{{item}}"
    state: enabled
    permanent: yes
  with_items: "{{service.service | split(',') | map('trim')}}"
  register: result

空きスペースが問題です

おすすめ記事