github.com/hernad/nomad@v1.6.112/e2e/terraform/provision-nomad/install-linux.tf (about)

     1  # Copyright (c) HashiCorp, Inc.
     2  # SPDX-License-Identifier: MPL-2.0
     3  
     4  resource "local_sensitive_file" "nomad_systemd_unit_file" {
     5    content         = templatefile("etc/nomad.d/nomad-${var.role}.service", {})
     6    filename        = "${local.upload_dir}/nomad.d/nomad.service"
     7    file_permission = "0600"
     8  }
     9  
    10  resource "null_resource" "install_nomad_binary_linux" {
    11    count    = var.platform == "linux" ? 1 : 0
    12    triggers = { nomad_binary_sha = filemd5(var.nomad_local_binary) }
    13  
    14    connection {
    15      type        = "ssh"
    16      user        = var.connection.user
    17      host        = var.instance.public_ip
    18      port        = var.connection.port
    19      private_key = file(var.connection.private_key)
    20      timeout     = "5m"
    21    }
    22  
    23    provisioner "file" {
    24      source      = var.nomad_local_binary
    25      destination = "/tmp/nomad"
    26    }
    27    provisioner "remote-exec" {
    28      inline = [
    29        "sudo mv /tmp/nomad /usr/local/bin/nomad",
    30        "sudo chmod +x /usr/local/bin/nomad",
    31      ]
    32    }
    33  }
    34  
    35  resource "null_resource" "install_consul_configs_linux" {
    36    count = var.platform == "linux" ? 1 : 0
    37  
    38    depends_on = [
    39      null_resource.upload_consul_configs,
    40    ]
    41  
    42    connection {
    43      type        = "ssh"
    44      user        = var.connection.user
    45      host        = var.instance.public_ip
    46      port        = var.connection.port
    47      private_key = file(var.connection.private_key)
    48      timeout     = "5m"
    49    }
    50  
    51    provisioner "remote-exec" {
    52      inline = [
    53        "mkdir -p /etc/consul.d",
    54        "sudo rm -rf /etc/consul.d/*",
    55        "sudo mv /tmp/consul_ca.pem /etc/consul.d/ca.pem",
    56        "sudo mv /tmp/consul_client_acl.json /etc/consul.d/acl.json",
    57        "sudo mv /tmp/consul_client.json /etc/consul.d/consul_client.json",
    58        "sudo mv /tmp/consul_client_base.json /etc/consul.d/consul_client_base.json",
    59        "sudo mv /tmp/consul.service /etc/systemd/system/consul.service",
    60      ]
    61    }
    62  }
    63  
    64  locals {
    65    data_owner = var.role == "client" ? "root" : "nomad"
    66  }
    67  
    68  resource "null_resource" "install_nomad_configs_linux" {
    69    count = var.platform == "linux" ? 1 : 0
    70  
    71    depends_on = [
    72      null_resource.upload_nomad_configs,
    73    ]
    74  
    75    connection {
    76      type        = "ssh"
    77      user        = var.connection.user
    78      host        = var.instance.public_ip
    79      port        = var.connection.port
    80      private_key = file(var.connection.private_key)
    81      timeout     = "5m"
    82    }
    83  
    84    provisioner "remote-exec" {
    85      inline = [
    86        "mkdir -p /etc/nomad.d",
    87        "mkdir -p /opt/nomad/data",
    88        "sudo chmod 0700 /opt/nomad/data",
    89        "sudo chown ${local.data_owner}:${local.data_owner} /opt/nomad/data",
    90        "sudo rm -rf /etc/nomad.d/*",
    91        "sudo mv /tmp/consul.hcl /etc/nomad.d/consul.hcl",
    92        "sudo mv /tmp/vault.hcl /etc/nomad.d/vault.hcl",
    93        "sudo mv /tmp/base.hcl /etc/nomad.d/base.hcl",
    94        "sudo mv /tmp/${var.role}-${var.platform}.hcl /etc/nomad.d/${var.role}-${var.platform}.hcl",
    95        "sudo mv /tmp/${var.role}-${var.platform}-${var.index}.hcl /etc/nomad.d/${var.role}-${var.platform}-${var.index}.hcl",
    96        "sudo mv /tmp/.environment /etc/nomad.d/.environment",
    97  
    98        # TLS
    99        "sudo mkdir /etc/nomad.d/tls",
   100        "sudo mv /tmp/tls.hcl /etc/nomad.d/tls.hcl",
   101        "sudo mv /tmp/agent-${var.instance.public_ip}.key /etc/nomad.d/tls/agent.key",
   102        "sudo mv /tmp/agent-${var.instance.public_ip}.crt /etc/nomad.d/tls/agent.crt",
   103        "sudo mv /tmp/tls_proxy.key /etc/nomad.d/tls/tls_proxy.key",
   104        "sudo mv /tmp/tls_proxy.crt /etc/nomad.d/tls/tls_proxy.crt",
   105        "sudo mv /tmp/self_signed.key /etc/nomad.d/tls/self_signed.key",
   106        "sudo mv /tmp/self_signed.crt /etc/nomad.d/tls/self_signed.crt",
   107        "sudo mv /tmp/ca.crt /etc/nomad.d/tls/ca.crt",
   108  
   109        "sudo mv /tmp/nomad.service /etc/systemd/system/nomad.service",
   110      ]
   111    }
   112  
   113  }
   114  
   115  resource "null_resource" "restart_linux_services" {
   116    count = var.platform == "linux" ? 1 : 0
   117  
   118    depends_on = [
   119      null_resource.install_nomad_binary_linux,
   120      null_resource.install_consul_configs_linux,
   121      null_resource.install_nomad_configs_linux,
   122    ]
   123  
   124    connection {
   125      type        = "ssh"
   126      user        = var.connection.user
   127      host        = var.instance.public_ip
   128      port        = var.connection.port
   129      private_key = file(var.connection.private_key)
   130      timeout     = "5m"
   131    }
   132  
   133    provisioner "remote-exec" {
   134      inline = [
   135        "sudo systemctl daemon-reload",
   136        "sudo systemctl enable consul",
   137        "sudo systemctl restart consul",
   138        "sudo systemctl enable nomad",
   139        "sudo systemctl restart nomad",
   140      ]
   141    }
   142  }