71 lines
2.4 KiB
YAML
71 lines
2.4 KiB
YAML
---
|
|
# Copyright 2019 Red Hat, Inc.
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
|
|
# "tripleo-firewall" will search for and load any operating system variable file
|
|
- name: Gather variables for each operating system
|
|
include_vars: "{{ item }}"
|
|
with_first_found:
|
|
- "{{ ansible_distribution | lower }}-{{ ansible_distribution_version | lower }}.yml"
|
|
- "{{ ansible_distribution | lower }}-{{ ansible_distribution_major_version | lower }}.yml"
|
|
- "{{ ansible_os_family | lower }}-{{ ansible_distribution_major_version | lower }}.yml"
|
|
- "{{ ansible_distribution | lower }}.yml"
|
|
- "{{ ansible_os_family | lower }}-{{ ansible_distribution_version.split('.')[0] }}.yml"
|
|
- "{{ ansible_os_family | lower }}.yml"
|
|
tags:
|
|
- always
|
|
|
|
- name: Set rule fact
|
|
set_fact:
|
|
firewall_rules_sorted: "{{
|
|
tripleo_firewall_default_rules |
|
|
combine(tripleo_firewall_rules) |
|
|
dict2items(key_name='rule_name', value_name='rule') |
|
|
sort(attribute='rule_name') |
|
|
reverse |
|
|
list
|
|
}}"
|
|
|
|
- name: Check rule set
|
|
fail:
|
|
msg: >-
|
|
`{{ item['rule_name'] }}` firewall rule cannot be created. TCP or UDP rules
|
|
for INPUT or OUTPUT need sport or dport defined.
|
|
when:
|
|
- ((item['rule']['proto'] | default('tcp')) in ['tcp', 'udp']) and
|
|
(item['rule']['dport'] is undefined) and
|
|
((item['rule']['chain'] | default('INPUT')) != 'FORWARD') and
|
|
((item['rule']['table'] | default('filter')) != 'nat')
|
|
loop: "{{ firewall_rules_sorted }}"
|
|
|
|
- name: Firewall add block
|
|
become: true
|
|
block:
|
|
- name: Ensure firewall is installed
|
|
package:
|
|
name: "{{ tripleo_firewall_packages }}"
|
|
state: present
|
|
|
|
- name: Ensure firewall is enabled
|
|
systemd:
|
|
name: iptables
|
|
state: started
|
|
enabled: true
|
|
|
|
- name: Enable filewall port config
|
|
include_tasks: tripleo_firewall_add.yml
|
|
loop: "{{ firewall_rules_sorted }}"
|