#!/bin/bash # Exit immediately if a command exits with a non-zero status set -e # Log file LOG_FILE="/var/log/ejbca_install.log" exec > >(tee -i $LOG_FILE) exec 2>&1 # State file STATE_FILE="/var/log/ejbca_install_state.log" # Variables EJBCA_VERSION="r8.3.2" DB_NAME="ejbca" DB_USER="ejbcauser" DB_PASS="your_password" EJBCA_HOST="localhost" EJBCA_PORT="8080" ADMIN_PASSWORD="adminpassword" EJBCA_URL="https://github.com/Keyfactor/ejbca-ce/archive/refs/tags/${EJBCA_VERSION}/${EJBCA_VERSION}.zip" EJBCA_DIR="/opt/ejbca-ce-r8.3.2" # Update state function update_state() { echo "$1" > $STATE_FILE } # Read state function read_state() { if [ -f $STATE_FILE ]; then cat $STATE_FILE else echo "0" fi } # Hauptfunktion: Installation Prerequisites installation_prerequisites() { echo "Installation Prerequisites..." update_state "1" # Subfunktion: System Update system_update # Subfunktion: Install Utilities install_utilities } system_update() { echo "Updating system..." sudo dnf update -y update_state "1.1" } install_utilities() { echo "Installing utilities..." sudo dnf install -y epel-release wget unzip update_state "1.2" } # Hauptfunktion: Managing EJBCA Configurations managing_ejbca_configurations() { echo "Managing EJBCA Configurations..." update_state "2" # Subfunktion: Install Java install_java # Subfunktion: Install Application Server install_application_server } install_java() { echo "Installing Java..." sudo dnf install -y java-11-openjdk java-11-openjdk-devel java -version update_state "2.1" } install_application_server() { echo "Installing Application Server..." sudo dnf install -y tomcat sudo systemctl start tomcat sudo systemctl enable tomcat update_state "2.2" } # Hauptfunktion: Creating Database creating_database() { echo "Creating Database..." update_state "3" # Subfunktion: Install MariaDB install_mariadb # Subfunktion: Secure MariaDB secure_mariadb # Subfunktion: Setup Database setup_database } install_mariadb() { echo "Installing MariaDB..." sudo dnf install -y mariadb-server sudo systemctl start mariadb sudo systemctl enable mariadb update_state "3.1" } secure_mariadb() { echo "Securing MariaDB installation..." sudo mysql_secure_installation < $STATUS_FILE echo "EJBCA has been installed and deployed. Access it at http://${EJBCA_HOST}:${EJBCA_PORT}/ejbca" echo "Use the password ${ADMIN_PASSWORD} for the WildFly management console." echo "Installation status saved to ${STATUS_FILE}" update_state "6.4" } check_service_status() { local service=$1 if systemctl is-active --quiet $service; then echo "$service is active." else echo "$service is not active." fi } check_port_status() { local port=$1 if sudo firewall-cmd --list-ports | grep -q $port; then echo "Port $port is open." else echo "Port $port is not open." fi } # Main script execution based on state case $(read_state) in 0) installation_prerequisites ;; 1) managing_ejbca_configurations ;; 2) creating_database ;; 3) deploying_ejbca ;; 4) installing_ejbca ;; 5) finalizing_the_installation ;; 6) echo "Installation is complete." ;; *) echo "Unknown state. Exiting." ;; esac