20251215T225903CET
This commit is contained in:
48
README.md
Normal file
48
README.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# Infrastructure repository
|
||||
|
||||
This repository contains all code needed to bootstrap and maintain the
|
||||
infrastructure for COMPANY. It deploys to Vultr and uses Ansible.
|
||||
|
||||
# bootstrap.yml
|
||||
|
||||
This playbook bootstraps the mgmt network. This is a requirement for further
|
||||
deployment.
|
||||
|
||||
# shared-services/
|
||||
|
||||
These playbooks deploy the various services in the shared services network.
|
||||
|
||||
# Networks
|
||||
|
||||
transit 10.10.0.0/24
|
||||
shared-services 10.20.0.0/24
|
||||
mgmt 10.30.0.0/24
|
||||
mgmt-dev 10.30.40.0/24
|
||||
mgmt-tst 10.30.50.0/24
|
||||
mgmt-prd 10.30.60.0/24
|
||||
dev 10.40.0.0/16
|
||||
tst 10.50.0.0/16
|
||||
prd 10.60.0.0/16
|
||||
prd-id 10.60.id.0/24
|
||||
prd-id-platform 10.60.id.0/25
|
||||
prd-id-customer 10.60.id.128/25
|
||||
|
||||
# Cloud pricing November 2025
|
||||
|
||||
- 1 VPC
|
||||
- 10 2vcpu/2gb VMs
|
||||
- 500gb intra-vpc data transfer
|
||||
- monitoring enabled
|
||||
- 1 NAT gateway
|
||||
- 50gb data transfer
|
||||
- 2 public IPv4 address
|
||||
- eu hosting
|
||||
|
||||
AWS: $255/m
|
||||
DO: $202/m
|
||||
VULTR: $150
|
||||
|
||||
# Design
|
||||
|
||||
- flatcar + ipxe boot
|
||||
- custom iso
|
||||
8
TODO.md
Normal file
8
TODO.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# TODO
|
||||
|
||||
[ ] snapshot
|
||||
[x] fix duplicate vpc issue
|
||||
[-] take a look at flatcar
|
||||
[ ] switch to ipxe boot (see https://github.com/vultr/packer-plugin-vultr/issues/197)
|
||||
[ ] switch to uv python
|
||||
[-] try other preseed.cfg's from the gist
|
||||
28
build.sh
Normal file
28
build.sh
Normal file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
VULTR_API_KEY="G7QPY6RQR7TNU7G2WRVJYOQZCEOYXB23UB7Q"
|
||||
USER_DATA="$(cat user-data | base64 --wrap=0)"
|
||||
|
||||
NEW_INSTANCE=$(jq --null-input --compact-output \
|
||||
--arg user_data "${USER_DATA}" \
|
||||
'{
|
||||
"activation_email": true,
|
||||
"region": "ams",
|
||||
"plan": "vc2-1c-1gb",
|
||||
"os_id": 2625,
|
||||
"label": "debian",
|
||||
"hostname": "debian",
|
||||
"backups": "disabled",
|
||||
"enable_ipv6": false,
|
||||
"disable_public_ipv4": false,
|
||||
"ddos_protection": false,
|
||||
"user_data": $user_data,
|
||||
"user_scheme": "root"
|
||||
}')
|
||||
|
||||
curl --silent 'https://api.vultr.com/v2/instances' \
|
||||
--request POST \
|
||||
--header "Authorization: Bearer ${VULTR_API_KEY}" \
|
||||
--header 'Accept: application/json' \
|
||||
--data "${NEW_INSTANCE}" | jq -r '.instance.id'
|
||||
6
provision.yml
Normal file
6
provision.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
- name: provision debian image
|
||||
hosts: localhost
|
||||
connection: local
|
||||
|
||||
tasks:
|
||||
- ping:
|
||||
32
user-data
Normal file
32
user-data
Normal file
@@ -0,0 +1,32 @@
|
||||
#cloud-config
|
||||
users:
|
||||
- name: ghost
|
||||
gecos: ghost
|
||||
primary_group: ghost
|
||||
groups: [users, sudo]
|
||||
shell: /bin/bash
|
||||
sudo: "ALL=(ALL) NOPASSWD:ALL"
|
||||
ssh_authorized_keys:
|
||||
- "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHpi1yQ9KZWw6dIiYMkWdqTCgcP/4/s4wu8GWe3toIrz mail@svdb.co"
|
||||
ssh_pwauth: true
|
||||
|
||||
hostname: debian
|
||||
|
||||
package_reboot_if_required: true
|
||||
package_update: true
|
||||
package_upgrade: true
|
||||
packages:
|
||||
- pwgen
|
||||
- git
|
||||
|
||||
ansible:
|
||||
package_name: ansible-core
|
||||
install_method: distro
|
||||
pull:
|
||||
url: https://sjaakvandenberg:glpat-LNODrGwGu_2_chfIeHhdPW86MQp1OjJscHIK.01.101c0efma@gitlab.com/svdb-it/infra.git
|
||||
playbook_name: provision.yml
|
||||
|
||||
run_cmd:
|
||||
- deluser --remove-all-files linuxuser
|
||||
- usermod --uid 1000 ghost
|
||||
- groupmod --gid 1000 ghost
|
||||
Reference in New Issue
Block a user