Compare commits
No commits in common. "7947e3791cc042cca2b587125e8ee32a86a4d378" and "2df78721e449b4d16c7d227834a965bf52a0051f" have entirely different histories.
7947e3791c
...
2df78721e4
1
.gitignore
vendored
1
.gitignore
vendored
@ -20,4 +20,3 @@ playbooks/beta/files/*.pub
|
|||||||
docker/beta/shockrah.xyz/
|
docker/beta/shockrah.xyz/
|
||||||
docker/beta/resume.shockrah.xyz/
|
docker/beta/resume.shockrah.xyz/
|
||||||
k8s/config.yaml
|
k8s/config.yaml
|
||||||
infra/**/tfplan
|
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
networks:
|
|
||||||
gitea:
|
|
||||||
external: false
|
|
||||||
|
|
||||||
|
|
||||||
services:
|
|
||||||
gitea:
|
|
||||||
image: gitea/gitea:latest
|
|
||||||
container_name: gitea
|
|
||||||
environment:
|
|
||||||
- USER_UID=1000
|
|
||||||
- USER_GID=1000
|
|
||||||
restart: always
|
|
||||||
networks:
|
|
||||||
- gitea
|
|
||||||
volumes:
|
|
||||||
- /opt/containers/gitea:/data
|
|
||||||
- /etc/timezone:/etc/timezone:ro
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
ports:
|
|
||||||
- "3000:3000"
|
|
||||||
- "2222:22"
|
|
@ -1,13 +0,0 @@
|
|||||||
What is this
|
|
||||||
============
|
|
||||||
|
|
||||||
Here we contain scripts to build out all the containers that are run.
|
|
||||||
All of these images are based on images that are made from other projects
|
|
||||||
|
|
||||||
docker-compose.yaml
|
|
||||||
===================
|
|
||||||
|
|
||||||
Services that are more/less "special" go here since most of the stuff that is
|
|
||||||
run on the main host are basically just static html websites
|
|
||||||
|
|
||||||
|
|
@ -37,7 +37,6 @@ locals {
|
|||||||
{ name = "www.shockrah.xyz", records = [ var.vultr_host ] },
|
{ name = "www.shockrah.xyz", records = [ var.vultr_host ] },
|
||||||
{ name = "resume.shockrah.xyz", records = [ var.vultr_host ] },
|
{ name = "resume.shockrah.xyz", records = [ var.vultr_host ] },
|
||||||
{ name = "immich.shockrah.xyz", records = [ "45.32.92.196" ] },
|
{ name = "immich.shockrah.xyz", records = [ "45.32.92.196" ] },
|
||||||
{ name = "git.shockrah.xyz", records = [ var.vultr_host ] },
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
vars:
|
vars:
|
||||||
websites:
|
websites:
|
||||||
- shockrah.xyz
|
- shockrah.xyz
|
||||||
- git.shockrah.xyz
|
|
||||||
- temper.tv
|
- temper.tv
|
||||||
- resume.shockrah.xyz
|
- resume.shockrah.xyz
|
||||||
tasks:
|
tasks:
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
- hosts: webhost
|
|
||||||
remote_user: webadmin
|
|
||||||
tasks:
|
|
||||||
- name: Run docker-compose up
|
|
||||||
community.docker.docker_compose_v2:
|
|
||||||
project_src: ../../../containers/
|
|
@ -1,54 +0,0 @@
|
|||||||
# This playbook is to be executed when first setting up
|
|
||||||
# the machine so we'll have to login as root, but in doing so
|
|
||||||
# we'll setup a user which can use sudo and use pem based authentication
|
|
||||||
# this should remove the ability to login as root with a janky password
|
|
||||||
---
|
|
||||||
- hosts: webhost
|
|
||||||
remote_user: root
|
|
||||||
tasks:
|
|
||||||
- name: Ensure sudo is available
|
|
||||||
apt:
|
|
||||||
state: present
|
|
||||||
update_cache: true
|
|
||||||
pkg:
|
|
||||||
- sudo
|
|
||||||
- zsh
|
|
||||||
- name: Create webadmin user
|
|
||||||
user:
|
|
||||||
name: webadmin
|
|
||||||
state: present
|
|
||||||
shell: /bin/zsh
|
|
||||||
groups:
|
|
||||||
- nginx
|
|
||||||
append: yes
|
|
||||||
- name: webadmin key copy
|
|
||||||
authorized_key:
|
|
||||||
user: webadmin
|
|
||||||
state: present
|
|
||||||
key: "{{ lookup('file', '~/.ssh/vultr/webadmin.pem.pub') }}"
|
|
||||||
- name: Add webadmin to sudoers
|
|
||||||
copy:
|
|
||||||
dest: "/etc/sudoers.d/webadmin"
|
|
||||||
content: "webadmin ALL=(ALL) NOPASSWD: ALL"
|
|
||||||
- name: Disable Password Authentication
|
|
||||||
lineinfile:
|
|
||||||
dest: /etc/ssh/sshd_config
|
|
||||||
line: PasswordAuthentication no
|
|
||||||
state: present
|
|
||||||
backup: yes
|
|
||||||
notify:
|
|
||||||
- restart ssh
|
|
||||||
- name: Disable root login
|
|
||||||
lineinfile:
|
|
||||||
dest: /etc/ssh/sshd_config
|
|
||||||
line: PermitRootLogin no
|
|
||||||
state: present
|
|
||||||
backup: yes
|
|
||||||
notify:
|
|
||||||
- restart ssh
|
|
||||||
handlers:
|
|
||||||
- name: restart ssh
|
|
||||||
service:
|
|
||||||
name: sshd
|
|
||||||
state: restarted
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
|||||||
---
|
|
||||||
- hosts: webhost
|
|
||||||
remote_user: webadmin
|
|
||||||
become: true
|
|
||||||
tasks:
|
|
||||||
- name: Install docker and docker-compose
|
|
||||||
apt:
|
|
||||||
update_cache: true
|
|
||||||
pkg:
|
|
||||||
- ca-certificates
|
|
||||||
- curl
|
|
||||||
- name: Setup keyring
|
|
||||||
command:
|
|
||||||
cmd: "install -m 0755 -d /etc/apt/keyrings"
|
|
||||||
- name: Download docker gpg key
|
|
||||||
get_url:
|
|
||||||
url: https://download.docker.com/linux/ubuntu/gpg
|
|
||||||
dest: /etc/apt/keyrings/docker.asc
|
|
||||||
- name: Set perms on /etc/apt/keyrings/docker.asc
|
|
||||||
file:
|
|
||||||
dest: /etc/apt/keyrings/docker.asc
|
|
||||||
mode: a+r
|
|
||||||
- name: Ensure docker.lst exists
|
|
||||||
copy:
|
|
||||||
content: ''
|
|
||||||
dest: /etc/apt/sources.list.d/docker.list
|
|
||||||
force: false
|
|
||||||
group: root
|
|
||||||
owner: root
|
|
||||||
mode: 0644
|
|
||||||
- name: Ensure docker.lst is present for apt
|
|
||||||
lineinfile:
|
|
||||||
line: "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu jammy stable\n"
|
|
||||||
dest: /etc/apt/sources.list.d/docker.list
|
|
||||||
state: present
|
|
||||||
- name: install docker packages
|
|
||||||
apt:
|
|
||||||
update_cache: true
|
|
||||||
pkg:
|
|
||||||
- docker-ce
|
|
||||||
- docker-ce-cli
|
|
||||||
- containerd.io
|
|
||||||
- docker-buildx-plugin
|
|
||||||
- docker-compose-plugin
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -33,13 +33,4 @@ resource vultr_firewall_rule ssh_v4 {
|
|||||||
port = "22"
|
port = "22"
|
||||||
}
|
}
|
||||||
|
|
||||||
resource vultr_firewall_rule gitea_ssh {
|
|
||||||
firewall_group_id = vultr_firewall_group.host.id
|
|
||||||
protocol = "tcp"
|
|
||||||
ip_type = "v4"
|
|
||||||
subnet = "0.0.0.0"
|
|
||||||
subnet_size = 0
|
|
||||||
port = "2222"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
resource kubernetes_ingress_v1 athens {
|
|
||||||
metadata {
|
|
||||||
name = var.shockrahxyz.name
|
|
||||||
namespace = kubernetes_namespace.websites.metadata.0.name
|
|
||||||
labels = {
|
|
||||||
app = "websites"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
spec {
|
|
||||||
rule {
|
|
||||||
host = "test.shockrah.xyz"
|
|
||||||
http {
|
|
||||||
path {
|
|
||||||
backend {
|
|
||||||
service {
|
|
||||||
name = var.shockrahxyz.name
|
|
||||||
port {
|
|
||||||
number = 80
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
path = "/"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
resource kubernetes_service athens_lb {
|
|
||||||
metadata {
|
|
||||||
name = "athens-websites"
|
|
||||||
namespace = kubernetes_namespace.websites.metadata.0.name
|
|
||||||
labels = {
|
|
||||||
app = "websites"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
spec {
|
|
||||||
selector = {
|
|
||||||
app = kubernetes_ingress_v1.athens.metadata.0.labels.app
|
|
||||||
}
|
|
||||||
port {
|
|
||||||
port = 80
|
|
||||||
target_port = 80
|
|
||||||
}
|
|
||||||
type = "LoadBalancer"
|
|
||||||
external_ips = [ var.cluster.ip ]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
Plain nginx for now so that we can test out reverse dns
|
# Plain nginx for now so that we can test out reverse dns
|
||||||
resource kubernetes_pod shockrah {
|
resource kubernetes_pod shockrah {
|
||||||
metadata {
|
metadata {
|
||||||
name = var.shockrahxyz.name
|
name = var.shockrahxyz.name
|
||||||
@ -18,4 +18,46 @@ resource kubernetes_pod shockrah {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Expose the pod above with a simple service
|
||||||
|
resource kubernetes_service shockrah {
|
||||||
|
metadata {
|
||||||
|
name = var.shockrahxyz.name
|
||||||
|
namespace = kubernetes_namespace.websites.metadata.0.name
|
||||||
|
}
|
||||||
|
spec {
|
||||||
|
selector = {
|
||||||
|
app = kubernetes_pod.shockrah.metadata.0.labels.app
|
||||||
|
}
|
||||||
|
port {
|
||||||
|
port = var.shockrahxyz.port
|
||||||
|
target_port = 80
|
||||||
|
}
|
||||||
|
type = "ExternalName"
|
||||||
|
external_name = var.shockrahxyz.dns
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource kubernetes_ingress_v1 shockrah {
|
||||||
|
metadata {
|
||||||
|
name = "shockrah"
|
||||||
|
}
|
||||||
|
spec {
|
||||||
|
rule {
|
||||||
|
http {
|
||||||
|
path {
|
||||||
|
path = "/"
|
||||||
|
backend {
|
||||||
|
service {
|
||||||
|
name = var.shockrahxyz.name
|
||||||
|
port {
|
||||||
|
number = var.shockrahxyz.port
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,9 +27,3 @@ variable shockrahxyz {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
variable cluster {
|
|
||||||
type = object({
|
|
||||||
ip = string
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user