deep_scrub_choked

This commit is contained in:
a.pivkin
2026-04-06 07:08:17 +03:00
commit 9149dc1d7f
840 changed files with 52471 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
---
- name: Disable ntpd
failed_when: false
ansible.builtin.service:
name: '{{ ntp_service_name }}'
state: stopped
enabled: false
- name: Disable chronyd
failed_when: false
ansible.builtin.service:
name: '{{ chrony_daemon_name }}'
enabled: false
state: stopped
- name: Disable timesyncd
failed_when: false
ansible.builtin.service:
name: timesyncd
enabled: false
state: stopped
+14
View File
@@ -0,0 +1,14 @@
---
galaxy_info:
company: Red Hat
author: Guillaume Abrioux
description: Handles ceph infra requirements (ntp, firewall, ...)
license: Apache
min_ansible_version: '2.7'
platforms:
- name: EL
versions:
- 'all'
galaxy_tags:
- system
dependencies: []
@@ -0,0 +1,257 @@
---
- name: Check firewalld installation on redhat or SUSE/openSUSE
ansible.builtin.command: rpm -q firewalld # noqa command-instead-of-module
register: firewalld_pkg_query
ignore_errors: true
check_mode: false
changed_when: false
tags: firewall
- name: Configuring firewalld
when: (firewalld_pkg_query.get('rc', 1) == 0
or is_atomic | bool)
tags: firewall
block:
- name: Install firewalld python binding
ansible.builtin.package:
name: "python{{ ansible_facts['python']['version']['major'] }}-firewall"
tags: with_pkg
when: not is_atomic | bool
- name: Start firewalld
ansible.builtin.service:
name: firewalld
state: started
enabled: true
register: result
retries: 5
delay: 3
until: result is succeeded
- name: Open ceph networks on monitor
ansible.posix.firewalld:
zone: "{{ ceph_mon_firewall_zone }}"
source: "{{ item }}"
permanent: true
immediate: true
state: enabled
with_items: "{{ public_network.split(',') }}"
when:
- mon_group_name is defined
- mon_group_name in group_names
- name: Open ceph networks on manager when collocated
ansible.posix.firewalld:
zone: "{{ ceph_mgr_firewall_zone }}"
source: "{{ item }}"
permanent: true
immediate: true
state: enabled
with_items: "{{ public_network.split(',') }}"
when:
- mon_group_name is defined
- mon_group_name in group_names
- mgr_group_name | length == 0
- name: Open monitor and manager ports
ansible.posix.firewalld:
service: "{{ item.service }}"
zone: "{{ item.zone }}"
permanent: true
immediate: true
state: enabled
with_items:
- { 'service': 'ceph-mon', 'zone': "{{ ceph_mon_firewall_zone }}" }
- { 'service': 'ceph', 'zone': "{{ ceph_mgr_firewall_zone }}" }
when:
- mon_group_name is defined
- mon_group_name in group_names
- name: Open ceph networks on manager when dedicated
ansible.posix.firewalld:
zone: "{{ ceph_mgr_firewall_zone }}"
source: "{{ item }}"
permanent: true
immediate: true
state: enabled
with_items: "{{ public_network.split(',') }}"
when:
- mgr_group_name is defined
- mgr_group_name in group_names
- mgr_group_name | length > 0
- name: Open manager ports
ansible.posix.firewalld:
service: ceph
zone: "{{ ceph_mgr_firewall_zone }}"
permanent: true
immediate: true
state: enabled
when:
- mgr_group_name is defined
- mgr_group_name in group_names
- name: Open ceph networks on osd
ansible.posix.firewalld:
zone: "{{ ceph_osd_firewall_zone }}"
source: "{{ item }}"
permanent: true
immediate: true
state: enabled
with_items: "{{ public_network.split(',') | union(cluster_network.split(',')) }}"
when:
- osd_group_name is defined
- osd_group_name in group_names
- name: Open osd ports
ansible.posix.firewalld:
service: ceph
zone: "{{ ceph_osd_firewall_zone }}"
permanent: true
immediate: true
state: enabled
when:
- osd_group_name is defined
- osd_group_name in group_names
- name: Open ceph networks on rgw
ansible.posix.firewalld:
zone: "{{ ceph_rgw_firewall_zone }}"
source: "{{ item }}"
permanent: true
immediate: true
state: enabled
with_items: "{{ public_network.split(',') }}"
when:
- rgw_group_name is defined
- rgw_group_name in group_names
- name: Open rgw ports
ansible.posix.firewalld:
port: "{{ item.radosgw_frontend_port }}/tcp"
zone: "{{ ceph_rgw_firewall_zone }}"
permanent: true
immediate: true
state: enabled
loop: "{{ rgw_instances }}"
when:
- rgw_group_name is defined
- rgw_group_name in group_names
- name: Open ceph networks on mds
ansible.posix.firewalld:
zone: "{{ ceph_mds_firewall_zone }}"
source: "{{ item }}"
permanent: true
immediate: true
state: enabled
with_items: "{{ public_network.split(',') }}"
when:
- mds_group_name is defined
- mds_group_name in group_names
- name: Open mds ports
ansible.posix.firewalld:
service: ceph
zone: "{{ ceph_mds_firewall_zone }}"
permanent: true
immediate: true
state: enabled
with_items: "{{ public_network.split(',') }}"
when:
- mds_group_name is defined
- mds_group_name in group_names
- name: Open ceph networks on nfs
ansible.posix.firewalld:
zone: "{{ ceph_nfs_firewall_zone }}"
source: "{{ item }}"
permanent: true
immediate: true
state: enabled
with_items: "{{ public_network.split(',') }}"
when:
- nfs_group_name is defined
- nfs_group_name in group_names
- name: Open nfs ports
ansible.posix.firewalld:
service: nfs
zone: "{{ ceph_nfs_firewall_zone }}"
permanent: true
immediate: true
state: enabled
when:
- nfs_group_name is defined
- nfs_group_name in group_names
- name: Open nfs ports (portmapper)
ansible.posix.firewalld:
port: "111/tcp"
zone: "{{ ceph_nfs_firewall_zone }}"
permanent: true
immediate: true
state: enabled
when:
- nfs_group_name is defined
- nfs_group_name in group_names
- name: Open ceph networks on rbdmirror
ansible.posix.firewalld:
zone: "{{ ceph_rbdmirror_firewall_zone }}"
source: "{{ item }}"
permanent: true
immediate: true
state: enabled
with_items: "{{ public_network.split(',') }}"
when:
- rbdmirror_group_name is defined
- rbdmirror_group_name in group_names
- name: Open rbdmirror ports
ansible.posix.firewalld:
service: ceph
zone: "{{ ceph_rbdmirror_firewall_zone }}"
permanent: true
immediate: true
state: enabled
when:
- rbdmirror_group_name is defined
- rbdmirror_group_name in group_names
- name: Open dashboard ports
ansible.builtin.include_tasks: dashboard_firewall.yml
when: dashboard_enabled | bool
- name: Open ceph networks on haproxy
ansible.posix.firewalld:
zone: "{{ ceph_rgwloadbalancer_firewall_zone }}"
source: "{{ item }}"
permanent: true
immediate: true
state: enabled
with_items: "{{ public_network.split(',') }}"
when:
- rgwloadbalancer_group_name is defined
- rgwloadbalancer_group_name in group_names
- name: Open haproxy ports
ansible.posix.firewalld:
port: "{{ haproxy_frontend_port | default(80) }}/tcp"
zone: "{{ ceph_rgwloadbalancer_firewall_zone }}"
permanent: true
immediate: true
state: enabled
when:
- rgwloadbalancer_group_name is defined
- rgwloadbalancer_group_name in group_names
- name: Add rich rule for keepalived vrrp
ansible.posix.firewalld:
rich_rule: 'rule protocol value="vrrp" accept'
permanent: true
immediate: true
state: enabled
when:
- rgwloadbalancer_group_name is defined
- rgwloadbalancer_group_name in group_names
@@ -0,0 +1,70 @@
---
- name: Open node_exporter port
ansible.posix.firewalld:
port: "{{ node_exporter_port }}/tcp"
zone: "{{ ceph_dashboard_firewall_zone }}"
permanent: true
immediate: true
state: enabled
- name: Open dashboard port in firewalld
when:
- mgr_group_name is defined
- (groups.get(mgr_group_name,[]) | length > 0 and mgr_group_name in group_names) or
(groups.get(mgr_group_name,[]) | length == 0 and mon_group_name in group_names)
block:
- name: Open dashboard port
ansible.posix.firewalld:
port: "{{ dashboard_port }}/tcp"
zone: "{{ ceph_dashboard_firewall_zone }}"
permanent: true
immediate: true
state: enabled
- name: Open mgr/prometheus port
ansible.posix.firewalld:
port: "9283/tcp"
zone: "{{ ceph_dashboard_firewall_zone }}"
permanent: true
immediate: true
state: enabled
- name: Open monitoring stack tcp ports in firewalld
when:
- monitoring_group_name is defined
- monitoring_group_name in group_names
block:
- name: Open grafana port
ansible.posix.firewalld:
port: "{{ grafana_port }}/tcp"
zone: "{{ ceph_dashboard_firewall_zone }}"
permanent: true
immediate: true
state: enabled
- name: Open prometheus port
ansible.posix.firewalld:
port: "{{ prometheus_port }}/tcp"
zone: "{{ ceph_dashboard_firewall_zone }}"
permanent: true
immediate: true
state: enabled
- name: Open alertmanager port
ansible.posix.firewalld:
port: "{{ alertmanager_port }}/tcp"
zone: "{{ ceph_dashboard_firewall_zone }}"
permanent: true
immediate: true
state: enabled
- name: Open alertmanager cluster port
ansible.posix.firewalld:
port: "{{ alertmanager_cluster_port }}/{{ item }}"
zone: "{{ ceph_dashboard_firewall_zone }}"
permanent: true
immediate: true
state: enabled
with_items:
- "tcp"
- "udp"
+53
View File
@@ -0,0 +1,53 @@
---
- name: Update cache for Debian based OSs
ansible.builtin.apt:
update_cache: true
when: ansible_facts['os_family'] == "Debian"
register: result
until: result is succeeded
tags: package-install
- name: Include_tasks configure_firewall.yml
ansible.builtin.include_tasks: configure_firewall.yml
when:
- configure_firewall | bool
- ansible_facts['os_family'] in ['RedHat', 'Suse']
tags: configure_firewall
- name: Include_tasks setup_ntp.yml
ansible.builtin.include_tasks: setup_ntp.yml
when: ntp_service_enabled | bool
tags: configure_ntp
- name: Ensure logrotate is installed
ansible.builtin.package:
name: logrotate
state: present
register: result
until: result is succeeded
tags: with_pkg
when:
- not is_atomic | bool
- containerized_deployment | bool
- inventory_hostname in groups.get(mon_group_name, []) or
inventory_hostname in groups.get(osd_group_name, []) or
inventory_hostname in groups.get(mds_group_name, []) or
inventory_hostname in groups.get(rgw_group_name, []) or
inventory_hostname in groups.get(mgr_group_name, []) or
inventory_hostname in groups.get(rbdmirror_group_name, [])
- name: Add logrotate configuration
ansible.builtin.template:
src: logrotate.conf.j2
dest: /etc/logrotate.d/ceph
mode: "0644"
owner: root
group: root
when:
- containerized_deployment | bool
- inventory_hostname in groups.get(mon_group_name, []) or
inventory_hostname in groups.get(osd_group_name, []) or
inventory_hostname in groups.get(mds_group_name, []) or
inventory_hostname in groups.get(rgw_group_name, []) or
inventory_hostname in groups.get(mgr_group_name, []) or
inventory_hostname in groups.get(rbdmirror_group_name, [])
+68
View File
@@ -0,0 +1,68 @@
---
- name: Set ntp service and chrony daemon name for Debian family
ansible.builtin.set_fact:
chrony_daemon_name: chrony
ntp_service_name: ntp
when: ansible_facts['os_family'] == 'Debian'
- name: Set ntp service and chrony daemon name for RedHat and Suse family
ansible.builtin.set_fact:
chrony_daemon_name: chronyd
ntp_service_name: ntpd
when: ansible_facts['os_family'] in ['RedHat', 'Suse']
# Installation of NTP daemons needs to be a separate task since installations
# can't happen on Atomic
- name: Install the ntp daemon
when: not is_atomic | bool
block:
- name: Install ntpd
ansible.builtin.package:
name: ntp
state: present
register: result
until: result is succeeded
when: ntp_daemon_type == "ntpd"
- name: Install chrony
ansible.builtin.package:
name: chrony
state: present
register: result
until: result is succeeded
when: ntp_daemon_type == "chronyd"
- name: Enable the ntp daemon and disable the rest
block:
- name: Enable timesyncing on timesyncd
ansible.builtin.command: timedatectl set-ntp on
notify:
- Disable ntpd
- Disable chronyd
changed_when: false
when: ntp_daemon_type == "timesyncd"
- name: Disable time sync using timesyncd if we are not using it
ansible.builtin.command: timedatectl set-ntp no
changed_when: false
when: ntp_daemon_type != "timesyncd"
- name: Enable ntpd
ansible.builtin.service:
name: "{{ ntp_service_name }}"
enabled: true
state: started
notify:
- Disable chronyd
- Disable timesyncd
when: ntp_daemon_type == "ntpd"
- name: Enable chronyd
ansible.builtin.service:
name: "{{ chrony_daemon_name }}"
enabled: true
state: started
notify:
- Disable ntpd
- Disable timesyncd
when: ntp_daemon_type == "chronyd"
@@ -0,0 +1,13 @@
/var/log/ceph/*.log {
rotate {{ ceph_logrotate_rotate | default(7) }}
{{ ceph_logrotate_frequency | default('daily') }}
compress
copytruncate
sharedscripts
postrotate
killall -q -1 ceph-mon ceph-mgr ceph-mds ceph-osd ceph-fuse radosgw rbd-mirror || pkill -1 -x "ceph-mon|ceph-mgr|ceph-mds|ceph-osd|ceph-fuse|radosgw|rbd-mirror" || true
endscript
missingok
notifempty
su root root
}