blob: 153828c121e814ef1d5692a4aa2433dd613ef228 [file] [log] [blame]
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
variable "os_type" {
default = "centos"
}
variable "software_root" {}
variable "upload_host" {}
variable "manager_ip" {}
variable "worker_ips" {}
variable "zookeeper_dir" {}
variable "hadoop_dir" {}
variable "accumulo_dir" {}
variable "maven_version" {}
variable "zookeeper_version" {}
variable "hadoop_version" {}
variable "accumulo_version" {}
variable "accumulo_repo" {}
variable "accumulo_branch_name" {}
variable "accumulo_testing_repo" {}
variable "accumulo_testing_branch_name" {}
variable "accumulo_instance_name" {
default = "accumulo-testing"
type = string
nullable = false
}
variable "accumulo_root_password" {
default = ""
type = string
nullable = false
}
locals {
conf_dir = "${path.module}/conf"
files_dir = "${path.module}/files"
templates_dir = "${path.module}/templates"
java_home = var.os_type == "ubuntu" ? "/usr/lib/jvm/java-11-openjdk-amd64" : "/usr/lib/jvm/java-11-openjdk"
accumulo_root_pw = coalesce(var.accumulo_root_password, random_string.accumulo_root_password.result)
template_vars = {
os_type = var.os_type
manager_ip = var.manager_ip
worker_ips = var.worker_ips
java_home = local.java_home
accumulo_branch_name = var.accumulo_branch_name
accumulo_dir = var.accumulo_dir
accumulo_repo = var.accumulo_repo
accumulo_testing_repo = var.accumulo_testing_repo
accumulo_testing_branch_name = var.accumulo_testing_branch_name
accumulo_version = var.accumulo_version
software_root = var.software_root
hadoop_dir = var.hadoop_dir
hadoop_version = var.hadoop_version
maven_version = var.maven_version
zookeeper_dir = var.zookeeper_dir
zookeeper_version = var.zookeeper_version
accumulo_instance_name = var.accumulo_instance_name
accumulo_root_password = local.accumulo_root_pw,
accumulo_instance_secret = random_string.accumulo_instance_secret.result
}
}
resource "random_string" "accumulo_root_password" {
length = 12
special = false
}
resource "random_string" "accumulo_instance_secret" {
length = 12
special = false
}
resource "local_file" "etc-hosts" {
filename = "${local.conf_dir}/hosts"
file_permission = "644"
content = templatefile("${local.templates_dir}/hosts.tftpl", local.template_vars)
}
resource "local_file" "etc-genders" {
filename = "${local.conf_dir}/genders"
file_permission = "644"
content = templatefile("${local.templates_dir}/genders.tftpl", local.template_vars)
}
resource "local_file" "zookeeper-config" {
filename = "${local.conf_dir}/zoo.cfg"
file_permission = "644"
content = templatefile("${local.templates_dir}/zoo.cfg.tftpl", local.template_vars)
}
resource "local_file" "hadoop-core-config" {
filename = "${local.conf_dir}/core-site.xml"
file_permission = "644"
content = templatefile("${local.templates_dir}/core-site.xml.tftpl", local.template_vars)
}
resource "local_file" "hadoop-hdfs-config" {
filename = "${local.conf_dir}/hdfs-site.xml"
file_permission = "644"
content = templatefile("${local.templates_dir}/hdfs-site.xml.tftpl", local.template_vars)
}
resource "local_file" "hadoop-yarn-config" {
filename = "${local.conf_dir}/yarn-site.xml"
file_permission = "644"
content = templatefile("${local.templates_dir}/yarn-site.xml.tftpl", local.template_vars)
}
resource "local_file" "accumulo-cluster-config" {
filename = "${local.conf_dir}/cluster.yaml"
file_permission = "644"
content = templatefile("${local.templates_dir}/cluster.yaml.tftpl", local.template_vars)
}
resource "local_file" "accumulo-properties-config" {
filename = "${local.conf_dir}/accumulo.properties"
file_permission = "644"
content = templatefile("${local.templates_dir}/accumulo-properties.tftpl", local.template_vars)
}
resource "local_file" "accumulo-client-properties-config" {
filename = "${local.conf_dir}/accumulo-client.properties"
file_permission = "644"
content = templatefile("${local.templates_dir}/accumulo-client-properties.tftpl", local.template_vars)
}
resource "local_file" "telegraf-config" {
filename = "${local.conf_dir}/telegraf.conf"
file_permission = "644"
content = templatefile("${local.templates_dir}/telegraf.conf.tftpl", local.template_vars)
}
resource "local_file" "namenode-systemd" {
filename = "${local.conf_dir}/hadoop-namenode.service"
file_permission = "644"
content = templatefile("${local.templates_dir}/hadoop-namenode.service.tftpl", local.template_vars)
}
resource "local_file" "datanode-systemd" {
filename = "${local.conf_dir}/hadoop-datanode.service"
file_permission = "644"
content = templatefile("${local.templates_dir}/hadoop-datanode.service.tftpl", local.template_vars)
}
resource "local_file" "resourcemanager-systemd" {
filename = "${local.conf_dir}/yarn-resourcemanager.service"
file_permission = "644"
content = templatefile("${local.templates_dir}/yarn-resourcemanager.service.tftpl", local.template_vars)
}
resource "local_file" "nodemanager-systemd" {
filename = "${local.conf_dir}/yarn-nodemanager.service"
file_permission = "644"
content = templatefile("${local.templates_dir}/yarn-nodemanager.service.tftpl", local.template_vars)
}
resource "local_file" "zookeeper-systemd" {
filename = "${local.conf_dir}/zookeeper.service"
file_permission = "644"
content = templatefile("${local.templates_dir}/zookeeper.service.tftpl", local.template_vars)
}
resource "local_file" "hadoop-bash-profile" {
filename = "${local.conf_dir}/hadoop_bash_profile"
file_permission = "600"
content = templatefile("${local.templates_dir}/hadoop_bash_profile.tftpl", local.template_vars)
}
resource "local_file" "hadoop-bashrc" {
filename = "${local.conf_dir}/hadoop_bashrc"
file_permission = "600"
content = templatefile("${local.templates_dir}/hadoop_bashrc.tftpl", local.template_vars)
}
resource "local_file" "install-software" {
filename = "${local.conf_dir}/install_sw.sh"
file_permission = "755"
content = templatefile("${local.templates_dir}/install_sw.sh.tftpl", local.template_vars)
}
resource "local_file" "initialize-hadoop" {
filename = "${local.conf_dir}/initialize-hadoop.sh"
file_permission = "755"
content = templatefile("${local.templates_dir}/initialize_hadoop.sh.tftpl", local.template_vars)
}
resource "local_file" "initialize-accumulo" {
filename = "${local.conf_dir}/initialize-accumulo.sh"
file_permission = "755"
content = templatefile("${local.templates_dir}/initialize_accumulo.sh.tftpl", local.template_vars)
}
resource "null_resource" "upload_config_files" {
depends_on = [
local_file.etc-hosts,
local_file.etc-genders,
local_file.zookeeper-config,
local_file.hadoop-core-config,
local_file.hadoop-hdfs-config,
local_file.hadoop-yarn-config,
local_file.accumulo-cluster-config,
local_file.accumulo-properties-config,
local_file.accumulo-client-properties-config,
local_file.telegraf-config,
local_file.namenode-systemd,
local_file.datanode-systemd,
local_file.resourcemanager-systemd,
local_file.nodemanager-systemd,
local_file.zookeeper-systemd,
local_file.hadoop-bash-profile,
local_file.hadoop-bashrc,
local_file.install-software,
local_file.initialize-hadoop,
local_file.initialize-accumulo
]
connection {
type = "ssh"
host = var.upload_host
user = "hadoop"
}
provisioner "remote-exec" {
inline = [
"mkdir -p ${var.software_root}/grafana/dashboards"
]
}
provisioner "file" {
source = local.conf_dir
destination = var.software_root
}
provisioner "file" {
source = "${local.files_dir}/grafana_dashboards/"
destination = "${var.software_root}/grafana/dashboards/"
}
}
output "conf_dir" {
value = local.conf_dir
}
output "accumulo_instance_name" {
value = var.accumulo_instance_name
}
output "accumulo_root_password" {
value = local.accumulo_root_pw
}