From eeeaeececf7ca075f6a091a143f509b868f0e0cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=BE=D0=BB=D0=B0=D0=B9=20=D0=97=D0=B0?= =?UTF-8?q?=D1=80=D0=B5=D1=86=D0=BA=D0=B8=D0=B9?= Date: Tue, 29 Oct 2024 06:54:15 +0300 Subject: [PATCH] Terraform --- .DS_Store | Bin 0 -> 6148 bytes Docker/.DS_Store | Bin 0 -> 6148 bytes Docker/NPM/docker-compose.yaml | 38 ++++++++++++ Docker/gitea/docker-compose.yaml | 51 ++++++++++++++++ Docker/nextcloud/docker-compose.yaml | 37 ++++++++++++ NPM.tf | 52 +++++++++++++++++ cloud-init/.DS_Store | Bin 0 -> 6148 bytes cloud-init/NPM.yml | 19 ++++++ cloud-init/gitea.yml | 19 ++++++ cloud-init/next-cloud.yml | 19 ++++++ cloud-init/planka.yml | 84 +++++++++++++++++++++++++++ gitea.tf | 52 +++++++++++++++++ main.tf | 16 +++++ nextcloud.tf | 52 +++++++++++++++++ planka.tf | 52 +++++++++++++++++ vars.tf | 20 +++++++ 16 files changed, 511 insertions(+) create mode 100644 .DS_Store create mode 100644 Docker/.DS_Store create mode 100644 Docker/NPM/docker-compose.yaml create mode 100644 Docker/gitea/docker-compose.yaml create mode 100644 Docker/nextcloud/docker-compose.yaml create mode 100644 NPM.tf create mode 100644 cloud-init/.DS_Store create mode 100644 cloud-init/NPM.yml create mode 100644 cloud-init/gitea.yml create mode 100644 cloud-init/next-cloud.yml create mode 100644 cloud-init/planka.yml create mode 100644 gitea.tf create mode 100644 main.tf create mode 100644 nextcloud.tf create mode 100644 planka.tf create mode 100644 vars.tf diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..40c00b709529668a3ff239c1fb9d414959599392 GIT binary patch literal 6148 zcmeHK!A`A%P#?&rK&|H{dS%KiqNPPvS=7ljZV-onpx-85QHfdFH7T_v2(@ z_oF+SU2`6|bGz@}_`|eU-M`>r-1oy_BocgYh#~j4e(3Sk=1J&HM6M$pM%gI$saHwwA-z-*{p0F93G!v^+v%<$loNP4F5eLdkW|9j>gK`UY#fmc=&{V z$}K_{s~^A!h7fH?-3vASs&~$hM$Ld`V0#%*`=(LZUJ7*OngPwg8U|>8Fi{CDg_%UL zb>JXc07SY*3PGEC3Cb}QS_(6X=s{sJ6;Y-#)nYK2j_an1vlM0$WjZj`d@%K9raBZR z-j2^VMK~}^q8>E^nt??I@^V_G^Z#;v|G$`|XPN=cz(z5^3SFmbV@c|4T`G>wS`+mV rm4xCliQg$`h@%)|=_szD3c+=g3`9#|CJ|Rq^hH3>pa;#spEB?ToJERy literal 0 HcmV?d00001 diff --git a/Docker/.DS_Store b/Docker/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d0e68ec7938d702395e6118a759c5df7e3a4eb3f GIT binary patch literal 6148 zcmeH~%}T>S5XWb2)kG0`Q1BuIyo%OO5HGRn!Gj`3^q^7`Q#2T}rA@6+3OVb;c=btq z9i7=7A^q?wT6SRezuBEhc7L$DSpX1~R=5gK0ssr0v^a&u5Tkzb0UP5M8&#-x_=mB) z4PqG##F_>}z!3O*1ZeG!!yQDBLJjikm$rmm^yN=wYUsJhpxvzVN`DXPanwx9l^D^-L7rTEw1dGRv+TWM82po zgTTE>*$nHqykaFcqbIMC#4@?VR?4s;K_bt{DcaYoXeVN)#)Jk@*()kf^R57eI4KL zsBjRjR#O@RhCnZYf_^N~`G4^9{l7QKJQ)Ipz(^4g#eHwTf>YwNbzpLI);j1n=wuX^ nX;mp$@NujvbQI5{E5kmADyS}NrWISz%#VP=U: + - '80:80' # Public HTTP Port + - '443:443' # Public HTTPS Port + - '81:81' # Admin Web Port + # Add any other Stream port you want to expose + # - '21:21' # FTP + environment: + # Mysql/Maria connection parameters: + DB_MYSQL_HOST: "db" + DB_MYSQL_PORT: 3306 + DB_MYSQL_USER: "npm" + DB_MYSQL_PASSWORD: "npm" + DB_MYSQL_NAME: "npm" + # Uncomment this if IPv6 is not enabled on your host + # DISABLE_IPV6: 'true' + volumes: + - ./data:/data + - ./letsencrypt:/etc/letsencrypt + depends_on: + - db + + db: + image: 'jc21/mariadb-aria:latest' + restart: unless-stopped + environment: + MYSQL_ROOT_PASSWORD: 'npm' + MYSQL_DATABASE: 'npm' + MYSQL_USER: 'npm' + MYSQL_PASSWORD: 'npm' + MARIADB_AUTO_UPGRADE: '1' + volumes: + - ./mysql:/var/lib/mysql \ No newline at end of file diff --git a/Docker/gitea/docker-compose.yaml b/Docker/gitea/docker-compose.yaml new file mode 100644 index 0000000..1314a9c --- /dev/null +++ b/Docker/gitea/docker-compose.yaml @@ -0,0 +1,51 @@ +version: "3" + +services: + traefik: + image: traefik:v2.9 + container_name: traefik + ports: + - "80:80" + - "443:443" + command: + - "--api.insecure=true" # Открытая панель управления Traefik, не рекомендуется для продакшена + - "--providers.docker=true" # Включаем динамическое определение маршрутов на основе Docker контейнеров + - "--entrypoints.web.address=:80" # HTTP (80 порт) + - "--entrypoints.websecure.address=:443" # HTTPS (443 порт) + - "--certificatesresolvers.myresolver.acme.httpchallenge=true" # Включаем HTTP challenge для Let's Encrypt + - "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web" # Указываем HTTP endpoint для ACME + - "--certificatesresolvers.myresolver.acme.email=gba404@gmail.com" # Ваш email для регистрации с Let's Encrypt + - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json" # Файл для хранения сертификатов + volumes: + - ./letsencrypt:/letsencrypt # Хранение сертификатов + - /var/run/docker.sock:/var/run/docker.sock:ro # Доступ к Docker сокету + + gitea: + image: gitea/gitea:latest + container_name: gitea + environment: + - USER_UID=1000 + - USER_GID=1000 + - DB_TYPE=mysql + - DB_HOST=db:3306 + - DB_NAME=gitea + - DB_USER=gitea + - DB_PASSWD=gitea_pass + - ROOT_URL=https://git.playgba.ru + labels: + - "traefik.enable=true" + - "traefik.http.routers.gitea.rule=Host(`git.playgba.ru`)" # Определение маршрута на основе домена + - "traefik.http.routers.gitea.entrypoints=websecure" # Используем HTTPS + - "traefik.http.routers.gitea.tls.certresolver=myresolver" # Указываем резолвер для получения сертификатов + - "traefik.http.services.gitea.loadbalancer.server.port=3000" # Порт, на который проксируется запрос + + db: + image: mysql:8.0 + container_name: gitea_db + environment: + - MYSQL_ROOT_PASSWORD=8148 + - MYSQL_DATABASE=gitea + - MYSQL_USER=gitea + - MYSQL_PASSWORD=1488 + volumes: + - ./mysql:/var/lib/mysql diff --git a/Docker/nextcloud/docker-compose.yaml b/Docker/nextcloud/docker-compose.yaml new file mode 100644 index 0000000..af31447 --- /dev/null +++ b/Docker/nextcloud/docker-compose.yaml @@ -0,0 +1,37 @@ +version: '3' + +services: + nextcloud: + image: nextcloud:latest + restart: always + ports: + - 8080:80 + volumes: + - ./nextcloud:/var/www/html + environment: + - POSTGRES_HOST=db + - POSTGRES_PASSWORD=8148 + - POSTGRES_USER=next + - POSTGRES_DB=nextcloud + depends_on: + - db + - redis + + db: + image: postgres:15 + restart: always + volumes: + - ./db:/var/lib/postgresql/data + environment: + - POSTGRES_DB=nextcloud + - POSTGRES_USER=next + - POSTGRES_PASSWORD=8148 + + redis: + image: redis:bookworm + restart: always + command: redis-server --requirepass 8148 + environment: + - REDIS_PASSWORD=8148 + volumes: + - ./redis:/data diff --git a/NPM.tf b/NPM.tf new file mode 100644 index 0000000..64c8abe --- /dev/null +++ b/NPM.tf @@ -0,0 +1,52 @@ +resource "proxmox_vm_qemu" "NPM" { + count = 1 + name = "NPM" + target_node = var.proxmox_host + clone = "ubuntu-2404-template" + agent = 1 + os_type = "cloud-init" + cores = 2 + sockets = 1 + cpu = "host" + vmid = 101 + vcpus = 1 + memory = 2048 + scsihw = "virtio-scsi-pci" + bootdisk = "scsi0" + full_clone = true + + # Основной диск + disk { + slot = "scsi0" + size = "10G" + type = "disk" + storage = "local-lvm" + iothread = true + backup = true + } + + # Диск для cloud-init + disk { + slot = "scsi1" + type = "cloudinit" + storage = "local-lvm" + } + + # Сетевой интерфейс + network { + model = "virtio" + bridge = "vmbr0" + } + + # Настройки сети для cloud-init + ipconfig0 = "ip=192.168.0.101/24,gw=192.168.0.1" + + ciuser = "root" + cipassword = "8148" + cicustom = "user=local:snippets/NPM.yml" + + # Игнорирование изменений после создания виртуальной машины + lifecycle { + ignore_changes = [network, disk, bootdisk] + } +} diff --git a/cloud-init/.DS_Store b/cloud-init/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b85b782356133edd819d3c984a63c84abce37355 GIT binary patch literal 6148 zcmeHK%Sr=55UkdKQ9*LdMVKEj;2*3Z9y}-kf51FM#MSj+KyQ2ZWBf#|o^BtzZmtrf z8)m9!x@%^(VCMlq#;fHqFaXeJQ51DLOuIWnTb|q_N*-f|5ngbQ@~rF_XcN11?Yp?a zEuL_VAM39c^Rk*Vs?waWjNY@+0}k-O>}PV0ut13lD=fdiy}^BJad&WmDbBmI<*=2# zhewV-<9v7PRwu754x3@2KqwFjgaVlN<}j+K>^N7?o&L@h65Do&Cx43dh>e=n#K=h|m1_c#%9i$4@yO zQW!=Z3WNep1-7j@(DVP4zf9*Nze$N!C=d$#GX