Skip to content

Commit ec40e87

Browse files
committed
fix: improve GeoLite2 City database installation logic and add age check
1 parent 65a98c2 commit ec40e87

File tree

1 file changed

+56
-39
lines changed

1 file changed

+56
-39
lines changed

tasks/configure.yml

Lines changed: 56 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -57,50 +57,67 @@
5757
- (fluentbit_geoip_account_id | default('', true) | string) | length > 0
5858
- (fluentbit_geoip_license_key | default('', true) | string) | length > 0
5959
block:
60-
- name: Create temporary directory for GeoIP download
61-
ansible.builtin.tempfile:
62-
state: directory
63-
prefix: fluentbit-geoip-
64-
register: __fluentbit_geoip_tmp
65-
check_mode: false
60+
- name: Check if GeoLite2 City database exists
61+
ansible.builtin.stat:
62+
path: /etc/fluent-bit/GeoLite2-City.mmdb
63+
register: __fluentbit_geoip_existing
6664

67-
- name: Download GeoLite2 City archive
68-
ansible.builtin.get_url:
69-
url: "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&account_id={{ fluentbit_geoip_account_id | string | urlencode }}&license_key={{ fluentbit_geoip_license_key | string | urlencode }}&suffix=tar.gz"
70-
dest: "{{ __fluentbit_geoip_tmp.path }}/GeoLite2-City.tar.gz"
71-
mode: '0600'
72-
check_mode: false
65+
- name: Calculate database age in seconds
66+
ansible.builtin.set_fact:
67+
__fluentbit_geoip_age: "{{ ((ansible_date_time.epoch | int) - (__fluentbit_geoip_existing.stat.mtime | int)) if __fluentbit_geoip_existing.stat.exists else 86401 }}"
7368

74-
- name: Extract GeoLite2 City archive
75-
ansible.builtin.unarchive:
76-
src: "{{ __fluentbit_geoip_tmp.path }}/GeoLite2-City.tar.gz"
77-
dest: "{{ __fluentbit_geoip_tmp.path }}"
78-
remote_src: true
79-
check_mode: false
69+
- name: Download and install GeoLite2 City database
70+
when: __fluentbit_geoip_age | int > 86400
71+
block:
72+
- name: Create temporary directory for GeoIP download
73+
ansible.builtin.tempfile:
74+
state: directory
75+
prefix: fluentbit-geoip-
76+
register: __fluentbit_geoip_tmp
77+
check_mode: false
8078

81-
- name: Locate GeoLite2 City database file
82-
ansible.builtin.find:
83-
paths: "{{ __fluentbit_geoip_tmp.path }}"
84-
patterns: GeoLite2-City.mmdb
85-
recurse: true
86-
register: __fluentbit_geoip_found
87-
check_mode: false
79+
- name: Download GeoLite2 City archive
80+
ansible.builtin.get_url:
81+
url: "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&account_id={{ fluentbit_geoip_account_id | string | urlencode }}&license_key={{ fluentbit_geoip_license_key | string | urlencode }}&suffix=tar.gz"
82+
dest: "{{ __fluentbit_geoip_tmp.path }}/GeoLite2-City.tar.gz"
83+
mode: '0600'
84+
check_mode: false
8885

89-
- name: Ensure GeoLite2 City database was extracted
90-
ansible.builtin.fail:
91-
msg: GeoLite2-City.mmdb not found in downloaded archive
92-
when: __fluentbit_geoip_found['files'] | length == 0
93-
check_mode: false
86+
- name: Extract GeoLite2 City archive
87+
ansible.builtin.unarchive:
88+
src: "{{ __fluentbit_geoip_tmp.path }}/GeoLite2-City.tar.gz"
89+
dest: "{{ __fluentbit_geoip_tmp.path }}"
90+
remote_src: true
91+
check_mode: false
92+
93+
- name: Locate GeoLite2 City database file
94+
ansible.builtin.find:
95+
paths: "{{ __fluentbit_geoip_tmp.path }}"
96+
patterns: GeoLite2-City.mmdb
97+
recurse: true
98+
register: __fluentbit_geoip_found
99+
check_mode: false
100+
101+
- name: Ensure GeoLite2 City database was extracted
102+
ansible.builtin.fail:
103+
msg: GeoLite2-City.mmdb not found in downloaded archive
104+
when: __fluentbit_geoip_found['files'] | length == 0
105+
check_mode: false
106+
107+
- name: Install GeoLite2 City database
108+
ansible.builtin.copy:
109+
src: "{{ __fluentbit_geoip_found['files'][0]['path'] }}"
110+
dest: /etc/fluent-bit/GeoLite2-City.mmdb
111+
owner: root
112+
group: root
113+
mode: '0644'
114+
remote_src: true
115+
notify: Restart fluent-bit
94116

95-
- name: Install GeoLite2 City database
96-
ansible.builtin.copy:
97-
src: "{{ __fluentbit_geoip_found['files'][0]['path'] }}"
98-
dest: /etc/fluent-bit/GeoLite2-City.mmdb
99-
owner: root
100-
group: root
101-
mode: '0644'
102-
remote_src: true
103-
notify: Restart fluent-bit
117+
- name: Skip GeoLite2 City database download
118+
ansible.builtin.debug:
119+
msg: "Skipping GeoLite2 City database download - existing database is {{ __fluentbit_geoip_age | int }} seconds old (less than 24 hours)"
120+
when: __fluentbit_geoip_age | int <= 86400
104121
always:
105122
- name: Cleanup GeoIP temporary directory
106123
ansible.builtin.file:

0 commit comments

Comments
 (0)