From d24116dfe58b67768388372caa50392c4fc8c1d7 Mon Sep 17 00:00:00 2001 From: Nicolas Dandrimont <nicolas@dandrimont.eu> Date: Fri, 20 Dec 2019 18:42:06 +0100 Subject: [PATCH] Add definitions for cassandra servers Implements T2033 --- azure/terraform/cassandra.plan | Bin 0 -> 15025 bytes azure/terraform/cassandra.tf | 179 +++++++++++++++++++++ azure/terraform/templates/firstboot.sh.tpl | 73 ++++++--- 3 files changed, 234 insertions(+), 18 deletions(-) create mode 100644 azure/terraform/cassandra.plan create mode 100644 azure/terraform/cassandra.tf diff --git a/azure/terraform/cassandra.plan b/azure/terraform/cassandra.plan new file mode 100644 index 0000000000000000000000000000000000000000..9dcba614cb424ea7102a24c81c4fadf360d90a9a GIT binary patch literal 15025 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 literal 0 HcmV?d00001 diff --git a/azure/terraform/cassandra.tf b/azure/terraform/cassandra.tf new file mode 100644 index 0000000..113cb8f --- /dev/null +++ b/azure/terraform/cassandra.tf @@ -0,0 +1,179 @@ +variable "cassandra_servers" { + default = 1 +} + +variable "cassandra_disk_size" { + default = 1024 +} + +variable "cassandra_disks_per_server" { + default = 4 +} + +resource "azurerm_resource_group" "euwest-cassandra" { + name = "euwest-cassandra" + location = "westeurope" + + tags = { + environment = "Cassandra" + } +} + +locals { + cassandra_servers = { + for i in range(var.cassandra_servers): + format("cassandra%02d", i + 1) => { + datadisks = { + for i in range(var.cassandra_disks_per_server): + format("datadisk%02d", i + 1) => { + lun = i + 1 + path = format("/dev/disk/azure/scsi1/lun%d", i + 1) + } + } + } + } +} + + +resource "azurerm_network_interface" "cassandra-interface" { + for_each = local.cassandra_servers + + name = format("%s-interface", each.key) + location = "westeurope" + resource_group_name = azurerm_resource_group.euwest-cassandra.name + network_security_group_id = data.azurerm_network_security_group.worker-nsg.id + + enable_accelerated_networking = true + + ip_configuration { + name = "vaultNicConfiguration" + subnet_id = data.azurerm_subnet.default.id + public_ip_address_id = "" + private_ip_address_allocation = "Dynamic" + } + + depends_on = [azurerm_resource_group.euwest-cassandra] +} + + +resource "azurerm_virtual_machine" "cassandra-server" { + for_each = local.cassandra_servers + + depends_on = [azurerm_resource_group.euwest-cassandra] + + name = each.key + location = "westeurope" + resource_group_name = azurerm_resource_group.euwest-cassandra.name + network_interface_ids = [azurerm_network_interface.cassandra-interface[each.key].id] + vm_size = "Standard_DS13_v2" + + delete_os_disk_on_termination = true + delete_data_disks_on_termination = true + + boot_diagnostics { + enabled = true + storage_uri = var.boot_diagnostics_uri + } + + storage_os_disk { + name = format("%s-osdisk", each.key) + caching = "ReadWrite" + create_option = "FromImage" + managed_disk_type = "Premium_LRS" + } + + dynamic storage_data_disk { + for_each = each.value.datadisks + + content { + name = format("%s-%s", each.key, storage_data_disk.key) + caching = "None" + create_option = "Empty" + managed_disk_type = "Premium_LRS" + disk_size_gb = var.cassandra_disk_size + lun = storage_data_disk.value.lun + } + } + + storage_image_reference { + publisher = "debian" + offer = "debian-10" + sku = "10" + version = "latest" + } + + os_profile { + computer_name = each.key + admin_username = var.user_admin + } + + os_profile_linux_config { + disable_password_authentication = true + ssh_keys { + path = "/home/${var.user_admin}/.ssh/authorized_keys" + key_data = var.ssh_key_data_olasd + } + } + + provisioner "remote-exec" { + inline = [ + "sudo mkdir /root/.ssh", + "echo ${var.ssh_key_data_ardumont} | sudo tee -a /root/.ssh/authorized_keys", + "echo ${var.ssh_key_data_olasd} | sudo tee -a /root/.ssh/authorized_keys", + ] + + connection { + type = "ssh" + user = var.user_admin + host = azurerm_network_interface.cassandra-interface[self.name].private_ip_address + } + } + + provisioner "file" { + content = templatefile("templates/firstboot.sh.tpl", { + hostname = self.name + fqdn = format("%s.euwest.azure.internal.softwareheritage.org", self.name) + ip_address = azurerm_network_interface.cassandra-interface[self.name].private_ip_address + facter_location = "azure_euwest", + disks = [ + for disk in local.cassandra_servers[self.name].datadisks: { + base_disk = disk.path + } + ] + raids = [{ + path = "/dev/md0" + level = 0 + chunk = "128K" + members = [for disk in local.cassandra_servers[self.name].datadisks: format("%s-part1", disk.path)] + mountpoint = "/srv/cassandra" + filesystem = "ext4" + mount_options = "defaults" + }] + }) + destination = var.firstboot_script + + connection { + type = "ssh" + user = "root" + host = azurerm_network_interface.cassandra-interface[self.name].private_ip_address + } + } + + provisioner "remote-exec" { + inline = [ + "userdel -f ${var.user_admin}", + "chmod +x ${var.firstboot_script}", + "cat ${var.firstboot_script}", + "${var.firstboot_script}", + ] + connection { + type = "ssh" + user = "root" + host = azurerm_network_interface.cassandra-interface[self.name].private_ip_address + } + } + + tags = { + environment = "Cassandra" + } +} diff --git a/azure/terraform/templates/firstboot.sh.tpl b/azure/terraform/templates/firstboot.sh.tpl index 77057e7..9a2cb9b 100644 --- a/azure/terraform/templates/firstboot.sh.tpl +++ b/azure/terraform/templates/firstboot.sh.tpl @@ -12,19 +12,8 @@ FQDN=${fqdn} IP=${ip_address} FACTER_LOCATION=${facter_location} -%{ for disk in disks } -# Make one large partition on ${disk.base_disk} -echo ';' | sudo sfdisk --label gpt ${disk.base_disk} - -mkfs.${disk.filesystem} ${disk.base_disk}1 - -mkdir -p ${disk.mountpoint} - -uuid=$(blkid -o value -s UUID ${disk.base_disk}1) -echo "UUID=\"$uuid\" ${disk.mountpoint} ${disk.filesystem} ${disk.mount_options} 0 0" >> /etc/fstab -%{ endfor } -mount -a +# Handle base system configuration apt-get -y install lsb-release debian_suite=$(lsb_release -cs) @@ -43,9 +32,53 @@ echo $HOSTNAME > /etc/hostname hostnamectl set-hostname $HOSTNAME echo "$IP $FQDN $HOSTNAME" >> /etc/hosts + +# Handle disk configuration + +%{ for disk in disks } +# Make one large partition on ${disk.base_disk} +echo ';' | sudo sfdisk --label gpt ${disk.base_disk} + +%{ if lookup(disk, "filesystem", "") != "" } +mkfs.${disk.filesystem} ${disk.base_disk}1 + +mkdir -p ${disk.mountpoint} + +uuid=$(blkid -o value -s UUID ${disk.base_disk}1) +echo "UUID=\"$uuid\" ${disk.mountpoint} ${disk.filesystem} ${disk.mount_options} 0 0" >> /etc/fstab +%{ endif } +%{ endfor } + +%{ if length(raids) != 0 } + +apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --no-install-recommends install mdadm + +%{ for raid in raids } + +mdadm --create ${raid.path} \ + --level=${raid.level} \ + --raid-devices ${length(raid.members)} \ + %{ if raid.chunk != "" }--chunk=${raid.chunk}%{ endif } \ + %{~ for member in raid.members } ${member} %{ endfor ~} + +%{ if lookup(raid, "filesystem", "") != "" } +mkfs.${raid.filesystem} ${raid.path} + +mkdir -p ${raid.mountpoint} + +uuid=$(blkid -o value -s UUID ${raid.path}) +echo "UUID=\"$uuid\" ${raid.mountpoint} ${raid.filesystem} ${raid.mount_options} 0 0" >> /etc/fstab +%{ endif } +%{ endfor } + +/usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf +update-initramfs -k all -u +%{ endif } + +mount -a + # install puppet dependencies -apt-get -y install -t $${debian_suite}-backports facter -apt-get -y install puppet +apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --no-install-recommends install puppet gnupg # do not need the service live as we need to install some more setup first service puppet stop @@ -58,8 +91,12 @@ echo location=$FACTER_LOCATION > /etc/facter/facts.d/location.txt # first time around, this will: # - update the node's puppet agent configuration defining the puppet master # - generate the certificates with the appropriate fqdn -# - unfortunately, for now, this fails though, when not being able to -# install the apt-transport-https package -puppet agent --server $PUPPET_MASTER --waitforcert 60 --test +puppet_exit=0 + +puppet agent --server $PUPPET_MASTER --waitforcert 60 --test --vardir /var/lib/puppet --detailed-exitcodes || puppet_exit=$? + +if [ $puppet_exit -ne 2 ]; then + exit $puppet_exit +fi -#reboot +# reboot -- GitLab