summaryrefslogtreecommitdiff
path: root/ansible
diff options
context:
space:
mode:
Diffstat (limited to 'ansible')
-rwxr-xr-xansible/inventory.ini3
-rw-r--r--ansible/playbook.yml15
-rw-r--r--ansible/roles/plg/files/loki-config.yaml26
-rw-r--r--ansible/roles/plg/files/promtail-config.yml18
-rw-r--r--ansible/roles/plg/tasks/main.yml77
-rw-r--r--ansible/roles/plg/templates/docker-compose.yml.j245
-rw-r--r--ansible/roles/plg/vars/main.yml4
7 files changed, 178 insertions, 10 deletions
diff --git a/ansible/inventory.ini b/ansible/inventory.ini
index bc64677..8e11d16 100755
--- a/ansible/inventory.ini
+++ b/ansible/inventory.ini
@@ -1,2 +1,5 @@
[lxc]
192.168.0.150 ansible_user=root ansible_password='haslo123' ansible_ssh_common_args='-o StrictHostKeyChecking=no'
+
+[observability]
+192.168.0.120 ansible_user=root ansible_ssh_common_args='-o StrictHostKeyChecking=no'
diff --git a/ansible/playbook.yml b/ansible/playbook.yml
index 8de2f15..48d7530 100644
--- a/ansible/playbook.yml
+++ b/ansible/playbook.yml
@@ -1,10 +1,5 @@
-- name: LXC conf
- hosts: lxc
- gather_facts: yes
- become: yes
-
- tasks:
- - name: Instalacja vima
- ansible.builtin.apt:
- name: vim
- state: present
+- name: plg setup
+ hosts: observability
+ become: yes
+ roles:
+ - plg
diff --git a/ansible/roles/plg/files/loki-config.yaml b/ansible/roles/plg/files/loki-config.yaml
new file mode 100644
index 0000000..f91abe2
--- /dev/null
+++ b/ansible/roles/plg/files/loki-config.yaml
@@ -0,0 +1,26 @@
+auth_enabled: false
+
+server:
+ http_listen_port: 3100
+
+common:
+ path_prefix: /loki
+ storage:
+ filesystem:
+ chunks_directory: /loki/chunks
+ rules_directory: /loki/rules
+ replication_factor: 1
+ ring:
+ instance_addr: 127.0.0.1
+ kvstore:
+ store: inmemory
+
+schema_config:
+ configs:
+ - from: 2020-10-24
+ store: boltdb-shipper
+ object_store: filesystem
+ schema: v11
+ index:
+ prefix: index_
+ period: 24h
diff --git a/ansible/roles/plg/files/promtail-config.yml b/ansible/roles/plg/files/promtail-config.yml
new file mode 100644
index 0000000..ed06e8c
--- /dev/null
+++ b/ansible/roles/plg/files/promtail-config.yml
@@ -0,0 +1,18 @@
+server:
+ http_listen_port: 9080
+ grpc_listen_port: 0
+
+positions:
+ filename: /tmp/positions.yaml
+
+clients:
+ - url: http://loki:3100/loki/api/v1/push
+
+scrape_configs:
+- job_name: system
+ static_configs:
+ - targets:
+ - localhost
+ labels:
+ job: varlogs
+ __path__: /var/log/*log
diff --git a/ansible/roles/plg/tasks/main.yml b/ansible/roles/plg/tasks/main.yml
new file mode 100644
index 0000000..3078b68
--- /dev/null
+++ b/ansible/roles/plg/tasks/main.yml
@@ -0,0 +1,77 @@
+---
+
+- name: Install prerequisites
+ ansible.builtin.apt:
+ name:
+ - ca-certificates
+ - curl
+ - gnupg
+ state: present
+ update_cache: yes
+
+- name: Create apt keyrings dir
+ ansible.builtin.file:
+ path: /etc/apt/keyrings
+ state: directory
+ mode: '0755'
+
+- name: Add Docker GPG key
+ ansible.builtin.get_url:
+ url: https://download.docker.com/linux/debian/gpg
+ dest: /etc/apt/keyrings/docker.asc
+ mode: '0644'
+
+- name: Get system arch
+ ansible.builtin.command: dpkg --print-architecture
+ register: dpkg_arch
+ changed_when: false
+
+- name: Add Docker repo
+ ansible.builtin.apt_repository:
+ repo: "deb [arch={{ dpkg_arch.stdout }} signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian {{ ansible_distribution_release }} stable"
+ state: present
+ filename: docker
+
+- name: Install Docker
+ ansible.builtin.apt:
+ name:
+ - docker-ce
+ - docker-ce-cli
+ - containerd.io
+ - docker-compose-plugin
+ state: present
+ update_cache: yes
+
+- name: Start Docker service
+ ansible.builtin.systemd:
+ name: docker
+ state: started
+ enabled: yes
+
+- name: Create PLG dir
+ ansible.builtin.file:
+ path: "{{ plg_install_dir }}"
+ state: directory
+ mode: '0755'
+
+- name: Copy PLG configs
+ ansible.builtin.copy:
+ src: "{{ item }}"
+ dest: "{{ plg_install_dir }}/{{ item }}"
+ mode: '0644'
+ loop:
+ - loki-config.yaml
+ - promtail-config.yml
+
+- name: Template docker-compose
+ ansible.builtin.template:
+ src: docker-compose.yml.j2
+ dest: "{{ plg_install_dir }}/docker-compose.yml"
+ mode: '0644'
+
+- name: Start PLG containers
+ ansible.builtin.command: docker compose up -d
+ args:
+ chdir: "{{ plg_install_dir }}"
+ register: compose_output
+ changed_when: "'Started' in compose_output.stdout or 'Created' in compose_output.stdout"
diff --git a/ansible/roles/plg/templates/docker-compose.yml.j2 b/ansible/roles/plg/templates/docker-compose.yml.j2
new file mode 100644
index 0000000..f809737
--- /dev/null
+++ b/ansible/roles/plg/templates/docker-compose.yml.j2
@@ -0,0 +1,45 @@
+version: "3.8"
+
+networks:
+ plg_net:
+ name: plg_net
+
+services:
+ loki:
+ image: grafana/loki:latest
+ container_name: loki
+ ports:
+ - "3100:3100"
+ command: -config.file=/etc/loki/local-config.yaml
+ volumes:
+ - ./loki-config.yaml:/etc/loki/local-config.yaml:ro
+ networks:
+ - plg_net
+ restart: unless-stopped
+
+ promtail:
+ image: grafana/promtail:latest
+ container_name: promtail
+ volumes:
+ - /var/log:/var/log:ro
+ - ./promtail-config.yml:/etc/promtail/config.yml:ro
+ command: -config.file=/etc/promtail/config.yml
+ networks:
+ - plg_net
+ restart: unless-stopped
+
+ grafana:
+ image: grafana/grafana:latest
+ container_name: grafana
+ ports:
+ - "3000:3000"
+ environment:
+ - GF_SECURITY_ADMIN_PASSWORD={{ grafana_admin_password }}
+ volumes:
+ - grafana_data:/var/lib/grafana
+ networks:
+ - plg_net
+ restart: unless-stopped
+
+volumes:
+ grafana_data:
diff --git a/ansible/roles/plg/vars/main.yml b/ansible/roles/plg/vars/main.yml
new file mode 100644
index 0000000..042d008
--- /dev/null
+++ b/ansible/roles/plg/vars/main.yml
@@ -0,0 +1,4 @@
+---
+
+plg_install_dir: "/opt/plg-stack"
+grafana_admin_password: "haslo123"