93 lines
3.7 KiB
YAML
93 lines
3.7 KiB
YAML
---
|
|
- name: Deploy EchoIP service
|
|
block:
|
|
- name: Set EchoIP directories
|
|
ansible.builtin.set_fact:
|
|
echoip_service_dir: "{{ ansible_env.HOME }}/services/echoip"
|
|
echoip_data_dir: "/mnt/object_storage/services/echoip"
|
|
maxmind_account_id: "{{ lookup('community.general.onepassword', 'finpwvqp6evflzjcsnwge74n34',
|
|
vault='j7nmhqlsjmp2r6umly5t75hzb4', field='account_id') | regex_replace('\\s+', '') }}"
|
|
maxmind_license_key: "{{ lookup('community.general.onepassword', 'finpwvqp6evflzjcsnwge74n34',
|
|
vault='j7nmhqlsjmp2r6umly5t75hzb4', field='license_key') | regex_replace('\\s+', '') }}"
|
|
|
|
- name: Create EchoIP directory
|
|
ansible.builtin.file:
|
|
path: "{{ echoip_service_dir }}"
|
|
state: directory
|
|
mode: "0755"
|
|
|
|
- name: Create EchoIP data directory
|
|
ansible.builtin.file:
|
|
path: "{{ echoip_data_dir }}"
|
|
state: directory
|
|
mode: "0755"
|
|
|
|
- name: Download GeoLite2 ASN database
|
|
ansible.builtin.get_url:
|
|
url: "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-ASN&license_key={{ maxmind_license_key }}&suffix=tar.gz"
|
|
dest: "{{ echoip_data_dir }}/GeoLite2-ASN.tar.gz"
|
|
mode: "0644"
|
|
|
|
- name: Extract GeoLite2 ASN database
|
|
ansible.builtin.unarchive:
|
|
src: "{{ echoip_data_dir }}/GeoLite2-ASN.tar.gz"
|
|
dest: "{{ echoip_data_dir }}"
|
|
remote_src: true
|
|
register: asn_extracted
|
|
|
|
- name: Move ASN database to correct location
|
|
ansible.builtin.command:
|
|
cmd: "mv {{ echoip_data_dir }}/GeoLite2-ASN_*/GeoLite2-ASN.mmdb {{ echoip_data_dir }}/GeoLite2-ASN.mmdb"
|
|
when: asn_extracted.changed
|
|
|
|
- name: Download GeoLite2 City database
|
|
ansible.builtin.get_url:
|
|
url: "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&license_key={{ maxmind_license_key }}&suffix=tar.gz"
|
|
dest: "{{ echoip_data_dir }}/GeoLite2-City.tar.gz"
|
|
mode: "0644"
|
|
|
|
- name: Extract GeoLite2 City database
|
|
ansible.builtin.unarchive:
|
|
src: "{{ echoip_data_dir }}/GeoLite2-City.tar.gz"
|
|
dest: "{{ echoip_data_dir }}"
|
|
remote_src: true
|
|
register: city_extracted
|
|
|
|
- name: Move City database to correct location
|
|
ansible.builtin.command:
|
|
cmd: "mv {{ echoip_data_dir }}/GeoLite2-City_*/GeoLite2-City.mmdb {{ echoip_data_dir }}/GeoLite2-City.mmdb"
|
|
when: city_extracted.changed
|
|
|
|
- name: Download GeoLite2 Country database
|
|
ansible.builtin.get_url:
|
|
url: "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country&license_key={{ maxmind_license_key }}&suffix=tar.gz"
|
|
dest: "{{ echoip_data_dir }}/GeoLite2-Country.tar.gz"
|
|
mode: "0644"
|
|
|
|
- name: Extract GeoLite2 Country database
|
|
ansible.builtin.unarchive:
|
|
src: "{{ echoip_data_dir }}/GeoLite2-Country.tar.gz"
|
|
dest: "{{ echoip_data_dir }}"
|
|
remote_src: true
|
|
register: country_extracted
|
|
|
|
- name: Move Country database to correct location
|
|
ansible.builtin.command:
|
|
cmd: "mv {{ echoip_data_dir }}/GeoLite2-Country_*/GeoLite2-Country.mmdb {{ echoip_data_dir }}/GeoLite2-Country.mmdb"
|
|
when: country_extracted.changed
|
|
|
|
- name: Deploy EchoIP docker-compose.yml
|
|
ansible.builtin.template:
|
|
src: docker-compose.yml.j2
|
|
dest: "{{ echoip_service_dir }}/docker-compose.yml"
|
|
mode: "0644"
|
|
register: echoip_compose
|
|
|
|
- name: Stop EchoIP service
|
|
ansible.builtin.command: docker compose -f "{{ echoip_service_dir }}/docker-compose.yml" down --remove-orphans
|
|
when: echoip_compose.changed
|
|
|
|
- name: Start EchoIP service
|
|
ansible.builtin.command: docker compose -f "{{ echoip_service_dir }}/docker-compose.yml" up -d
|
|
when: echoip_compose.changed
|