initial upload
This commit is contained in:
parent
646c40daf1
commit
20dd385bed
3 changed files with 149 additions and 0 deletions
56
bootstrap-ceph.sh
Normal file
56
bootstrap-ceph.sh
Normal file
|
@ -0,0 +1,56 @@
|
|||
#!/bin/bash
|
||||
uuid=$(uuidgen)
|
||||
#ceph likes to use short name
|
||||
nodename=$(hostname -s
|
||||
cat << EOF > /etc/ceph/ceph.conf
|
||||
[global]
|
||||
# specify public network
|
||||
public network = 89.47.190.28/23
|
||||
# specify UUID genarated above
|
||||
fsid = ${uuid}
|
||||
# specify IP address of Monitor Daemon
|
||||
mon host = 89.47.190.28
|
||||
# specify Hostname of Monitor Daemon
|
||||
mon initial members = ${nodename}
|
||||
osd pool default crush rule = -1
|
||||
[mon.${nodename}]
|
||||
# specify Hostname of Monitor Daemon
|
||||
host = internal-sto4-test-ceph-0.platform.sunet.se
|
||||
# specify IP address of Monitor Daemon
|
||||
mon addr = 89.47.190.28
|
||||
# allow to delete pools
|
||||
mon allow pool delete = true
|
||||
EOF
|
||||
# generate secret key for Cluster monitoring
|
||||
|
||||
ceph-authtool --create-keyring /etc/ceph/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
|
||||
ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
|
||||
# generate key for bootstrap
|
||||
|
||||
ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' --cap mgr 'allow r'
|
||||
ceph-authtool /etc/ceph/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
|
||||
ceph-authtool /etc/ceph/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
|
||||
sudo -u ceph mkdir /var/lib/ceph/mon/ceph-${nodename}
|
||||
|
||||
monmaptool --create --add ${nodename} 89.47.190.28 --fsid ${uuid} /etc/ceph/monmap
|
||||
ceph-mon --cluster ceph --mkfs -i i${nodename} --monmap /etc/ceph/monmap --keyring /etc/ceph/ceph.mon.keyring
|
||||
chown -R ceph /var/lib/ceph/mon/ceph-${nodename} /var/lib/ceph/bootstrap-osd
|
||||
|
||||
#mgr
|
||||
mkdir /var/lib/ceph/mgr/ceph-${nodename}
|
||||
ceph auth get-or-create mgr.${nodename} mon 'allow profile mgr' osd 'allow *' mds 'allow *'
|
||||
ceph auth get-or-create mgr.${nodename} | tee /etc/ceph/ceph.mgr.admin.keyring
|
||||
cp /etc/ceph/ceph.mgr.admin.keyring /var/lib/ceph/mgr/ceph-${nodename}/keyring
|
||||
chown ceph:ceph /etc/ceph/ceph.mgr.admin.keyring
|
||||
chown -R ceph:ceph /var/lib/ceph/mgr/ceph-${nodename}
|
||||
systemctl enable --now ceph-mgr@${nodename}
|
||||
systemctl enable ceph-mon
|
||||
#systemctl start ceph-mon
|
||||
|
||||
#set some global stuff
|
||||
ceph mon enable-msgr2
|
||||
ceph mgr module enable pg_autoscaler
|
||||
ceph config set mon auth_allow_insecure_global_id_reclaim false
|
||||
#Create storage disk
|
||||
ceph-volume lvm create --data /dev/sda2
|
||||
|
63
main.tf
Normal file
63
main.tf
Normal file
|
@ -0,0 +1,63 @@
|
|||
# Define required providers
|
||||
terraform {
|
||||
required_version = ">= 0.14.0"
|
||||
required_providers {
|
||||
openstack = {
|
||||
source = "terraform-provider-openstack/openstack"
|
||||
version = "~> 1.53.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Configure the OpenStack Provider
|
||||
provider "openstack" {
|
||||
cloud = "dco-platform"
|
||||
}
|
||||
resource "openstack_networking_secgroup_v2" "ssh-jump-tofu" {
|
||||
description = "SSH from jumphost rule for SWAMID machine - managed by tofu"
|
||||
name = "ssh-jump-tofu"
|
||||
delete_default_rules = false
|
||||
}
|
||||
resource "openstack_networking_secgroup_rule_v2" "v4-jump" {
|
||||
for_each = var.jump_hosts
|
||||
direction = "ingress"
|
||||
ethertype = "IPv4"
|
||||
port_range_min = 22
|
||||
port_range_max = 22
|
||||
protocol = "tcp"
|
||||
remote_ip_prefix = each.value["v4"]
|
||||
security_group_id = openstack_networking_secgroup_v2.ssh-jump-tofu.id
|
||||
}
|
||||
|
||||
resource "openstack_networking_secgroup_rule_v2" "v6-jump" {
|
||||
for_each = var.jump_hosts
|
||||
direction = "ingress"
|
||||
ethertype = "IPv6"
|
||||
port_range_min = 22
|
||||
port_range_max = 22
|
||||
protocol = "tcp"
|
||||
remote_ip_prefix = each.value["v6"]
|
||||
security_group_id = openstack_networking_secgroup_v2.ssh-jump-tofu.id
|
||||
}
|
||||
resource "openstack_compute_instance_v2" "ceph-nodes" {
|
||||
count = var.instance_count
|
||||
name = "${var.instance_name}-${count.index}.${var.dns_suffix}"
|
||||
flavor_name = "${var.instance_type}"
|
||||
key_pair = "mifr-yubi"
|
||||
security_groups = ["ssh-jump-tofu",]
|
||||
image_name = "debian-12"
|
||||
region = "dco1"
|
||||
user_data = "#cloud-config\ngrowpart:\nmode: false"
|
||||
block_device {
|
||||
boot_index = 0
|
||||
delete_on_termination = true
|
||||
destination_type = "local"
|
||||
source_type = "image"
|
||||
uuid = "d26c1ad1-90a2-4086-b1d9-08a5f6fe05cb"
|
||||
volume_size = 20
|
||||
}
|
||||
|
||||
network {
|
||||
name = "public"
|
||||
}
|
||||
}
|
30
vars.tf
Normal file
30
vars.tf
Normal file
|
@ -0,0 +1,30 @@
|
|||
variable "jump_hosts" {
|
||||
type = map(object({
|
||||
v4 = string
|
||||
v6 = string
|
||||
}))
|
||||
default = {
|
||||
|
||||
"hoppjerka.sunet.se" = {
|
||||
v4 = "130.242.125.68/32"
|
||||
v6 = "2001:6b0:8:4::68/128"
|
||||
}
|
||||
"joppherka.sunet.se" = {
|
||||
v4 = "130.242.121.73/32"
|
||||
v6 = "2001:6b0:7:6::73/128"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
variable "instance_count" {
|
||||
default = "1"
|
||||
}
|
||||
variable "instance_type" {
|
||||
default = "l2.c8r16.100"
|
||||
}
|
||||
variable "instance_name" {
|
||||
default = "internal-sto4-test-ceph"
|
||||
}
|
||||
variable "dns_suffix" {
|
||||
default = "platform.sunet.se"
|
||||
}
|
Loading…
Add table
Reference in a new issue