69 lines
2.6 KiB
YAML
69 lines
2.6 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: 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: "{{ tripleo_firewall_rules | dict2items(key_name='rule_name', value_name='rule') }}"
|
|
|
|
- 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
|
|
when:
|
|
- item['rule']['dport'] is defined
|
|
loop: "{{ tripleo_firewall_rules | dict2items(key_name='rule_name', value_name='rule') }}"
|
|
|
|
- name: Enable filewall protocol config
|
|
include_tasks: tripleo_firewall_protocol_rules.yml
|
|
when:
|
|
- item['rule']['proto'] is defined
|
|
- item['rule']['dport'] is undefined
|
|
loop: "{{ tripleo_firewall_rules | dict2items(key_name='rule_name', value_name='rule') }}"
|