manage lewis with nix
move docker swarm ansible to this repo move thecloud ansible to this repo support data disks in terraform
This commit is contained in:
parent
d7ef46b642
commit
111bf68a0a
92 changed files with 2730 additions and 26 deletions
8
legacy/projects/thecloud/ansible/ansible.cfg
Normal file
8
legacy/projects/thecloud/ansible/ansible.cfg
Normal file
|
@ -0,0 +1,8 @@
|
|||
[defaults]
|
||||
roles_path=~/.ansible/roles:roles:/usr/share/ansible/roles:/etc/ansible/roles
|
||||
inventory=inventory
|
||||
vault_password_file=$HOME/.config/home/ansible-vault-secret
|
||||
interpreter_python=/usr/bin/python3
|
||||
|
||||
[diff]
|
||||
always = True
|
|
@ -0,0 +1,19 @@
|
|||
apt_install_packages:
|
||||
- postgresql
|
||||
- python3-psycopg2
|
||||
- nfs-kernel-server
|
||||
- qemu-guest-agent
|
||||
|
||||
nfs_exports: []
|
||||
|
||||
redis_bind_interface: 0.0.0.0
|
||||
redis_requirepass: !vault |
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
37323965303638333264653936616563323235363463396330363836653865393835346263383838
|
||||
3030386166316365633538353539623066626434313332390a616131303434373264633934356361
|
||||
30356335643638656433326230363462373533396533366261346630353163353137333865303132
|
||||
3536636165366631310a643538353331366130663464386565343331653031333061333330613532
|
||||
34663932653734336239303536323331396435386332666133343033373566386562326136656330
|
||||
63393766353063646361643565323238376334333637363232626139333664643065613237666532
|
||||
31623032613763303136353232323837376637336431306534306336356165363039666634336433
|
||||
30376464323862373833
|
5
legacy/projects/thecloud/ansible/inventory/hosts.yml
Normal file
5
legacy/projects/thecloud/ansible/inventory/hosts.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
all:
|
||||
hosts:
|
||||
thecloud:
|
||||
ansible_user: root
|
||||
ansible_host: thecloud.dmz
|
6
legacy/projects/thecloud/ansible/requirements.yml
Normal file
6
legacy/projects/thecloud/ansible/requirements.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
- name: apt
|
||||
src: https://github.com/sunscrapers/ansible-role-apt.git
|
||||
scm: git
|
||||
- name: cloudinit_wait
|
||||
src: https://git.kun.is/pim/ansible-role-cloudinit-wait
|
||||
scm: git
|
|
@ -0,0 +1,4 @@
|
|||
- name: restart postgres
|
||||
systemd:
|
||||
name: postgresql
|
||||
state: restarted
|
|
@ -0,0 +1,15 @@
|
|||
- name: Open postgres port
|
||||
ini_file:
|
||||
path: /etc/postgresql/15/main/postgresql.conf
|
||||
section: null
|
||||
option: listen_addresses
|
||||
value: "'*'"
|
||||
notify: restart postgres
|
||||
|
||||
- name: Change data directory
|
||||
ini_file:
|
||||
path: /etc/postgresql/15/main/postgresql.conf
|
||||
section: null
|
||||
option: data_directory
|
||||
value: "'/mnt/data/postgresql'"
|
||||
notify: restart postgres
|
31
legacy/projects/thecloud/ansible/thecloud.yml
Normal file
31
legacy/projects/thecloud/ansible/thecloud.yml
Normal file
|
@ -0,0 +1,31 @@
|
|||
---
|
||||
- name: Wait for Cloud-Init to finish
|
||||
hosts: all
|
||||
gather_facts: no
|
||||
roles:
|
||||
- cloudinit_wait
|
||||
|
||||
- name: Setup NFS
|
||||
hosts: thecloud
|
||||
|
||||
roles:
|
||||
- {role: apt, tags: apt}
|
||||
- {role: postgresql, tags: postgresql}
|
||||
|
||||
post_tasks:
|
||||
- name: Ensure NFS exports directory exists
|
||||
file:
|
||||
path: /etc/exports.d
|
||||
state: directory
|
||||
|
||||
- name: Start NFS
|
||||
systemd:
|
||||
name: nfs-kernel-server
|
||||
state: started
|
||||
enabled: true
|
||||
|
||||
- name: Enable Qemu guest agent
|
||||
systemd:
|
||||
name: qemu-guest-agent
|
||||
state: started
|
||||
enabled: true
|
32
legacy/projects/thecloud/data/main.tf
Normal file
32
legacy/projects/thecloud/data/main.tf
Normal file
|
@ -0,0 +1,32 @@
|
|||
terraform {
|
||||
backend "pg" {
|
||||
schema_name = "thecloud-data"
|
||||
conn_str = "postgresql://terraform@jefke.hyp/terraformstates"
|
||||
}
|
||||
|
||||
required_providers {
|
||||
libvirt = {
|
||||
source = "dmacvicar/libvirt"
|
||||
version = "0.7.1" # https://github.com/dmacvicar/terraform-provider-libvirt/issues/1040
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# https://libvirt.org/uri.html#libssh-and-libssh2-transport
|
||||
provider "libvirt" {
|
||||
uri = "qemu+ssh://root@lewis.hyp/system?known_hosts=/etc/ssh/ssh_known_hosts"
|
||||
}
|
||||
|
||||
module "data_pool" {
|
||||
source = "../../../terraform_modules/setup/data"
|
||||
}
|
||||
|
||||
resource "libvirt_volume" "data" {
|
||||
name = "thecloud-data.qcow2"
|
||||
pool = "data"
|
||||
size = 1024 * 1024 * 1024 * 150
|
||||
}
|
||||
|
||||
output "data_disk_id" {
|
||||
value = libvirt_volume.data.id
|
||||
}
|
40
legacy/projects/thecloud/vm/main.tf
Normal file
40
legacy/projects/thecloud/vm/main.tf
Normal file
|
@ -0,0 +1,40 @@
|
|||
terraform {
|
||||
backend "pg" {
|
||||
schema_name = "thecloud"
|
||||
conn_str = "postgresql://terraform@jefke.hyp/terraformstates"
|
||||
}
|
||||
|
||||
required_providers {
|
||||
libvirt = {
|
||||
source = "dmacvicar/libvirt"
|
||||
version = "0.7.1" # https://github.com/dmacvicar/terraform-provider-libvirt/issues/1040
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# https://libvirt.org/uri.html#libssh-and-libssh2-transport
|
||||
provider "libvirt" {
|
||||
alias = "lewis"
|
||||
uri = "qemu+ssh://root@lewis.hyp/system?known_hosts=/etc/ssh/ssh_known_hosts"
|
||||
}
|
||||
|
||||
module "setup_lewis" {
|
||||
source = "../../../terraform_modules/setup"
|
||||
providers = {
|
||||
libvirt = libvirt.lewis
|
||||
}
|
||||
}
|
||||
|
||||
module "thecloud" {
|
||||
source = "../../../terraform_modules/debian"
|
||||
name = "thecloud"
|
||||
ram = 1024
|
||||
storage = 25
|
||||
mac = "CA:FE:C0:FF:EE:0A"
|
||||
data_disk = "/mnt/data/volumes/thecloud-data.qcow2"
|
||||
providers = {
|
||||
libvirt = libvirt.lewis
|
||||
}
|
||||
|
||||
depends_on = [ module.setup_lewis ]
|
||||
}
|
Reference in a new issue