From b295078acccca2ba4f11ee52563f2b32feefa346 Mon Sep 17 00:00:00 2001 From: ale <ale@incal.net> Date: Tue, 23 Nov 2021 09:15:31 +0000 Subject: [PATCH] Add asset tracking service --- playbooks/all.yml | 3 +++ plugins/inventory/float.py | 3 +++ roles/float-base-docker/tasks/main.yml | 5 ++++ .../templates/assetmon.default.j2 | 1 + roles/float-base/tasks/apt.yml | 1 + roles/float-infra-assetmon/handlers/main.yml | 6 +++++ roles/float-infra-assetmon/tasks/main.yml | 18 +++++++++++++ .../templates/server.yml.j2 | 13 ++++++++++ services.yml.default | 25 +++++++++++++++++++ services.yml.no-elasticsearch | 25 +++++++++++++++++++ 10 files changed, 100 insertions(+) create mode 100644 roles/float-base-docker/templates/assetmon.default.j2 create mode 100644 roles/float-infra-assetmon/handlers/main.yml create mode 100644 roles/float-infra-assetmon/tasks/main.yml create mode 100644 roles/float-infra-assetmon/templates/server.yml.j2 diff --git a/playbooks/all.yml b/playbooks/all.yml index 27bc4c56..ce743592 100644 --- a/playbooks/all.yml +++ b/playbooks/all.yml @@ -43,3 +43,6 @@ roles: - float-infra-sso-server +- hosts: assets + roles: + - float-infra-assetmon diff --git a/plugins/inventory/float.py b/plugins/inventory/float.py index 1e29228a..4acc3355 100644 --- a/plugins/inventory/float.py +++ b/plugins/inventory/float.py @@ -38,6 +38,9 @@ DEFAULT_SERVICE_CREDENTIALS = [ { 'name': 'auth-server', }, + { + 'name': 'assetmon-client', + }, ] diff --git a/roles/float-base-docker/tasks/main.yml b/roles/float-base-docker/tasks/main.yml index d5d09ae6..6d08dcfc 100644 --- a/roles/float-base-docker/tasks/main.yml +++ b/roles/float-base-docker/tasks/main.yml @@ -1,5 +1,10 @@ --- +- name: Configure asset tracking + template: + src: "assetmon.default.j2" + dest: "/etc/default/assetmon" + - include_tasks: docker.yml when: "container_runtime == 'docker'" diff --git a/roles/float-base-docker/templates/assetmon.default.j2 b/roles/float-base-docker/templates/assetmon.default.j2 new file mode 100644 index 00000000..d9c0af49 --- /dev/null +++ b/roles/float-base-docker/templates/assetmon.default.j2 @@ -0,0 +1 @@ +OPTIONS="--server=https://assets.{{ domain }}:3798 --tls-cert=/etc/credentials/x509/assetmon-client/client/cert.pem --tls-key=/etc/credentials/x509/assetmon-client/client/private_key.pem --tls-ca=/etc/credentials/x509/assetmon-client/ca.pem" diff --git a/roles/float-base/tasks/apt.yml b/roles/float-base/tasks/apt.yml index 054402a1..3e69364b 100644 --- a/roles/float-base/tasks/apt.yml +++ b/roles/float-base/tasks/apt.yml @@ -123,6 +123,7 @@ - auditd - audisp-json - prometheus-node-exporter + - assetmon - name: Install extra packages apt: diff --git a/roles/float-infra-assetmon/handlers/main.yml b/roles/float-infra-assetmon/handlers/main.yml new file mode 100644 index 00000000..acbc01c5 --- /dev/null +++ b/roles/float-infra-assetmon/handlers/main.yml @@ -0,0 +1,6 @@ +--- + +- listen: reload assetmon + systemd: + name: docker-assets-http.service + state: restarted diff --git a/roles/float-infra-assetmon/tasks/main.yml b/roles/float-infra-assetmon/tasks/main.yml new file mode 100644 index 00000000..0334b4e7 --- /dev/null +++ b/roles/float-infra-assetmon/tasks/main.yml @@ -0,0 +1,18 @@ +--- + +- name: Create /etc/assetmon + file: + path: "/etc/assetmon" + state: directory + owner: root + group: docker-assets + mode: 0750 + +- name: Configure asset tracking server + template: + src: "server.yml.j2" + dest: "/etc/assetmon/server.yml" + owner: root + group: docker-assets + mode: 0640 + notify: reload assetmon diff --git a/roles/float-infra-assetmon/templates/server.yml.j2 b/roles/float-infra-assetmon/templates/server.yml.j2 new file mode 100644 index 00000000..4b79449d --- /dev/null +++ b/roles/float-infra-assetmon/templates/server.yml.j2 @@ -0,0 +1,13 @@ +db_uri: /var/lib/assetmon/assets.db +http_server: + request_timeout: 30 + tls: + cert: "/etc/credentials/x509/assetmon/server/cert.pem" + key: "/etc/credentials/x509/assetmon/server/private_key.pem" + ca: "/etc/credentials/x509/assetmon/ca.pem" + acl: + allow: + - path: "/api/v1/.*" + cn: "assetmon-client.investici.org" + - path: ".*" + cn: ".*" diff --git a/services.yml.default b/services.yml.default index 4e87e25b..a901d767 100644 --- a/services.yml.default +++ b/services.yml.default @@ -339,3 +339,28 @@ acme: systemd_services: - acmeserver.service +assets: + num_instances: 1 + scheduling_group: backend + service_credentials: + - name: assetmon + containers: + - name: http + image: registry.git.autistici.org/ai3/tools/assetmon:master + volumes: + - /etc/assetmon/server.yml: /etc/assetmon/server.yml + - /var/lib/assetmon: /var/lib/assetmon + ports: + - 3798 + monitoring_endpoints: + - job_name: assets + port: 3798 + scheme: https + public_endpoints: + - name: assets + port: 3798 + scheme: https + datasets: + - name: db + path: /var/lib/assetmon + owner: docker-assets diff --git a/services.yml.no-elasticsearch b/services.yml.no-elasticsearch index 8b6ccd28..aac52c09 100644 --- a/services.yml.no-elasticsearch +++ b/services.yml.no-elasticsearch @@ -267,3 +267,28 @@ acme: systemd_services: - acmeserver.service +assets: + num_instances: 1 + scheduling_group: backend + service_credentials: + - name: assetmon + containers: + - name: http + image: registry.git.autistici.org/ai3/tools/assetmon:master + volumes: + - /etc/assetmon/server.yml: /etc/assetmon/server.yml + - /var/lib/assetmon: /var/lib/assetmon + ports: + - 3798 + monitoring_endpoints: + - job_name: assets + port: 3798 + scheme: https + public_endpoints: + - name: assets + port: 3798 + scheme: https + datasets: + - name: db + path: /var/lib/assetmon + owner: docker-assets -- GitLab