wip IaC
This commit is contained in:
parent
b0d2928e83
commit
74eceade5e
3
ansible/README.md
Normal file
3
ansible/README.md
Normal file
@ -0,0 +1,3 @@
|
||||
# Ansible
|
||||
|
||||
## Running
|
||||
3
ansible/hosts.ini
Normal file
3
ansible/hosts.ini
Normal file
@ -0,0 +1,3 @@
|
||||
[workers]
|
||||
jenkins-server ansible_host=192.168.100.30
|
||||
vm-mixed-100-98 ansible_host=192.168.100.98
|
||||
43
ansible/init_worker_vm.yaml
Normal file
43
ansible/init_worker_vm.yaml
Normal file
@ -0,0 +1,43 @@
|
||||
---
|
||||
- name: Initialise worker VM
|
||||
hosts: workers
|
||||
become: yes
|
||||
|
||||
tasks:
|
||||
- name: Install essentials
|
||||
apt:
|
||||
pkg:
|
||||
- apt-transport-https
|
||||
- ca-certificates
|
||||
- curl
|
||||
- software-properties-common
|
||||
- python3-pip
|
||||
- virtualenv
|
||||
- python3-setuptools
|
||||
- vim
|
||||
- git
|
||||
- btop
|
||||
state: latest
|
||||
update_cache: true
|
||||
|
||||
- name: Add Docker GPG apt Key
|
||||
apt_key:
|
||||
url: https://download.docker.com/linux/ubuntu/gpg
|
||||
state: present
|
||||
|
||||
- name: Add Docker Repository
|
||||
apt_repository:
|
||||
repo: deb https://download.docker.com/linux/ubuntu focal stable
|
||||
state: present
|
||||
|
||||
- name: Update apt and install docker-ce
|
||||
apt:
|
||||
name: docker-ce
|
||||
state: latest
|
||||
update_cache: true
|
||||
|
||||
- name: Start and enable Docker
|
||||
service:
|
||||
name: docker
|
||||
state: started
|
||||
enabled: yes
|
||||
8
ansible/run_ansible
Executable file
8
ansible/run_ansible
Executable file
@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
|
||||
if ! command -v ansible &> /dev/null; then
|
||||
sudo apt update
|
||||
sudo apt install ansible
|
||||
fi
|
||||
|
||||
ansible-playbook -i hosts.ini --ask-become-pass $@
|
||||
21
docker/vm-tools-100-55/export_ip.py
Executable file
21
docker/vm-tools-100-55/export_ip.py
Executable file
@ -0,0 +1,21 @@
|
||||
import json
|
||||
|
||||
data = json.loads(json_data)
|
||||
|
||||
env_file = "env_vars.sh"
|
||||
|
||||
with open(env_file, "w") as f:
|
||||
f.write("# Environment variables generated from JSON data\n")
|
||||
for ip, services in data.items():
|
||||
if services:
|
||||
for service in services:
|
||||
_service = service["name"]
|
||||
ports = service["ports"]
|
||||
i = 1
|
||||
for port in ports:
|
||||
f.write(f"export {_service}_{i}_IP={ip}\n")
|
||||
f.write(f"export {_service}_{i}_PORT={port['port']}\n")
|
||||
i += 1
|
||||
|
||||
import os
|
||||
os.chmod(env_file, 0o755)
|
||||
3
docker/vm-tools-100-55/gitea/.env
Normal file
3
docker/vm-tools-100-55/gitea/.env
Normal file
@ -0,0 +1,3 @@
|
||||
DOCKER_PARENT_PATH="/home/${USER}/docker"
|
||||
SVC_PATH="${DOCKER_PARENT_PATH}/audiobookshelf"
|
||||
MEDIA_PATH="/home/${USER}/Media"
|
||||
18
docker/vm-tools-100-55/gitea/docker-compose.yml
Normal file
18
docker/vm-tools-100-55/gitea/docker-compose.yml
Normal file
@ -0,0 +1,18 @@
|
||||
version: "3"
|
||||
services:
|
||||
server:
|
||||
image: docker.io/gitea/gitea:1.23.1
|
||||
container_name: gitea
|
||||
environment:
|
||||
- USER_UID=1000
|
||||
- USER_GID=1000
|
||||
restart: always
|
||||
networks:
|
||||
- gitea
|
||||
volumes:
|
||||
- ./gitea:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
ports:
|
||||
- "3000:3000"
|
||||
- "22:22"
|
||||
10
docker/vm-tools-100-55/gitea/init.sh
Executable file
10
docker/vm-tools-100-55/gitea/init.sh
Executable file
@ -0,0 +1,10 @@
|
||||
#! /usr/bin/bash
|
||||
|
||||
source ./.env
|
||||
set -xe
|
||||
|
||||
mkdir -p "${DOCKER_PARENT_PATH}"
|
||||
mkdir -p "${SVC_PATH}"
|
||||
mkdir -p "${SVC_PATH}/config"
|
||||
mkdir -p "${SVC_PATH}/metadata"
|
||||
|
||||
1
docker/vm-tools-100-55/services.env
Executable file
1
docker/vm-tools-100-55/services.env
Executable file
@ -0,0 +1 @@
|
||||
# Environment variables generated from JSON data
|
||||
2
jenkins/.env
Normal file
2
jenkins/.env
Normal file
@ -0,0 +1,2 @@
|
||||
APPS_JENKINS=/home/${USER}/apps/jenkins
|
||||
JENKINS_EXT_ADDRESS="192.168.100.30:4456"
|
||||
13
jenkins/Dockerfile
Normal file
13
jenkins/Dockerfile
Normal file
@ -0,0 +1,13 @@
|
||||
FROM jenkins/jenkins:2.479.3-jdk17
|
||||
USER root
|
||||
RUN apt-get update && apt-get install -y lsb-release
|
||||
RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \
|
||||
https://download.docker.com/linux/debian/gpg
|
||||
RUN echo "deb [arch=$(dpkg --print-architecture) \
|
||||
signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \
|
||||
https://download.docker.com/linux/debian \
|
||||
$(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
|
||||
RUN apt-get update && apt-get install -y docker-ce-cli
|
||||
USER jenkins
|
||||
COPY plugins.txt /var/jenkins_home/plugins.txt
|
||||
RUN jenkins-plugin-cli --plugin-dir /var/jenkins_home/plugins --plugins $(cat /var/jenkins_home/plugins.txt)
|
||||
21
jenkins/docker-compose.yml
Normal file
21
jenkins/docker-compose.yml
Normal file
@ -0,0 +1,21 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
jenkins-docker:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
container_name: jenkins-docker
|
||||
restart: unless-stopped
|
||||
privileged: true
|
||||
environment:
|
||||
- DOCKER_TLS_CERTDIR=/certs
|
||||
volumes:
|
||||
- jenkins-docker-certs:/certs/client
|
||||
- ${APPS_JENKINS}:/var/jenkins_home
|
||||
ports:
|
||||
- "${JENKINS_EXT_ADDRESS}:2376"
|
||||
command: --storage-driver overlay2
|
||||
|
||||
volumes:
|
||||
jenkins-docker-certs:
|
||||
0
jenkins/plugins.txt
Normal file
0
jenkins/plugins.txt
Normal file
Loading…
x
Reference in New Issue
Block a user