Skip to content
This repository was archived by the owner on Jan 25, 2023. It is now read-only.
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 24 additions & 1 deletion modules/run-nomad/run-nomad
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ function print_usage {
echo -e " --use-sudo\t\tIf set, run the Nomad agent with sudo. By default, sudo is only used if --client is set."
echo -e " --environment\t\A single environment variable in the key/value pair form 'KEY=\"val\"' to pass to Nomad as environment variable when starting it up. Repeat this option for additional variables. Optional."
echo -e " --skip-nomad-config\tIf this flag is set, don't generate a Nomad configuration file. Optional. Default is false."
echo -e " --meta\t\A single metadata value in the key/value pair form 'KEY=\"val\"' to add to client configuration. Repeat this option for additional metadata. Optional."
echo
echo "Example:"
echo
Expand Down Expand Up @@ -119,23 +120,38 @@ function assert_is_installed {
fi
}

function build_client_meta {
local meta=("$@")
echo " meta {"
for m in "${meta[@]}";
do
IFS="=" read key val <<< $m
echo " \"$key\" = \"$val\""
done
echo " }"
}

function generate_nomad_config {
local readonly server="$1"
local readonly client="$2"
local readonly num_servers="$3"
local readonly config_dir="$4"
local readonly user="$5"
shift 5
local readonly meta=("$@")
local readonly config_path="$config_dir/$NOMAD_CONFIG_FILE"

local instance_id=""
local instance_ip_address=""
local instance_region=""
local instance_availability_zone=""
local client_meta=""

instance_id=$(get_instance_id)
instance_ip_address=$(get_instance_ip_address)
instance_region=$(get_instance_region)
availability_zone=$(get_instance_availability_zone)
client_meta=$(build_client_meta "${meta[@]}")

local server_config=""
if [[ "$server" == "true" ]]; then
Expand All @@ -153,6 +169,7 @@ EOF
client_config=$(cat <<EOF
client {
enabled = true
$client_meta
}
EOF
)
Expand Down Expand Up @@ -237,6 +254,7 @@ function run {
local skip_nomad_config="false"
local use_sudo=""
local environment=()
local meta=()
local all_args=()

while [[ $# > 0 ]]; do
Expand Down Expand Up @@ -299,6 +317,11 @@ function run {
environment+=("$2")
shift
;;
--meta)
assert_not_empty "$key" "$2"
meta+=("$2")
shift
;;
--help)
print_usage
exit
Expand Down Expand Up @@ -358,7 +381,7 @@ function run {
if [[ "$skip_nomad_config" == "true" ]]; then
log_info "The --skip-nomad-config flag is set, so will not generate a default Nomad config file."
else
generate_nomad_config "$server" "$client" "$num_servers" "$config_dir" "$user"
generate_nomad_config "$server" "$client" "$num_servers" "$config_dir" "$user" "${meta[@]}"
fi

generate_supervisor_config "$SUPERVISOR_CONFIG_PATH" "$config_dir" "$data_dir" "$bin_dir" "$log_dir" "$user" "$use_sudo" "${environment[@]}"
Expand Down