diff --git a/InManageBoot-installer/Public/INMANAGE b/InManageBoot-installer/Public/INMANAGE new file mode 100644 index 0000000000000000000000000000000000000000..7cea8c2862c2515e8d2b4c139aa3ee660ed84b43 --- /dev/null +++ b/InManageBoot-installer/Public/INMANAGE @@ -0,0 +1,63 @@ +#环境信息 +node_id=71327c3d-28a5dd83-2cb9e80e-e0313082 +node_name=inmanage +cluster_mode=SINGLE +inmanage_language=zh +inmanage_install_mode=cloud +inmanage_install_path=/opt +inmanage_main_file_name=inmanage +#ip信息 +node_ip=100.2.74.193 +node_nfs_ip=100.2.74.193 +node_network_gui_vip=100.2.74.193 +node_network_south_vip=100.2.74.193 +node_network_north_vip=100.2.74.193 +node_network_mysql_vip=100.2.74.193 +#集群信息 +cluster_id=c2eb7e04-4cbdb2c6-92a460e6-679b8a42 +current_node_state=MASTER +current_mysql_state=MASTER +current_redis_state= +current_consul_state= +cluster_node_list= +#产品信息 +inmanage_version=V7.2.0 +system_architecture=x86_64 +operating_system_version=CentOS7_9 +inmanage_build_time=202312190911 +inmanage_release_version=2023-12-19 +inmanage_logo_vendor=inspur +inmanage_overseas_flag=off +inmanage_cross_version_flag=off +inmanage_current_package_name=InManage-Upgrade-V7.2.0-CN-2312190912.tar.gz +#组件版本 +inmanage_mysql_version=8.0.34 +inmanage_influxdb_version=v2.7.3 +inmanage_elasticsearch_version=8.10.4 +inmanage_node_version=v16.20.2 +inmanage_openjdk_version=17.0.8 +inmanage_redis_version= +inmanage_rabbitmq_version= +inmanage_consul_version= +#组件密钥 +inmanage_module_secret_key=Inspur1! +inmanage_module_secret_key_enc=/YIl6KXtJi968bM3GB6eo7y9hlmbyBvn +inmanage_mysql_secret_key=/YIl6KXtJi968bM3GB6eo7y9hlmbyBvn +inmanage_influxdb_secret_key=/YIl6KXtJi968bM3GB6eo7y9hlmbyBvn +inmanage_elasticsearch_secret_key=/YIl6KXtJi968bM3GB6eo7y9hlmbyBvn +inmanage_redis_secret_key= +inmanage_rabbitmq_secret_key= +#备份 +inmanage_backup_path=/usr/local/backup +#在线升级 +inmanage_online_upgrade_path=/usr/local/upgrade +#monoHA切换时间 +mono_switch_waiting_time=6000 +#demo模式 +inmanage_demo_flag=false +#iboot ip配置 +inmanage_iboot_config_flag=false + + + + diff --git a/InManageBoot-installer/Public/add_index.sql b/InManageBoot-installer/Public/add_index.sql new file mode 100644 index 0000000000000000000000000000000000000000..ffc43e2d18eb2af75420af562701130147dc397b --- /dev/null +++ b/InManageBoot-installer/Public/add_index.sql @@ -0,0 +1,33 @@ +drop procedure if exists add_index; + +delimiter $ +create procedure add_index(in tableName varchar(100), in indexName varchar(100), in columnName varchar(100), in indexType varchar(100)) +begin + declare target_database varchar(100); + select database() into target_database; + + if not exists (select * from information_schema.statistics where table_schema = target_database and table_name = tableName and index_name = indexName) then + set @statement = concat("ALTER TABLE `", tableName, "` ADD ", indexType, "`", indexName, "`(`", columnName, "`) USING BTREE;"); + prepare stmt from @statement; + execute stmt; + end if; +end; +$ +delimiter ; + +drop procedure if exists update_index; +DELIMITER $$ +CREATE PROCEDURE `update_index`(in tableName varchar(100), in indexName varchar(100), in columnName varchar(100), in indexType varchar(100)) +begin + declare target_database varchar(100); + select database() into target_database; + if exists (select * from information_schema.statistics where table_schema = target_database and table_name = tableName and index_name = indexName) then + set @dropState = concat("drop index ",indexName, " on ",tableName ,";"); + prepare dropStmt from @dropState; + execute dropStmt; + end if; + set @statement = concat("ALTER TABLE `", tableName, "` ADD ", indexType, " `", indexName, "`(`", columnName, "`) USING BTREE;"); + prepare stmt from @statement; + execute stmt; +end $$ +DELIMITER ; \ No newline at end of file diff --git a/InManageBoot-installer/Public/config b/InManageBoot-installer/Public/config new file mode 100644 index 0000000000000000000000000000000000000000..8e62990366f278bded782e76ba36b276cd00372d --- /dev/null +++ b/InManageBoot-installer/Public/config @@ -0,0 +1,173 @@ +#!/bin/bash + +param_one=$(echo $1 | tr [A-Z] [a-z]) +ip_1=$(echo $2 | tr [A-Z] [a-z]) +ip_2=$(echo $3 | tr [A-Z] [a-z]) +ip_3=$(echo $4 | tr [A-Z] [a-z]) +ip_4=$(echo $5 | tr [A-Z] [a-z]) +ip_5=$(echo $6 | tr [A-Z] [a-z]) +ip_6=$(echo $7 | tr [A-Z] [a-z]) + +#中英文 +inmanage_language=`cat /etc/INMANAGE | grep "inmanage_language=" | awk -F "=" '{print $2}'` +#安装路径 +inmanage_install_path=`cat /etc/INMANAGE | grep "inmanage_install_path=" | awk -F "=" '{print $2}'` +#主文件夹名称 +inmanage_main_file_name=`cat /etc/INMANAGE | grep "inmanage_main_file_name=" | awk -F "=" '{print $2}'` +#iboot配置标记 +inmanage_iboot_config_flag=`cat /etc/INMANAGE | grep "inmanage_iboot_config_flag=" | awk -F "=" '{print $2}'` +#webservice +inmanage_webservice_path=${inmanage_install_path}/${inmanage_main_file_name}/data/webservice + +ip_old_1="" +ip_old_2="" +ip_old_3="" +ip_old_4="" +ip_old_5="" +ip_old_6="" + +error_flag=0 +CURRENT_DIR=$(dirname $(readlink -f $0)) +#ip正则 +ip_pattern="^([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" + + +#更新进度输入方法 +print_rate() { + cd ${CURRENT_DIR} + #参数1 提示信息的中英文 + note_language=`echo $1 | awk -F ":" '{print $1}'` + #参数2 提示信息内容 + note_info=`echo $1 | awk -F ":" '{print $2}'` + #参数3 步骤执行结果 + result_flag=`echo $1 | awk -F ":" '{print $3}'` + #提示信息和环境语言一致时才打印对应语言的提示信息 + if [[ ${inmanage_language} == ${note_language} ]];then + if [[ ${result_flag} == "success" ]];then + colour_note=$(echo -e "\033[1;7;32m${note_info}\033[0m") + printf "[%-101s]\n\n" "${colour_note}" + exit 0 + fi + if [[ ${result_flag} == "failed" ]];then + colour_note=$(echo -e "\033[1;7;31m${note_info}\033[0m") + printf "[%-101s]\n\n" "${colour_note}" + exit 0 + fi + + if [[ -n ${note_info} ]];then + #内容颜色为蓝色34 + colour_note=$(echo -e "\033[1;6;34m${note_info}\033[0m") + printf "[%-101s]\n\n" "${colour_note}" + fi + fi + sleep 0.1 +} + +#检查命令是否报错 +check_error() { + if [ $? -ne 0 ]; then + error_flag=1 + echo -e + echo -e + print_rate "zh:执行过程出现异常........................................................................:failed" + print_rate "en:An error occurred during running:failed" + else + error_flag=0 + fi +} + +#检查ip +check_ip() { + cd ${CURRENT_DIR} + + echo -e "\033[1;6;34m+————————————————————————————————————————————————————————————————————————————————————————+\033[0m\n" + echo -e "\033[1;6;34m Iboot Server Installing Toolkits \033[0m\n" + echo -e "\033[1;6;34m+————————————————————————————————————————————————————————————————————————————————————————+\033[0m\n" + + ip_list="${ip_1} ${ip_2} ${ip_3} ${ip_4} ${ip_5} ${ip_6}" + i=1 + for ip in ${ip_list} + do + if [[ ${ip} =~ ${ip_pattern} ]];then + print_rate "zh:IP ${i} 校验通过..........................................................................." + print_rate "en:IP ${i} validates" + else + print_rate "zh:IP ${i} 格式错误...........................................................................:failed" + print_rate "en:The IP ${i} format is wrong:failed" + fi + let i=i+1 + done +} + +#检查是否已经配置过ip +check_config_flag() { + print_rate "zh:检测当前是否为重复配置.................................................................." + print_rate "Check if the current configuration is duplicate" + cp -rf /usr/local/ibootcfg/data/iboot/init/ibootInstall/cfg/dhcpd-sample.conf /etc/dhcp/dhcpd.conf + cp -rf /usr/local/ibootcfg/data/iboot/init/ibootInstall/cfg/menu-sample.ipxe /opt/inmanage/data/webservice/menu.ipxe + cp -rf /usr/local/ibootcfg/data/iboot/init/ibootInstall/cfg/MAC-sample.ini /opt/inmanage/data/webservice/MAC.ini + +} + +#dhcp +config_dhcp() { + print_rate "zh:配置dhcp................................................................................" + print_rate "Configuring dhcp" + sed -i s/"192.168.1.2"/"${ip_1}"/g /etc/dhcp/dhcpd.conf + check_error + sed -i s/"192.168.1.2:32352"/"${ip_2}:32352"/g /etc/dhcp/dhcpd.conf + check_error + sed -i s/"192.168.0.0"/"${ip_3}"/g /etc/dhcp/dhcpd.conf + check_error + sed -i s/"255.255.0.0"/"${ip_4}"/g /etc/dhcp/dhcpd.conf + check_error + sed -i s/"192.168.0.50"/"${ip_5}"/g /etc/dhcp/dhcpd.conf + check_error + sed -i s/"192.168.127.249"/"${ip_6}"/g /etc/dhcp/dhcpd.conf + check_error +} + +#pxe +config_pxe() { + print_rate "zh:配置pxe................................................................................." + print_rate "Configuring pxe" + sed -i s/"192.168.1.2"/"${ip_2}"/g ${inmanage_webservice_path}/MAC.ini + check_error + sed -i s/"192.168.1.2"/"${ip_2}"/g ${inmanage_webservice_path}/menu.ipxe + check_error + echo ${ip_1} > ${inmanage_webservice_path}/dhcpip + echo ${ip_2} > ${inmanage_webservice_path}/webserverip +} + +restart() { + print_rate "zh:重启服务................................................................................" + print_rate "Restart services" + sed -i 's/^inmanage_iboot_config_flag=.*/inmanage_iboot_config_flag=true/' /etc/INMANAGE + systemctl restart tftp + check_error + systemctl restart nginx + check_error + systemctl restart smb + check_error + systemctl restart xinetd + check_error + systemctl restart dhcpd + check_error + print_rate "zh:配置完成................................................................................" + print_rate "Configuration complete" +} + +#入参 +if [[ -z ${param_one} ]];then + cd ${CURRENT_DIR} + instructions_for_use +elif [[ ${param_one} == "iboot" && -n ${ip_6} ]];then + cd ${CURRENT_DIR} + check_ip + check_config_flag + config_dhcp + config_pxe + restart +else + instructions_for_use +fi \ No newline at end of file diff --git a/InManageBoot-installer/Public/imcli b/InManageBoot-installer/Public/imcli new file mode 100644 index 0000000000000000000000000000000000000000..89593e9477641fa4f45ca6a0858faf6d5f309e40 --- /dev/null +++ b/InManageBoot-installer/Public/imcli @@ -0,0 +1,65 @@ +#!/bin/bash + +#脚本入参 +param_one=$(echo $1 | tr [A-Z] [a-z]) +param_two=$(echo $2 | tr [A-Z] [a-z]) +param_three=$(echo $3 | tr [A-Z] [a-z]) +param_four=$(echo $4 | tr [A-Z] [a-z]) +param_five=$(echo $5 | tr [A-Z] [a-z]) +param_six=$(echo $6 | tr [A-Z] [a-z]) +param_seven=$(echo $7 | tr [A-Z] [a-z]) +param_eight=$(echo $8 | tr [A-Z] [a-z]) + +#中英文 +inmanage_language=`cat /etc/INMANAGE | grep "inmanage_language=" | awk -F "=" '{print $2}'` + +CURRENT_DIR=$(dirname $(readlink -f $0)) + +#共有打印日志方法 +print_rate() { + cd ${CURRENT_DIR} + + note_language=`echo $1 | awk -F ":" '{print $1}'` + note_info=`echo $1 | awk -F ":" '{print $2}'` + colour_note=$(echo -e "\033[1;6;37m${note_info}\033[0m") + if [[ ${inmanage_language} == "zh" && ${note_language} == "zh" ]];then + printf "[%-s]\n" "${colour_note}" + elif [[ ${inmanage_language} == "en" && ${note_language} == "en" ]];then + printf "[%-s]\n" "${colour_note}" + fi +} + +instructions_for_use() { + echo -e "\033[1;6;34m+————————————————————————————————————————————————————————————————————————————————————————+\033[0m" + if [[ ${inmanage_language} == "zh" ]];then + echo -e "\033[1;6;37m imcli config \033[0m\033[1;6;32m配置操作\033[0m" + echo -e + + else + echo -e "\033[1;6;37m imcli config \033[0m\033[1;6;32mConfig operations\033[0m" + echo -e + + fi + echo -e "\033[1;6;34m+————————————————————————————————————————————————————————————————————————————————————————+\033[0m" +} + +#入参 +if [[ -z ${param_one} ]];then + cd ${CURRENT_DIR} + instructions_for_use +elif [[ -n ${param_one} && -z ${param_two} ]];then + echo "one param" +elif [[ -n ${param_one} && -n ${param_two} ]];then + case "${param_one}" in + config) + sh /usr/local/bin/config ${param_two} ${param_three} ${param_four} ${param_five} ${param_six} ${param_seven} ${param_eight} + ;; + *) + instructions_for_use + exit 1 + esac +else + exit 1 +fi + + diff --git a/InManageBoot-installer/Public/my.cnf b/InManageBoot-installer/Public/my.cnf new file mode 100644 index 0000000000000000000000000000000000000000..e718d64048a25eab1acbec95459e962ebe7cead3 --- /dev/null +++ b/InManageBoot-installer/Public/my.cnf @@ -0,0 +1,61 @@ +[client] +port=3306 +socket=/opt/inmanage/mysql/mysql.sock +default-character-set=utf8 + +[mysqld] +server-id=1 +event_scheduler=ON +skip-name-resolve +datadir=/opt/inmanage/mysql +port=3306 +socket=/opt/inmanage/mysql/mysql.sock +default-storage-engine=INNODB +sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' +max_binlog_size=100M +expire_logs_days=1 +wait_timeout=1800 +interactive_timeout=1800 + +innodb_file_per_table=1 +max_connections=5000 +max_allowed_packet=16M +sort_buffer_size=512K +net_buffer_length=8K +read_buffer_size=256K +read_rnd_buffer_size=512K +character_set_server=utf8 +thread_cache_size=300 +tmp_table_size=500M +max_heap_table_size=300M +local_infile=0 + +slow-query-log=1 +slow-query-log-file=/opt/inmanage/mysql/mysql-slow-query.log +long_query_time=1 +log-error=/opt/inmanage/mysql/mysqld-error.log +local-infile=0 +log_slave_updates=1 + +[mysqldump] +quick +max_allowed_packet=32M + +[mysql] +no-auto-rehash + +[mysqlhotcopy] +interactive-timeout +key_buffer_size=32M +query_cache_type=ON +query_cache_size=64M +tmp_table_size=64M +join_buffer_size=256k +thread_stack=256k +binlog_cache_size=256k +innodb_data_home_dir=/opt/inmanage/mysql +innodb_log_group_home_dir=/opt/inmanage/mysql +innodb_buffer_pool_size=5G +innodb_log_file_size=256M +innodb_log_buffer_size=8M +innodb_flush_log_at_trx_commit=2 \ No newline at end of file diff --git a/README.md b/README.md index 75fccb4f489bde4c3b09c31c7943b4279a4ecb8a..a6fc93debf46798d8cb10d81851670bef0835fa2 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ InManageBoot批量上架是基于PXE技术实现的大规模批量部署功能 ### 系统依赖 -- RedHat/CentOS 7.0以上版本,对系统安装的包没有要求,最小化安装即可 +- Anolis OS 8 以上版本,对系统安装的包没有要求,最小化安装即可 - 关闭防火墙 ``` service iptables stop @@ -116,7 +116,14 @@ InManageBoot批量上架是基于PXE技术实现的大规模批量部署功能 - mysql组件配置 1. 使用配置中的my.cnf文件替换/etc/my.cnf文件 +``` +cp [源码目录]/InManageBoot-installer/Public/my.cnf /etc/my.cnf +``` 2. 拷贝项目中的add_index.sql文件至/usr/local/ibootcfg/lib/目录 +``` +mkdir -p /usr/local/ibootcfg/lib/ +cp [源码目录]/InManageBoot-installer/Public/add_index.sql /usr/local/ibootcfg/lib/ +``` 2. 初始化mysql密码,执行如下命令 ``` mkdir -p /opt/inmanage/mysql @@ -136,6 +143,9 @@ InManageBoot批量上架是基于PXE技术实现的大规模批量部署功能 - samba配置 1. 拷贝smb-sample.conf至/etc/samba/smb.conf +``` +cp [源码目录]/InManageBoot-installer/ispimdata/iboot/init/ibootInstall/cfg/smb-sample.conf /etc/samba/smb.conf +``` 2. 执行配置命令 ``` mkdir -p /usr/local/samba/windows_driver @@ -148,19 +158,74 @@ useradd isib -g sambagroup -s /sbinlogin > /dev/null 2>&1 - nginx配置 1. 拷贝nginx.conf至/etc/nginx/nginx.conf +``` +cp [源码目录]/InManageBoot-installer/ispimdata/iboot/init/ibootInstall/cfg/nginx.conf /etc/nginx/nginx.conf +``` - tftp配置 1. 拷贝tftp-sample文件至/etc/xinetd.d/tftp +``` +cp [源码目录]/InManageBoot-installer/ispimdata/iboot/init/ibootInstall/cfg/tftp-sample /etc/xinetd.d/tftp +``` 2. 执行配置命令 ``` mkdir -p /usr/local/tftpboot/ -cp -rf ibootcfg/data/iboot/init/ibootInstall/cfg/{ipxe.efi,snponly.efi,undionly.kpxe} /usr/local/tftpboot/ +cp -rf [源码目录]/InManageBoot-installer/ispimdata/iboot/init/ibootInstall/cfg/{ipxe.efi,snponly.efi,undionly.kpxe} /usr/local/tftpboot/ chmod -R 755 /usr/local/tftpboot/ ``` - dhcp配置 1. 拷贝dhcpd-sample.conf至/etc/dhcp/dhcpd.conf +``` +cp [源码目录]/InManageBoot-installer/ispimdata/iboot/init/ibootInstall/cfg/dhcpd-sample.conf /etc/dhcp/dhcpd.conf +``` + +- InManageBoot自身工具配置 +1. 拷贝imcli工具、INMANAGE配置文件到系统下 +``` +cp [源码目录]/InManageBoot-installer/Public/imcli /usr/local/bin +cp [源码目录]/InManageBoot-installer/Public/config /usr/local/bin +chmod -R 777 /usr/local/bin +cp [源码目录]/InManageBoot-installer/Public/INMANAGE /etc/ +``` +2. 拷贝data目录至环境 +``` +mkdir -p /opt/inmanage/ +cp -rf [源码目录]/InManageBoot-installer/ispimdata/iboot /opt/inmanage/ +cp -rf [源码目录]/InManageBoot-installer/ispimdata/webservice /opt/inmanage/ +``` +### 后端代码编译 +1. 配置maven仓库 +将编译用到的第三方jar包上传到个人maven仓库 +2. jar包编译 +``` +cd [源码目录]/InManageBoot-iboot/cosmos-biz/cosmos-biz-iboot/cosmos-biz-iboot-base/cosmos-biz-iboot-base-application +mvn clean install -P thinjar -DskipTests -U -e dependency:copy-dependencies -DoutputDirectory=/tmp/dist -DincludeScope=runtime +cp -rf /tmp/dist* /opt/inmanage/iboot/libs/ + +``` + +### 前端代码编译 +- 安装node +1. 下载node-v16.20.2-linux-x64.tar.gz +2. 解压安装 +``` +mkdir -p /usr/local/node +tar -xzvf node-v16.20.2-linux-x64.tar.gz -C /usr/local/node +ln -sf /usr/local/node/node-v16.20.2-linux-x64/bin/node /usr/bin/node +ln -sf /usr/local/node/node-v16.20.2-linux-x64/bin/npm /usr/bin/npm +``` + +- 代码编译 +1.在源码InManageBoot-ui目录执行编译命令 +``` +cd [源码目录]/InManageBoot-ui +unzip node_modules.zip +rm -rf dist +npm run build +cp -rf dist /opt/inmanage/cdcnode +``` ## 项目地址