11#! /bin/bash
22# install_nodeagent.sh - NodeAgent installation script
3- # Usage: ./install_nodeagent.sh <master_node_ip> [ node_type]
3+ # Usage: ./install_nodeagent.sh --master <master_ip> --node <node_ip> [--role <node_role>] [--type < node_type> ]
44
55# Exit on error
66set -e
@@ -11,9 +11,54 @@ if [ "$(id -u)" -ne 0 ]; then
1111 exit 1
1212fi
1313
14+ # Initialize variables
15+ MASTER_IP=" "
16+ NODE_IP=" "
17+ NODE_NAME=$( hostname) # Always use system hostname
18+ NODE_ROLE=" nodeagent" # Default node role (master, nodeagent, bluechi)
19+ NODE_TYPE=" vehicle" # Default node type (vehicle, cloud)
20+
21+ # Process command line arguments
22+ while [[ $# -gt 0 ]]; do
23+ case $1 in
24+ --master)
25+ MASTER_IP=" $2 "
26+ shift 2
27+ ;;
28+ --node)
29+ NODE_IP=" $2 "
30+ shift 2
31+ ;;
32+ --role)
33+ NODE_ROLE=" $2 "
34+ # Validate node role
35+ if [[ ! " $NODE_ROLE " =~ ^(master| nodeagent| bluechi)$ ]]; then
36+ echo " Error: Invalid node role '$NODE_ROLE '. Must be one of: master, nodeagent, bluechi"
37+ exit 1
38+ fi
39+ shift 2
40+ ;;
41+ --type)
42+ NODE_TYPE=" $2 "
43+ # Validate node type
44+ if [[ ! " $NODE_TYPE " =~ ^(vehicle| cloud| master| nodeagent| bluechi)$ ]]; then
45+ echo " Error: Invalid node type '$NODE_TYPE '. Must be one of: vehicle, cloud, master, nodeagent, bluechi"
46+ exit 1
47+ fi
48+ shift 2
49+ ;;
50+ * )
51+ echo " Unknown option: $1 "
52+ echo " Usage: $0 --master <master_ip> --node <node_ip> [--role <node_role>] [--type <node_type>]"
53+ exit 1
54+ ;;
55+ esac
56+ done
57+
1458# Parameter validation
15- if [ $# -lt 1 ]; then
16- echo " Usage: $0 <master_node_ip> [node_type(sub|master)]"
59+ if [ -z " $MASTER_IP " ] || [ -z " $NODE_IP " ]; then
60+ echo " Error: Both --master and --node options are required."
61+ echo " Usage: $0 --master <master_ip> --node <node_ip> [--role <node_role>] [--type <node_type>]"
1762 exit 1
1863fi
1964
@@ -114,10 +159,9 @@ install_required_packages() {
114159 fi
115160}
116161
117- # Parameter settings
118- MASTER_IP=$1
119- NODE_TYPE=${2:- " sub" }
120- GRPC_PORT=${3:- " 47098" }
162+ # Parameter settings already processed from command line
163+ # MASTER_IP and NODE_IP are set from command line arguments
164+ GRPC_PORT=" 47004"
121165# DOWNLOAD_URL="https://github.com/piccolo-framework/piccolo/releases/download/latest"
122166DOWNLOAD_URL=" https://raw.githubusercontent.com/eclipse-pullpiri/pullpiri/main/examples/binarys"
123167CHECKSUM_URL=" ${DOWNLOAD_URL} " # Define CHECKSUM_URL
@@ -244,15 +288,16 @@ chmod +x /usr/local/bin/node_ready_check.sh
244288echo " Creating configuration file..."
245289cat > ${CONFIG_DIR} /nodeagent.yaml << EOF
246290nodeagent:
291+ node_name: "${NODE_NAME} "
247292 node_type: "${NODE_TYPE} "
293+ node_role: "${NODE_ROLE} "
248294 master_ip: "${MASTER_IP} "
295+ node_ip: "${NODE_IP} "
249296 grpc_port: ${GRPC_PORT}
250297 log_level: "info"
251298 metrics:
252299 collection_interval: 5
253300 batch_size: 50
254- etcd:
255- endpoint: "${MASTER_IP} :2379"
256301 system:
257302 hostname: "$( hostname) "
258303 platform: "$( uname -s) "
@@ -300,6 +345,7 @@ Restart=on-failure
300345RestartSec=10
301346Environment=RUST_LOG=info
302347Environment=MASTER_NODE_IP=${MASTER_IP}
348+ Environment=NODE_IP=${NODE_IP}
303349Environment=GRPC_PORT=${GRPC_PORT}
304350
305351# Security hardening settings
@@ -375,6 +421,7 @@ echo "Installation Summary:"
375421echo " - Installation directory: ${INSTALL_DIR} "
376422echo " - Configuration file: ${CONFIG_DIR} /nodeagent.yaml"
377423echo " - Master node: ${MASTER_IP} :${GRPC_PORT} "
424+ echo " - Node IP: ${NODE_IP} "
378425echo " - Node type: ${NODE_TYPE} "
379426echo " - Status: $ERROR_COUNT errors, $WARNING_COUNT warnings"
380427
0 commit comments