Compare commits

1 Commits

Author SHA1 Message Date
4ec10f0f65 mit yamllint syntax verbessert 2025-12-16 10:47:32 +01:00
14 changed files with 43 additions and 15909 deletions

0
.ansible/.lock Normal file
View File

View File

@@ -1,70 +0,0 @@
---
name: CI/CD Pipeline
"on":
push:
branches: [main, flip_dev]
jobs:
lint:
runs-on: docker
container:
image: node:20-bullseye
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Python & linters
run: |
apt-get update && apt-get install -y python3 python3-pip bash git
pip3 install --upgrade pip
pip3 install yamllint ansible-lint
- name: Run linters
run: |
yamllint .
deploy:
runs-on: docker
container:
image: node:20-bullseye
needs: build
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Ansible & dependencies
run: |
apt-get update && apt-get install -y python3 python3-pip openssh-client bash git
pip3 install --upgrade pip
pip3 install ansible
- name: Setup SSH
shell: bash
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
SSH_PASSPHRASE: ${{ secrets.SSH_PASSPHRASE }}
run: |
set -euo pipefail
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan -H 213.95.90.157 >> ~/.ssh/known_hosts
eval "$(ssh-agent -s)"
if [ -n "${SSH_PASSPHRASE:-}" ]; then
echo "$SSH_PASSPHRASE" | ssh-add ~/.ssh/id_ed25519
else
ssh-add ~/.ssh/id_ed25519
fi
ssh -o BatchMode=yes root@213.95.90.157 true
- name: Run Ansible
run: |
ansible-playbook -i ansible/inventory.yaml site.yaml

11
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,11 @@
---
stages:
- lint
yamllint:
stage: lint
image: python:3.12-alpine
before_script:
- pip install --no-cache-dir yamllint
script:
- yamllint .

View File

@@ -1,3 +0,0 @@
{
"ansible.python.interpreterPath": "/opt/homebrew/bin/python3"
}

View File

@@ -1,19 +0,0 @@
---
extends: default
ignore: |
^venv/*
^\.venv/*
^\.gitea/*
^\.git/*
^\.ansible_test/*
^ansible_test/*
^\.ansiblelint/*
rules:
line-length:
max: 400
level: warning
trailing-spaces: disable
indentation:
spaces: 2

View File

@@ -2,5 +2,3 @@
[defaults] [defaults]
inventory = ansible/inventory.yaml inventory = ansible/inventory.yaml
roles_path = ./roles roles_path = ./roles
[ssh_connection]
ssh_args = -o BatchMode=yes -o PreferredAuthentications=publickey

View File

@@ -4,3 +4,4 @@ all:
server1: server1:
ansible_host: 213.95.90.157 ansible_host: 213.95.90.157
ansible_user: root ansible_user: root
ansible_ssh_private_key_file: /Users/sotos/.ssh/id_rsa

View File

@@ -1,11 +1,24 @@
---
- hosts: all - hosts: all
become: true become: true
roles:
- docker/snake
vars: vars:
app_dir: /opt/docker/snake app_dir: /opt/docker/snake
snake_image: dns.s-martika.com/smartika/snake-game:2.0
roles: tasks:
- role: docker/snake - name: Create app directory
vars: file:
app_dir: "{{ app_dir }}" path: "{{ app_dir }}"
snake_image: "{{ snake_image }}" state: directory
- name: Copy compose file
copy:
src: "{{ playbook_dir }}/roles/docker/snake/files/docker-compose.yaml"
dest: "{{ app_dir }}/docker-compose.yaml"
- name: Start snake container
command: docker compose up -d
args:
chdir: "{{ app_dir }}"

View File

@@ -4,7 +4,6 @@ gitea_user: smartika
gitea_token: "idNu783r4ub7ZXi" gitea_token: "idNu783r4ub7ZXi"
snake_image: dns.s-martika.com/smartika/snake-game snake_image: dns.s-martika.com/smartika/snake-game
app_dir: /opt/docker/snake
snake_tag: "1.0" snake_tag: "1.0"
snake_container_name: snake-game snake_container_name: snake-game
snake_port: 8080 snake_port: 8080

View File

@@ -1,30 +1,22 @@
--- ---
# Ensure app directory exists
- name: Create app directory
file:
path: "{{ app_dir }}"
state: directory
# Login to private registry
- name: Login to private registry - name: Login to private registry
docker_login: docker_login:
registry_url: dns.s-martika.com registry_url: dns.s-martika.com
username: "{{ gitea_user }}" username: "{{ gitea_user }}"
password: "{{ gitea_token }}" password: "{{ gitea_token }}"
# Pull latest image
- name: Pull snake-game image - name: Pull snake-game image
docker_image: docker_image:
name: "{{ snake_image }}" name: dns.s-martika.com/smartika/snake-game
tag: "1.0"
source: pull source: pull
# Run container
- name: Run snake-game container - name: Run snake-game container
docker_container: docker_container:
name: snake-game name: snake-game
image: "{{ snake_image }}" image: dns.s-martika.com/smartika/snake-game:1.0
state: started state: started
restart_policy: unless-stopped restart_policy: always
ports: ports:
- "8080:80" # host port → container port - "8080:80"
pull: yes

View File

@@ -4,33 +4,21 @@ services:
prometheus: prometheus:
image: prom/prometheus:latest image: prom/prometheus:latest
volumes: volumes:
- ./prometheus.yaml:/etc/prometheus/prometheus.yml:ro - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
ports: ports:
- "9090:9090" - "9090:9090"
networks: networks:
- snake_net - snake_net
restart: unless-stopped restart: unless-stopped
nginx-prometheus-exporter:
image: nginx/nginx-prometheus-exporter:latest
container_name: nginx-prometheus-exporter
ports:
- "9113:9113"
environment:
- NGINX_STATUS_URL=http://nginx:8080/metrics
networks:
- snake_net
grafana: grafana:
image: grafana/grafana:latest image: grafana/grafana:latest
user: "472"
volumes: volumes:
- ./grafana/provisioning:/etc/grafana/provisioning:ro - ./grafana/provisioning:/etc/grafana/provisioning:ro
- grafana_data:/var/lib/grafana - grafana_data:/var/lib/grafana
environment: environment:
GF_SECURITY_ADMIN_PASSWORD: "admin" GF_SECURITY_ADMIN_PASSWORD: "admin"
GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH: /var/lib/grafana/dashboards/home.json
ports: ports:
- "3000:3000" - "3000:3000"
networks: networks:

File diff suppressed because it is too large Load Diff

View File

@@ -2,9 +2,9 @@
apiVersion: 1 apiVersion: 1
providers: providers:
- name: 'default' - name: default
folder: 'Home' orgId: 1
folder: ""
type: file type: file
editable: true
options: options:
path: /var/lib/grafana/dashboards path: /etc/grafana/provisioning/dashboards

View File

@@ -6,7 +6,3 @@ scrape_configs:
- job_name: "prometheus" - job_name: "prometheus"
static_configs: static_configs:
- targets: ["localhost:9090"] - targets: ["localhost:9090"]
- job_name: 'nginx'
static_configs:
- targets: ['nginx-prometheus-exporter:9113']