This is an automated email from the ASF dual-hosted git repository.

arshad pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/seatunnel-web.git


The following commit(s) were added to refs/heads/main by this push:
     new f410d8d9 [Feature] Add Seatunnel Ambari MPack Support (#290)
f410d8d9 is described below

commit f410d8d92d7fd9293452b9f7867d7882322dc997
Author: Mohammad Arshad <[email protected]>
AuthorDate: Mon Apr 28 09:30:03 2025 +0530

    [Feature] Add Seatunnel Ambari MPack Support (#290)
---
 pom.xml                                            |   1 +
 seatunnel-mpack/README.md                          |  39 +++
 seatunnel-mpack/pom.xml                            |  55 ++++
 .../src/main/assemblies/seatunnel-mpack.xml        |  55 ++++
 .../2.3.8/configuration/ranger-seatunnel-audit.xml | 133 +++++++++
 .../ranger-seatunnel-plugin-properties.xml         | 134 +++++++++
 .../ranger-seatunnel-policymgr-ssl.xml             |  72 +++++
 .../configuration/ranger-seatunnel-security.xml    |  64 ++++
 .../2.3.8/configuration/seatunnel-common.xml       |  51 ++++
 .../2.3.8/configuration/seatunnel-hazelcast.xml    |  44 +++
 .../configuration/seatunnel-web-application.xml    | 217 ++++++++++++++
 .../SEATUNNEL/2.3.8/configuration/seatunnel.xml    | 105 +++++++
 .../addon-services/SEATUNNEL/2.3.8/metainfo.xml    | 111 +++++++
 .../2.3.8/package/scripts/config_seatunnel.py      |  89 ++++++
 .../2.3.8/package/scripts/config_seatunnel_web.py  |  55 ++++
 .../SEATUNNEL/2.3.8/package/scripts/params.py      | 327 +++++++++++++++++++++
 .../SEATUNNEL/2.3.8/package/scripts/seatunnel.py   |  66 +++++
 .../2.3.8/package/scripts/seatunnel_web.py         |  69 +++++
 .../2.3.8/package/scripts/service_check.py         |  52 ++++
 .../package/scripts/setup_ranger_seatunnel.py      |  80 +++++
 .../SEATUNNEL/2.3.8/properties/application.yaml    |  87 ++++++
 .../2.3.8/properties/hazelcast-client.yaml         |  28 ++
 .../SEATUNNEL/2.3.8/properties/hazelcast.yaml      |  48 +++
 .../SEATUNNEL/2.3.8/properties/jvm_client_options  |  24 ++
 .../SEATUNNEL/2.3.8/properties/jvm_options         |  30 ++
 .../SEATUNNEL/2.3.8/properties/log4j2.properties   | 103 +++++++
 .../2.3.8/properties/log4j2_client.properties      |  81 +++++
 .../SEATUNNEL/2.3.8/properties/logback-spring.xml  |  47 +++
 .../SEATUNNEL/2.3.8/properties/seatunnel-env.sh    |  27 ++
 .../2.3.8/properties/seatunnel-web-env.sh          |  37 +++
 .../SEATUNNEL/2.3.8/properties/seatunnel.yaml      |  39 +++
 .../SEATUNNEL/2.3.8/quicklinks/quicklinks.json     |  49 +++
 .../SEATUNNEL/2.3.8/role_command_order.json        |  11 +
 .../extensions/SEATUNNEL/2.3.8/metainfo.xml        |  23 ++
 seatunnel-mpack/src/main/resources/mpack.json      |  37 +++
 35 files changed, 2490 insertions(+)

diff --git a/pom.xml b/pom.xml
index e62d4f9b..ce4ce9fd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,6 +38,7 @@
         <module>seatunnel-datasource</module>
         <module>seatunnel-web-dist</module>
         <module>seatunnel-web-it</module>
+        <module>seatunnel-mpack</module>
     </modules>
 
     <properties>
diff --git a/seatunnel-mpack/README.md b/seatunnel-mpack/README.md
new file mode 100644
index 00000000..33a0814a
--- /dev/null
+++ b/seatunnel-mpack/README.md
@@ -0,0 +1,39 @@
+## Seaatunnel Ambari MPack Installation Guide
+
+**Note:** Replace `versions`, `paths`, and `urls` with values applicable to 
your environment.
+### Stop the Ambari server:
+```bash
+ambari-server stop
+```
+### Uninstall MPack, if already installed
+```bash
+ambari-server uninstall-mpack --mpack-name seatunnel-mpack --verbose
+```
+### Install the Seatunnel MPack on Ambari Server:
+Execute the following command to install the Seatunnel MPack on the Ambari 
server.
+
+```bash
+ambari-server install-mpack --mpack=${mpack_url} --verbose
+# Example:
+ambari-server install-mpack 
--mpack=http://localhost:8080/myrepo/mpack-mpack-2.3.8.tar.gz --verbose
+
+# Specify the local path to the MPack tarball if it is available on your 
system:
+# Example:
+ambari-server install-mpack 
--mpack=/some/path/mpack-mpack-${mpack_version}.tar.gz --verbose
+```
+
+### Install Seatunnel MPack on Ambari agents:
+Ambari server does not automatically copy the MPack to all agents. Manually 
copy the MPack to all agents.
+Commands for reference:
+```bash
+# From Ambari server machine:
+stack-version=3.3.0
+cp -r 
/var/lib/ambari-server/resources/stacks/BIGTOP/${stack-version}/services/SEATUNNEL
 /var/lib/ambari-agent/cache/stacks/BIGTOP/${stack-version}/services/
+scp -r 
/var/lib/ambari-server/resources/stacks/BIGTOP/${stack-version}/services/SEATUNNEL
 
username@agent_host2:/var/lib/ambari-agent/cache/stacks/BIGTOP/${stack-version}/services/
+scp -r 
/var/lib/ambari-server/resources/stacks/BIGTOP/${stack-version}/services/SEATUNNEL
 
username@agent_host3:/var/lib/ambari-agent/cache/stacks/BIGTOP/${stack-version}/services/
+```
+
+### Start the Ambari server:
+```bash
+ambari-server start
+```
\ No newline at end of file
diff --git a/seatunnel-mpack/pom.xml b/seatunnel-mpack/pom.xml
new file mode 100644
index 00000000..14cdc873
--- /dev/null
+++ b/seatunnel-mpack/pom.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   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
+
+       http://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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.seatunnel</groupId>
+        <artifactId>seatunnel-web</artifactId>
+        <version>${revision}</version>
+    </parent>
+
+    <artifactId>seatunnel-mpack</artifactId>
+    <packaging>pom</packaging>
+    <name>SeaTunnel Ambari MPack</name>
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <configuration>
+                    <finalName>seatunnel-mpack-${project.version}</finalName>
+                    <appendAssemblyId>false</appendAssemblyId>
+                    <descriptors>
+                        
<descriptor>src/main/assemblies/seatunnel-mpack.xml</descriptor>
+                    </descriptors>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>build-tarball</id>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <phase>package</phase>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/seatunnel-mpack/src/main/assemblies/seatunnel-mpack.xml 
b/seatunnel-mpack/src/main/assemblies/seatunnel-mpack.xml
new file mode 100644
index 00000000..d3108678
--- /dev/null
+++ b/seatunnel-mpack/src/main/assemblies/seatunnel-mpack.xml
@@ -0,0 +1,55 @@
+<!--
+   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
+
+       http://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.
+-->
+<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0";
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 
http://maven.apache.org/xsd/assembly-2.1.0.xsd";>
+    <id>archive</id>
+    <formats>
+        <format>tar.gz</format>
+    </formats>
+    <includeBaseDirectory>true</includeBaseDirectory>
+    <fileSets>
+        <fileSet>
+            <directory>src/main/resources/addon-services</directory>
+            <outputDirectory>addon-services</outputDirectory>
+            <includes>
+                <include>**</include>
+            </includes>
+        </fileSet>
+        <fileSet>
+            <directory>src/main/resources/extensions</directory>
+            <outputDirectory>extensions</outputDirectory>
+            <includes>
+                <include>**</include>
+            </includes>
+        </fileSet>
+        <fileSet>
+            <directory>src/main/resources/extensions</directory>
+            <outputDirectory>extensions</outputDirectory>
+            <includes>
+                <include>**</include>
+            </includes>
+        </fileSet>
+        <fileSet>
+            <directory>src/main/resources</directory>
+            <outputDirectory>.</outputDirectory>
+            <includes>
+                <include>mpack.json</include>
+            </includes>
+        </fileSet>
+    </fileSets>
+</assembly>
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/ranger-seatunnel-audit.xml
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/ranger-seatunnel-audit.xml
new file mode 100755
index 00000000..9193407b
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/ranger-seatunnel-audit.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * 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
+ *
+ *     http://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.
+ */
+-->
+<configuration>
+  <property>
+    <name>xasecure.audit.is.enabled</name>
+    <value>true</value>
+    <description>Is Audit enabled?</description>
+    <value-attributes>
+      <type>boolean</type>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.hdfs</name>
+    <value>true</value>
+    <display-name>Audit to HDFS</display-name>
+    <description>Is Audit to HDFS enabled?</description>
+    <value-attributes>
+      <type>boolean</type>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>ranger-env</type>
+        <name>xasecure.audit.destination.hdfs</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.hdfs.dir</name>
+    <value>hdfs://NAMENODE_HOSTNAME:8020/ranger/audit</value>
+    <description>HDFS folder to write audit to, make sure the service user has 
requried permissions</description>
+    <depends-on>
+      <property>
+        <type>ranger-env</type>
+        <name>xasecure.audit.destination.hdfs.dir</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.hdfs.batch.filespool.dir</name>
+    <value>/var/log/seatunnel-web/audit/hdfs/spool</value>
+    <description>/var/log/seatunnel-web/audit/hdfs/spool</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.solr</name>
+    <value>false</value>
+    <display-name>Audit to SOLR</display-name>
+    <description>Is Solr audit enabled?</description>
+    <value-attributes>
+      <type>boolean</type>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>ranger-env</type>
+        <name>xasecure.audit.destination.solr</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.solr.urls</name>
+    <value/>
+    <description>Solr URL</description>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>ranger-admin-site</type>
+        <name>ranger.audit.solr.urls</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.solr.zookeepers</name>
+    <value>NONE</value>
+    <description>Solr Zookeeper string</description>
+    <depends-on>
+      <property>
+        <type>ranger-admin-site</type>
+        <name>ranger.audit.solr.zookeepers</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.destination.solr.batch.filespool.dir</name>
+    <value>/var/log/seatunnel-web/audit/solr/spool</value>
+    <description>/var/log/seatunnel-web/audit/solr/spool</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.audit.provider.summary.enabled</name>
+    <value>false</value>
+    <display-name>Audit provider summary enabled</display-name>
+    <description>Enable Summary audit?</description>
+    <value-attributes>
+      <type>boolean</type>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger.plugin.seatunnel.ambari.cluster.name</name>
+    <value>{{cluster_name}}</value>
+    <description>Capture cluster name from where Ranger seatunnel plugin is 
enabled.</description>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+</configuration>
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/ranger-seatunnel-plugin-properties.xml
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/ranger-seatunnel-plugin-properties.xml
new file mode 100755
index 00000000..e30173aa
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/ranger-seatunnel-plugin-properties.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ * 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
+ *
+ *     http://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.
+ */
+-->
+<configuration supports_final="true">
+  <property>
+    <name>common.name.for.certificate</name>
+    <value/>
+    <description>Common name for certificate, this value should match what is 
specified in repo within ranger admin</description>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>policy_user</name>
+    <value>ambari-qa</value>
+    <display-name>Policy user for SEATUNNEL</display-name>
+    <depends-on>
+      <property>
+        <type>ranger-env</type>
+        <name>ranger_user</name>
+      </property>
+    </depends-on>
+    <description>This user must be system user and also present at Ranger 
admin portal</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger-seatunnel-plugin-enabled</name>
+    <value>No</value>
+    <display-name>Enable Ranger for seatunnel</display-name>
+    <description>Enable ranger seatunnel plugin ?</description>
+    <value-attributes>
+      <type>boolean</type>
+      <overridable>false</overridable>
+    </value-attributes>
+    <depends-on>
+      <property>
+        <type>ranger-env</type>
+        <name>ranger-seatunnel-plugin-enabled</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>REPOSITORY_CONFIG_USERNAME</name>
+    <value>admin</value>
+    <display-name>Ranger repository config user</display-name>
+    <description>Used for repository creation on ranger admin</description>
+    <depends-on>
+      <property>
+        <type>ranger-seatunnel-plugin-properties</type>
+        <name>ranger-seatunnel-plugin-enabled</name>
+      </property>
+      <property>
+        <type>seatunnel-env</type>
+        <name>seatunnel_user</name>
+      </property>
+    </depends-on>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>REPOSITORY_CONFIG_PASSWORD</name>
+    <value>seatunnel</value>
+    <display-name>Ranger repository config password</display-name>
+    <property-type>PASSWORD</property-type>
+    <description>Used for repository creation on ranger admin</description>
+    <value-attributes>
+      <type>password</type>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+
+  <property>
+    <name>external_admin_username</name>
+    <value/>
+    <display-name>External Ranger admin username</display-name>
+    <description>Add ranger default admin username if want to communicate to 
external ranger</description>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>external_admin_password</name>
+    <value/>
+    <display-name>External Ranger admin password</display-name>
+    <property-type>PASSWORD</property-type>
+    <description>Add ranger default admin password if want to communicate to 
external ranger</description>
+    <value-attributes>
+      <type>password</type>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>external_ranger_admin_username</name>
+    <value/>
+    <display-name>External Ranger Ambari admin username</display-name>
+    <description>Add ranger default ambari admin username if want to 
communicate to external ranger</description>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>external_ranger_admin_password</name>
+    <value/>
+    <display-name>External Ranger Ambari admin password</display-name>
+    <property-type>PASSWORD</property-type>
+    <description>Add ranger default ambari admin password if want to 
communicate to external ranger</description>
+    <value-attributes>
+      <type>password</type>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+</configuration>
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/ranger-seatunnel-policymgr-ssl.xml
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/ranger-seatunnel-policymgr-ssl.xml
new file mode 100755
index 00000000..88ec4ad4
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/ranger-seatunnel-policymgr-ssl.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * 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
+ *
+ *     http://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.
+ */
+-->
+<configuration>
+  <property>
+    <name>xasecure.policymgr.clientssl.keystore</name>
+    <value/>
+    <description>Java Keystore files</description>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.policymgr.clientssl.keystore.password</name>
+    <value>myKeyFilePassword</value>
+    <property-type>PASSWORD</property-type>
+    <description>password for keystore</description>
+    <value-attributes>
+      <type>password</type>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.policymgr.clientssl.truststore</name>
+    <value/>
+    <description>java truststore file</description>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.policymgr.clientssl.truststore.password</name>
+    <value>changeit</value>
+    <property-type>PASSWORD</property-type>
+    <description>java truststore password</description>
+    <value-attributes>
+      <type>password</type>
+    </value-attributes>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.policymgr.clientssl.keystore.credential.file</name>
+    <value>jceks://file{{credential_file}}</value>
+    <description>java keystore credential file</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>xasecure.policymgr.clientssl.truststore.credential.file</name>
+    <value>jceks://file{{credential_file}}</value>
+    <description>java truststore credential file</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+</configuration>
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/ranger-seatunnel-security.xml
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/ranger-seatunnel-security.xml
new file mode 100755
index 00000000..344c359a
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/ranger-seatunnel-security.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * 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
+ *
+ *     http://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.
+ */
+-->
+<configuration>
+  <property>
+    <name>ranger.plugin.seatunnel.service.name</name>
+    <value>{{repo_name}}</value>
+    <description>Name of the Ranger service containing Seatunnel 
policies</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger.plugin.seatunnel.policy.source.impl</name>
+    <value>org.apache.ranger.admin.client.RangerAdminRESTClient</value>
+    <description>Class to retrieve policies from the source</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger.plugin.seatunnel.policy.rest.url</name>
+    <value>{{policymgr_mgr_url}}</value>
+    <description>URL to Ranger Admin</description>
+    <on-ambari-upgrade add="false"/>
+    <depends-on>
+      <property>
+        <type>admin-properties</type>
+        <name>policymgr_external_url</name>
+      </property>
+    </depends-on>
+  </property>
+  <property>
+    <name>ranger.plugin.seatunnel.policy.rest.ssl.config.file</name>
+    <value>/etc/seatunnel-web/conf/ranger-policymgr-ssl.xml</value>
+    <description>Path to the file containing SSL details to contact Ranger 
Admin</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger.plugin.seatunnel.policy.pollIntervalMs</name>
+    <value>30000</value>
+    <description>How often to poll for changes in policies?</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+  <property>
+    <name>ranger.plugin.seatunnel.policy.cache.dir</name>
+    <value>/etc/ranger/{{repo_name}}/policycache</value>
+    <description>Directory where Ranger policies are cached after successful 
retrieval from the source</description>
+    <on-ambari-upgrade add="false"/>
+  </property>
+</configuration>
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/seatunnel-common.xml
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/seatunnel-common.xml
new file mode 100644
index 00000000..597596d6
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/seatunnel-common.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ * 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
+ *
+ *     http://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.
+ */
+-->
+<configuration>
+    <property require-input="true">
+        <name>seatunnel_cluster_name</name>
+        <value>seatunnel</value>
+        <display-name>Seatunnel Cluster Name</display-name>
+        <description>The cluster-name is used to specify the name of the 
cluster to which the job will be submitted
+        </description>
+    </property>
+    <property require-input="true">
+        <name>hazelcast_port</name>
+        <value>5801</value>
+        <display-name>Hazelcast Port</display-name>
+        <description>Hazelcast member interaction port</description>
+        <value-attributes>
+            <type>int</type>
+        </value-attributes>
+    </property>
+
+    <property require-input="true">
+        <name>hazelcast_client_config_content</name>
+        <display-name>Hazelcast Client Configuration</display-name>
+        <description>Hazelcast client configuration template</description>
+        <property-type>VALUE_FROM_PROPERTY_FILE</property-type>
+        <value/>
+        <value-attributes>
+            <type>content</type>
+            <property-file-name>hazelcast-client.yaml</property-file-name>
+            <property-file-type>text</property-file-type>
+        </value-attributes>
+    </property>
+</configuration>
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/seatunnel-hazelcast.xml
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/seatunnel-hazelcast.xml
new file mode 100644
index 00000000..1109c13d
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/seatunnel-hazelcast.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * 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
+ *
+ *     http://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.
+ */
+-->
+<configuration>
+    <property>
+        <name>enable_rest_api</name>
+        <value>false</value>
+        <display-name>Enable Hazelcast REST API</display-name>
+        <description>Enable hazelcast REST API</description>
+        <value-attributes>
+            <type>boolean</type>
+        </value-attributes>
+        <on-ambari-upgrade add="true"/>
+    </property>
+    <property>
+        <name>hazelcast_config_content</name>
+        <display-name>Hazelcast Configuration</display-name>
+        <description>Hazelcast Configuration template</description>
+        <property-type>VALUE_FROM_PROPERTY_FILE</property-type>
+        <value/>
+        <value-attributes>
+            <type>content</type>
+            <property-file-name>hazelcast.yaml</property-file-name>
+            <property-file-type>text</property-file-type>
+        </value-attributes>
+    </property>
+</configuration>
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/seatunnel-web-application.xml
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/seatunnel-web-application.xml
new file mode 100644
index 00000000..9328e828
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/seatunnel-web-application.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * 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
+ *
+ *     http://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.
+ */
+-->
+<configuration>
+    <property require-input="true">
+        <name>http_port</name>
+        <value>8801</value>
+        <display-name>Seatunnel-web HTTP Port</display-name>
+        <description>Seatunnel-web http port</description>
+        <value-attributes>
+            <type>int</type>
+        </value-attributes>
+    </property>
+    <property require-input="true">
+        <name>db_driver_class</name>
+        <value>com.mysql.cj.jdbc.Driver</value>
+        <display-name>Driver Class</display-name>
+        <description>The jdbc class name used to connect to the remote data 
source</description>
+    </property>
+    <property require-input="true">
+        <name>db_url</name>
+        
<value>jdbc:mysql://localhost:3306/seatunnel?useSSL=false&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;allowMultiQueries=true&amp;allowPublicKeyRetrieval=true</value>
+        <display-name>URL</display-name>
+        <description>The URL of the JDBC connection</description>
+    </property>
+    <property require-input="true">
+        <name>db_username</name>
+        <value>seatunnel_user</value>
+        <display-name>User Name</display-name>
+        <description>Connection instance user name</description>
+    </property>
+    <property require-input="true">
+        <name>db_password</name>
+        <value>seaTunnel_1234</value>
+        <property-type>PASSWORD</property-type>
+        <display-name>Password</display-name>
+        <description>Connection instance password</description>
+        <value-attributes>
+            <overridable>false</overridable>
+            <type>password</type>
+        </value-attributes>
+    </property>
+    <property require-input="false">
+        <name>write_job_definition_to_file</name>
+        <value>true</value>
+        <display-name>Write Job Definition to File</display-name>
+        <description>Boolean property to determine if job definitions should 
be written to a file for execution
+        </description>
+        <value-attributes>
+            <type>boolean</type>
+        </value-attributes>
+    </property>
+    <property require-input="true">
+        <name>datasource_encryption_type</name>
+        <value>base64</value>
+        <display-name>Datasource Encryption Type</display-name>
+        <description>The type of encryption used for the 
datasource</description>
+        <value-attributes>
+            <type>string</type>
+        </value-attributes>
+    </property>
+    <property require-input="true">
+        <name>jwt_expire_time</name>
+        <value>86400</value>
+        <display-name>JWT Expire time(second)</display-name>
+        <description>JSON Web Token(JWT) expire time in seconds. Default is 
86400 seconds or 24 hour</description>
+        <value-attributes>
+            <type>int</type>
+        </value-attributes>
+    </property>
+    <property require-input="true">
+        <name>jwt_secret_key</name>
+        <value>https://github.com/apache/seatunnel</value>
+        <display-name>JWT Secret Key</display-name>
+        <description>A JWT secret key is a string used to sign and verify the 
authenticity of a JSON Web Token (JWT). It
+            ensures that the token has not been tampered with. The secret key 
is shared between the server and the
+            client and must be kept secure.
+        </description>
+    </property>
+    <property require-input="true">
+        <name>jwt_algorithm</name>
+        <value>HS256</value>
+        <display-name>JWT Algorithm</display-name>
+        <description>The JWT algorithm specifies the cryptographic method used 
to secure the JSON Web Token. The
+            algorithm ensures the integrity and authenticity of the token.
+        </description>
+    </property>
+    <property require-input="true">
+        <name>seatunnel.web.ssl.enabled</name>
+        <value>false</value>
+        <display-name>Seatunnel-web SSL Enabled</display-name>
+        <description>Boolean property to enable or disable SSL for 
Seatunnel-web</description>
+        <value-attributes>
+            <type>boolean</type>
+        </value-attributes>
+    </property>
+    <property require-input="true">
+        <name>https_port</name>
+        <value>8443</value>
+        <display-name>Seatunnel-web HTTPS Port</display-name>
+        <description>Seatunnel-web https port</description>
+        <value-attributes>
+            <type>int</type>
+        </value-attributes>
+        <depends-on>
+            <property>
+                <name>seatunnel.web.ssl.enabled</name>
+                <value>true</value>
+            </property>
+        </depends-on>
+    </property>
+    <property require-input="true">
+        <name>seatunnel.web.ssl.keystore</name>
+        <value>/etc/security/serverKeys/keystore.jks</value>
+        <display-name>Seatunnel-web Keystore</display-name>
+        <description>Path to the keystore file for Seatunnel-web</description>
+        <depends-on>
+            <property>
+                <name>seatunnel.web.ssl.enabled</name>
+                <value>true</value>
+            </property>
+        </depends-on>
+    </property>
+    <property require-input="true">
+        <name>seatunnel.web.ssl.keystore.password</name>
+        <value>keystorePassword</value>
+        <property-type>PASSWORD</property-type>
+        <display-name>Seatunnel-web Keystore Password</display-name>
+        <description>Password for the keystore file</description>
+        <value-attributes>
+            <type>password</type>
+        </value-attributes>
+        <depends-on>
+            <property>
+                <name>seatunnel.web.ssl.enabled</name>
+                <value>true</value>
+            </property>
+        </depends-on>
+    </property>
+    <property require-input="true">
+        <name>seatunnel.web.ssl.keystore.type</name>
+        <value>JKS</value>
+        <display-name>Seatunnel-web Keystore Type</display-name>
+        <description>Type of the keystore (e.g., JKS, PKCS12)</description>
+        <depends-on>
+            <property>
+                <name>seatunnel.web.ssl.enabled</name>
+                <value>true</value>
+            </property>
+        </depends-on>
+    </property>
+    <property require-input="true">
+        <name>seatunnel.web.ssl.keystore.key.alias</name>
+        <value>ambari-key-alias</value>
+        <display-name>Seatunnel-web Keystore Key Alias</display-name>
+        <description>Alias for the key in the keystore</description>
+        <depends-on>
+            <property>
+                <name>seatunnel.web.ssl.enabled</name>
+                <value>true</value>
+            </property>
+        </depends-on>
+    </property>
+    <property>
+        <name>seatunnel_web_config_content</name>
+        <display-name>Seatunnel-web Configuration</display-name>
+        <description>Seatunnel-web configuration template to provide unlimited 
flexibility</description>
+        <property-type>VALUE_FROM_PROPERTY_FILE</property-type>
+        <value/>
+        <value-attributes>
+            <type>content</type>
+            <property-file-name>application.yaml</property-file-name>
+            <property-file-type>text</property-file-type>
+        </value-attributes>
+    </property>
+    <property>
+        <name>seatunnel_web_log_config_content</name>
+        <display-name>Seatunnel-web Log Config</display-name>
+        <description>Seatunnel-web log config</description>
+        <property-type>VALUE_FROM_PROPERTY_FILE</property-type>
+        <value/>
+        <value-attributes>
+            <type>content</type>
+            <property-file-name>logback-spring.xml</property-file-name>
+            <property-file-type>xml</property-file-type>
+        </value-attributes>
+    </property>
+    <property>
+        <name>seatunnel_web_env</name>
+        <display-name>Seatunnel-web Environment Configuration</display-name>
+        <description>Configure JVM related configuration</description>
+        <property-type>VALUE_FROM_PROPERTY_FILE</property-type>
+        <value/>
+        <value-attributes>
+            <type>content</type>
+            <property-file-name>seatunnel-web-env.sh</property-file-name>
+            <property-file-type>text</property-file-type>
+        </value-attributes>
+    </property>
+</configuration>
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/seatunnel.xml
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/seatunnel.xml
new file mode 100644
index 00000000..8461fc15
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/configuration/seatunnel.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * 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
+ *
+ *     http://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.
+ */
+-->
+<configuration>
+    <property>
+        <name>backup_count</name>
+        <value>1</value>
+        <display-name>Backup Count</display-name>
+        <description>Backup count is a parameter that defines the number of 
synchronous backups. Backup count should be min(1, max(5, N/2)), where N is the 
number of cluster nodes.</description>
+        <value-attributes>
+            <type>int</type>
+        </value-attributes>
+    </property>
+    <property>
+        <name>seatunnel_config_content</name>
+        <display-name>Seatunnel Configuration</display-name>
+        <description>Seatunnel configuration template to provide unlimited 
flexibility</description>
+        <property-type>VALUE_FROM_PROPERTY_FILE</property-type>
+        <value/>
+        <value-attributes>
+            <type>content</type>
+            <property-file-name>seatunnel.yaml</property-file-name>
+            <property-file-type>text</property-file-type>
+        </value-attributes>
+    </property>
+    <property>
+        <name>jvm_options</name>
+        <display-name>Seatunnel JVM Options</display-name>
+        <description>Configuration settings for Seatunnel process, including 
heap size, heap dump, metaspace, and
+            garbage collection.
+        </description>
+        <property-type>VALUE_FROM_PROPERTY_FILE</property-type>
+        <value/>
+        <value-attributes>
+            <type>content</type>
+            <property-file-name>jvm_options</property-file-name>
+            <property-file-type>text</property-file-type>
+        </value-attributes>
+    </property>
+    <property>
+        <name>jvm_client_options</name>
+        <display-name>Seatunnel-client JVM Options</display-name>
+        <description>Seatunnel-client JVM options including head size, heap 
dump etc.</description>
+        <property-type>VALUE_FROM_PROPERTY_FILE</property-type>
+        <value/>
+        <value-attributes>
+            <type>content</type>
+            <property-file-name>jvm_client_options</property-file-name>
+            <property-file-type>text</property-file-type>
+        </value-attributes>
+    </property>
+    <property>
+        <name>log4j2_properties</name>
+        <display-name>Log4j2 Configuration</display-name>
+        <description>Seatunnel log4j configuration</description>
+        <property-type>VALUE_FROM_PROPERTY_FILE</property-type>
+        <value/>
+        <value-attributes>
+            <type>content</type>
+            <property-file-name>log4j2.properties</property-file-name>
+            <property-file-type>text</property-file-type>
+        </value-attributes>
+    </property>
+    <property>
+        <name>log4j2_client_properties</name>
+        <display-name>Client Log4j2 Configuration</display-name>
+        <description>Seatunnel-client log4j2 configuration</description>
+        <property-type>VALUE_FROM_PROPERTY_FILE</property-type>
+        <value/>
+        <value-attributes>
+            <type>content</type>
+            <property-file-name>log4j2_client.properties</property-file-name>
+            <property-file-type>text</property-file-type>
+        </value-attributes>
+    </property>
+    <property>
+        <name>seatunnel_env</name>
+        <display-name>Seatunnel Environment Configuration</display-name>
+        <description>Configure Spark and Flink Home</description>
+        <property-type>VALUE_FROM_PROPERTY_FILE</property-type>
+        <value/>
+        <value-attributes>
+            <type>content</type>
+            <property-file-name>seatunnel-env.sh</property-file-name>
+            <property-file-type>text</property-file-type>
+        </value-attributes>
+    </property>
+</configuration>
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/metainfo.xml
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/metainfo.xml
new file mode 100644
index 00000000..c4cd40af
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/metainfo.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0"?>
+<!--
+   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
+
+       http://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.
+-->
+<metainfo>
+  <schemaVersion>2.0</schemaVersion>
+  <services>
+    <service>
+      <name>SEATUNNEL</name>
+      <displayName>Seatunnel</displayName>
+      <comment>SeaTunnel is a next-generation super high-performance, 
distributed, massive data integration tool.</comment>
+      <version>2.3.8</version>
+      <components>
+        <component>
+          <name>SEATUNNEL</name>
+          <timelineAppid>seatunnel</timelineAppid>
+          <displayName>Seatunnel</displayName>
+          <category>SLAVE</category>
+          <cardinality>1+</cardinality>
+          <versionAdvertised>false</versionAdvertised>
+          <commandScript>
+            <script>scripts/seatunnel.py</script>
+            <scriptType>PYTHON</scriptType>
+          </commandScript>
+          <logs>
+            <log>
+              <logId>seatunnel</logId>
+              <primary>true</primary>
+            </log>
+          </logs>
+          <configuration-dependencies>
+            <config-type>seatunnel-common</config-type>
+            <config-type>seatunnel</config-type>
+            <config-type>seatunnel-hazelcast</config-type>
+          </configuration-dependencies>
+        </component>
+        <component>
+          <name>SEATUNNEL-WEB</name>
+          <timelineAppid>seatunnel-web</timelineAppid>
+          <displayName>Seatunnel-web</displayName>
+          <category>SLAVE</category>
+          <cardinality>0-1</cardinality>
+          <versionAdvertised>false</versionAdvertised>
+          <commandScript>
+            <script>scripts/seatunnel_web.py</script>
+            <scriptType>PYTHON</scriptType>
+          </commandScript>
+          <logs>
+            <log>
+              <logId>seatunnel-web</logId>
+              <primary>true</primary>
+            </log>
+          </logs>
+          <configuration-dependencies>
+            <config-type>seatunnel-common</config-type>
+            <config-type>seatunnel-web-application</config-type>
+            <config-type>ranger-seatunnel-plugin-properties</config-type>
+            <config-type>ranger-seatunnel-audit</config-type>
+            <config-type>ranger-seatunnel-policymgr-ssl</config-type>
+            <config-type>ranger-seatunnel-security</config-type>
+          </configuration-dependencies>
+        </component>
+
+      </components>
+
+      <osSpecifics>
+        <osSpecific>
+          <osFamily>redhat8</osFamily>
+          <packages>
+            <package>
+              <name>seatunnel</name>
+            </package>
+            <package>
+              <name>seatunnel-web</name>
+            </package>
+          </packages>
+        </osSpecific>
+      </osSpecifics>
+
+      <commandScript>
+        <script>scripts/service_check.py</script>
+        <scriptType>PYTHON</scriptType>
+        <timeout>300</timeout>
+      </commandScript>
+
+      <requiredServices>
+      </requiredServices>
+
+      <quickLinksConfigurations>
+        <quickLinksConfiguration>
+          <fileName>quicklinks.json</fileName>
+          <default>true</default>
+        </quickLinksConfiguration>
+      </quickLinksConfigurations>
+
+    </service>
+  </services>
+</metainfo>
\ No newline at end of file
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/config_seatunnel.py
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/config_seatunnel.py
new file mode 100644
index 00000000..7d1b5b25
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/config_seatunnel.py
@@ -0,0 +1,89 @@
+"""
+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
+
+    http://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.
+
+"""
+from resource_management.core.resources.system import File
+from resource_management.core.source import InlineTemplate
+
+
+def configure_seatunnel():
+    import params
+    File(params.seatunnel_yaml,
+         mode=0o644,
+         owner=params.seatunnel_user,
+         group=params.seatunnel_group,
+         content=InlineTemplate(params.seatunnel_content_template)
+         )
+
+    File(params.seatunnel_jvm_options,
+         mode=0o644,
+         owner=params.seatunnel_user,
+         group=params.seatunnel_group,
+         content=InlineTemplate(params.jvm_options_template)
+         )
+
+    File(params.seatunnel_jvm_client_options,
+         mode=0o644,
+         owner=params.seatunnel_user,
+         group=params.seatunnel_group,
+         content=InlineTemplate(params.jvm_client_options_template)
+         )
+
+    File(params.seatunnel_log4j2,
+         mode=0o644,
+         owner=params.seatunnel_user,
+         group=params.seatunnel_group,
+         content=InlineTemplate(params.log4j2_properties_template)
+         )
+
+    File(params.seatunnel_log4j2_client,
+         mode=0o644,
+         owner=params.seatunnel_user,
+         group=params.seatunnel_group,
+         content=InlineTemplate(params.log4j2_client_properties_template)
+         )
+
+    # Write content to hazelcast.yaml
+    File(params.seatunnel_hazelcast,
+         mode=0o644,
+         owner=params.seatunnel_user,
+         group=params.seatunnel_group,
+         content=InlineTemplate(params.hazelcast_content_template)
+         )
+
+    # Write content to hazelcast-client.yaml
+    File(params.seatunnel_hazelcast_client,
+         mode=0o644,
+         owner=params.seatunnel_user,
+         group=params.seatunnel_group,
+         content=InlineTemplate(params.hazelcast_client_content_template)
+         )
+
+    File(params.seatunnel_env_file,
+         mode=0o644,
+         owner=params.seatunnel_user,
+         group=params.seatunnel_group,
+         content=InlineTemplate(params.seatunnel_env_template)
+         )
+
+    File(params.seatunnel_home_config_file,
+         mode=0o755,
+         owner=params.seatunnel_user,
+         group=params.seatunnel_group,
+         content=f'''export SEATUNNEL_HOME={params.seatunnel_home}
+         export PATH=$PATH:$SEATUNNEL_HOME/bin'''
+         )
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/config_seatunnel_web.py
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/config_seatunnel_web.py
new file mode 100644
index 00000000..0658a0db
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/config_seatunnel_web.py
@@ -0,0 +1,55 @@
+"""
+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
+
+    http://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.
+
+"""
+
+from resource_management.core.resources.system import File
+from resource_management.core.source import InlineTemplate
+
+
+def configure_seatunnel_web():
+    import params
+    File(params.seatunnel_web_application,
+         mode=0o644,
+         owner=params.seatunnel_user,
+         group=params.seatunnel_group,
+         content=InlineTemplate(params.seatunnel_web_config_content)
+         )
+
+    # Write content to hazelcast-client.yaml
+    File(params.seatunnel_web_hazelcast_client,
+         mode=0o644,
+         owner=params.seatunnel_user,
+         group=params.seatunnel_group,
+         content=InlineTemplate(params.hazelcast_client_content_template)
+         )
+
+    # Write content to hazelcast-client.yaml
+    File(params.seatunnel_web_logback,
+         mode=0o644,
+         owner=params.seatunnel_user,
+         group=params.seatunnel_group,
+         content=InlineTemplate(params.seatunnel_web_log_config_content)
+         )
+
+    # Write content to hazelcast-client.yaml
+    File(params.seatunnel_web_env_file,
+         mode=0o755,
+         owner=params.seatunnel_user,
+         group=params.seatunnel_group,
+         content=InlineTemplate(params.seatunnel_web_env_content)
+         )
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/params.py
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/params.py
new file mode 100644
index 00000000..e6503bf3
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/params.py
@@ -0,0 +1,327 @@
+"""
+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
+
+    http://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.
+
+"""
+
+from ambari_commons.constants import AMBARI_SUDO_BINARY
+from resource_management.libraries.functions import StackFeature
+from resource_management.libraries.functions import conf_select
+from resource_management.libraries.functions import get_kinit_path
+from resource_management.libraries.functions import stack_select
+from resource_management.libraries.functions.default import default
+from resource_management.libraries.functions.format import format
+from resource_management.libraries.functions.get_not_managed_resources import 
get_not_managed_resources
+from resource_management.libraries.functions.is_empty import is_empty
+from resource_management.libraries.functions.setup_ranger_plugin_xml import 
get_audit_configs, \
+  generate_ranger_service_config
+from resource_management.libraries.functions.stack_features import 
check_stack_feature
+from resource_management.libraries.functions.stack_features import 
get_stack_feature_version
+from resource_management.libraries.resources.hdfs_resource import HdfsResource
+from resource_management.libraries.script.script import Script
+
+# shared configs
+sudo = AMBARI_SUDO_BINARY
+config = Script.get_config()
+stack_root = Script.get_stack_root()
+java64_home = config['ambariLevelParams']['java_home']
+# get the correct version to use for checking stack features
+version_for_stack_feature_checks = get_stack_feature_version(config)
+stack_supports_ranger_kerberos = 
check_stack_feature(StackFeature.RANGER_KERBEROS_SUPPORT, 
version_for_stack_feature_checks)
+stack_supports_ranger_audit_db = 
check_stack_feature(StackFeature.RANGER_AUDIT_DB_SUPPORT, 
version_for_stack_feature_checks)
+
+security_enabled = config['configurations']['cluster-env']['security_enabled']
+hdfs_user = config['configurations']['hadoop-env']['hdfs_user']
+retryAble = default("/commandParams/command_retry_enabled", False)
+version = default("/commandParams/version", None)
+
+
+hadoop_bin_dir = stack_select.get_hadoop_dir("bin")
+hadoop_conf_dir = conf_select.get_hadoop_conf_dir()
+kinit_path_local = 
get_kinit_path(default('/configurations/kerberos-env/executable_search_paths', 
None))
+# ToDo - check how to run seatunnel kerberos via mpack configurations instead
+kinit_cmd = ""
+kinit_cmd_master = ""
+master_security_config = ""
+hbase_decommission_auth_config = ""
+
+#for create_hdfs_directory
+hostname = config['agentLevelParams']['hostname']
+hdfs_user_keytab = config['configurations']['hadoop-env']['hdfs_user_keytab']
+hdfs_user = config['configurations']['hadoop-env']['hdfs_user']
+hdfs_principal_name = 
config['configurations']['hadoop-env']['hdfs_principal_name']
+
+hdfs_site = config['configurations']['hdfs-site']
+default_fs = config['configurations']['core-site']['fs.defaultFS']
+
+dfs_type = default("/clusterLevelParams/dfs_type", "")
+
+import functools
+#create partial functions with common arguments for every HdfsResource call
+#to create/delete hdfs directory/file/copyfromlocal we need to call 
params.HdfsResource in code
+HdfsResource = functools.partial(
+  HdfsResource,
+  user=hdfs_user,
+  hdfs_resource_ignore_file = 
"/var/lib/ambari-agent/data/.hdfs_resource_ignore",
+  security_enabled = security_enabled,
+  keytab = hdfs_user_keytab,
+  kinit_path_local = kinit_path_local,
+  hadoop_bin_dir = hadoop_bin_dir,
+  hadoop_conf_dir = hadoop_conf_dir,
+  principal_name = hdfs_principal_name,
+  hdfs_site = hdfs_site,
+  default_fs = default_fs,
+  immutable_paths = get_not_managed_resources(),
+  dfs_type = dfs_type
+)
+
+#####################################
+# Seatunnel configs
+#####################################
+
+seatunnel_home = stack_root + "/current/seatunnel"
+seatunnel_conf_dir = '/etc/seatunnel/conf'
+seatunnel_web_home = stack_root + "/current/seatunnel-web"
+seatunnel_web_conf_dir = '/etc/seatunnel-web/conf'
+seatunnel_lib = seatunnel_web_home + '/libs'
+seatunnel_log_dir = '/var/log/seatunnel'
+seatunnel_web_log_dir = "/var/log/seatunnel-web"
+seatunnel_web_profile_dir = seatunnel_web_home+ "/profile"
+ranger_seatunnel_plugin_home = seatunnel_web_home + '/ranger-seatunnel-plugin'
+
+cred_lib_path = ranger_seatunnel_plugin_home+ "/install/lib/*"
+cred_setup_prefix = (
+    'ambari-python-wrap',
+    f"{ranger_seatunnel_plugin_home}/ranger_credential_helper.py",
+    '-l',
+    f"{cred_lib_path}"
+)
+
+seatunnel_user = "root"
+seatunnel_group = "root"
+
+# Seatunnel config file paths
+seatunnel_yaml = seatunnel_conf_dir + '/seatunnel.yaml'
+seatunnel_hazelcast = seatunnel_conf_dir + '/hazelcast.yaml'
+seatunnel_hazelcast_client = seatunnel_conf_dir + '/hazelcast-client.yaml'
+seatunnel_env_file = seatunnel_conf_dir + '/seatunnel-env.sh'
+seatunnel_home_config_file = '/etc/profile.d/seatunnel.sh'
+
+seatunnel_jvm_options = seatunnel_conf_dir + '/jvm_options'
+seatunnel_jvm_client_options = seatunnel_conf_dir + '/jvm_client_options'
+seatunnel_log4j2 = seatunnel_conf_dir + '/log4j2.properties'
+seatunnel_log4j2_client = seatunnel_conf_dir + '/log4j2_client.properties'
+
+# Seatunnel-web config file paths
+seatunnel_web_application = seatunnel_web_conf_dir + '/application.yml'  # 
NOTE: Currently, the file extension is .yml instead of .yaml
+seatunnel_web_hazelcast_client = seatunnel_web_conf_dir + 
'/hazelcast-client.yaml'
+seatunnel_web_logback = seatunnel_web_conf_dir + '/logback-spring.xml'
+seatunnel_web_env_file = seatunnel_web_conf_dir + '/seatunnel-web-env.sh'
+
+# Seatunnel and Seatunnel-web common configurations
+seatunnel_cluster_name = 
config['configurations']['seatunnel-common']['seatunnel_cluster_name']
+hazelcast_port = default('configurations/seatunnel-common/hazelcast_port', 
'5801')
+hazelcast_client_content_template = 
config['configurations']['seatunnel-common']['hazelcast_client_config_content']
+
+
+# Read content for seatunnel.yaml
+backup_count = config['configurations']['seatunnel']["backup_count"]
+seatunnel_content_template = 
config['configurations']['seatunnel']['seatunnel_config_content']
+jvm_options_template = config['configurations']['seatunnel']['jvm_options']
+jvm_client_options_template = 
config['configurations']['seatunnel']['jvm_client_options']
+log4j2_properties_template = 
config['configurations']['seatunnel']['log4j2_properties']
+log4j2_client_properties_template = 
config['configurations']['seatunnel']['log4j2_client_properties']
+seatunnel_env_template = config['configurations']['seatunnel']['seatunnel_env']
+
+
+
+# Read content for hazelcast.yaml
+enable_rest_api = 
default('configurations/seatunnel-hazelcast/enable_rest_api', False)
+hazelcast_content_template = 
config['configurations']['seatunnel-hazelcast']['hazelcast_config_content']
+
+seatunnel_hosts_list = config['clusterHostInfo']['seatunnel_hosts']
+seatunnel_hosts_list.sort()
+hazelcast_cluster_members = "\n".join(
+    [f"          - {host}:{hazelcast_port}" if i != 0 else f"- 
{host}:{hazelcast_port}" for i, host in
+     enumerate(seatunnel_hosts_list)])
+
+hazelcast_client_cluster_members = "\n".join(
+    [f"      - {host}:{hazelcast_port}" if i != 0 else f"- 
{host}:{hazelcast_port}" for i, host in
+     enumerate(seatunnel_hosts_list)])
+# Read content for seatunnel-web-application.yml
+seatunnel_web_hosts_list = config['clusterHostInfo']['seatunnel-web_hosts']
+seatunnel_web_hosts_list.sort()
+web_server_port = 
config['configurations']['seatunnel-web-application']['http_port']
+seatunnel_web_ssl_enabled = 
config['configurations']['seatunnel-web-application']['seatunnel.web.ssl.enabled']
+if (seatunnel_web_ssl_enabled):
+  web_server_port = 
config['configurations']['seatunnel-web-application']['https_port']
+  seatunnel_web_ssl_keystore = 
config['configurations']['seatunnel-web-application']['seatunnel.web.ssl.keystore']
+  seatunnel_web_ssl_keystore_password = 
config['configurations']['seatunnel-web-application']['seatunnel.web.ssl.keystore.password']
+  seatunnel_web_ssl_keystore_type = 
config['configurations']['seatunnel-web-application']['seatunnel.web.ssl.keystore.type']
+  seatunnel_web_ssl_keystore_key_alias = 
config['configurations']['seatunnel-web-application']['seatunnel.web.ssl.keystore.key.alias']
+
+db_driver_class = 
config['configurations']['seatunnel-web-application']['db_driver_class']
+db_url = config['configurations']['seatunnel-web-application']['db_url']
+db_username = 
config['configurations']['seatunnel-web-application']['db_username']
+db_password = 
config['configurations']['seatunnel-web-application']['db_password']
+
+
+write_job_definition_to_file = 
config['configurations']['seatunnel-web-application']['write_job_definition_to_file']
+datasource_encryption_type = 
config['configurations']['seatunnel-web-application']['datasource_encryption_type']
+jwt_expire_time = 
config['configurations']['seatunnel-web-application']['jwt_expire_time']
+jwt_secret_key = 
config['configurations']['seatunnel-web-application']['jwt_secret_key']
+jwt_algorithm = 
config['configurations']['seatunnel-web-application']['jwt_algorithm']
+
+seatunnel_web_config_content = 
config['configurations']['seatunnel-web-application']['seatunnel_web_config_content']
+seatunnel_web_log_config_content = 
config['configurations']['seatunnel-web-application']['seatunnel_web_log_config_content']
+seatunnel_web_env_content = 
config['configurations']['seatunnel-web-application']['seatunnel_web_env']
+
+
+
+# ranger hive plugin section start
+
+# ranger host
+ranger_admin_hosts = default("/clusterHostInfo/ranger_admin_hosts", [])
+has_ranger_admin = not len(ranger_admin_hosts) == 0
+
+# ranger support xml_configuration flag, instead of depending on ranger 
xml_configurations_supported/ranger-env, using stack feature
+xml_configurations_supported = 
check_stack_feature(StackFeature.RANGER_XML_CONFIGURATION, 
version_for_stack_feature_checks)
+
+# ranger seatunnel plugin enabled property
+enable_ranger_seatunnel = 
default("/configurations/ranger-seatunnel-plugin-properties/ranger-seatunnel-plugin-enabled",
 "No")
+enable_ranger_seatunnel = True if enable_ranger_seatunnel.lower() == 'yes' 
else False
+
+access_controller_class = 
"org.apache.seatunnel.app.permission.SeatunnelAccessControllerDefaultImpl"
+# get ranger seatunnel properties if enable_ranger_seatunnel is True
+if enable_ranger_seatunnel:
+  access_controller_class = 
"org.apache.ranger.authorization.seatunnel.authorizer.RangerSeatunnelAuthorizer"
+  # get ranger policy url
+  policymgr_mgr_url = 
config['configurations']['admin-properties']['policymgr_external_url']
+  if xml_configurations_supported:
+    policymgr_mgr_url = 
config['configurations']['ranger-seatunnel-security']['ranger.plugin.seatunnel.policy.rest.url']
+
+  if not is_empty(policymgr_mgr_url) and policymgr_mgr_url.endswith('/'):
+    policymgr_mgr_url = policymgr_mgr_url.rstrip('/')
+
+  # ranger audit db user
+  xa_audit_db_user = default('/configurations/admin-properties/audit_db_user', 
'rangerlogger')
+
+  # ranger seatunnel service name
+  repo_name = str(config['clusterName']) + '_seatunnel'
+  repo_name_value = 
config['configurations']['ranger-seatunnel-security']['ranger.plugin.seatunnel.service.name']
+  if not is_empty(repo_name_value) and repo_name_value != "{{repo_name}}":
+    repo_name = repo_name_value
+
+  jdbc_driver_class_name = 
config['configurations']['ranger-seatunnel-plugin-properties']['jdbc.driverClassName']
+  common_name_for_certificate = 
config['configurations']['ranger-seatunnel-plugin-properties']['common.name.for.certificate']
+  repo_config_username = 
config['configurations']['ranger-seatunnel-plugin-properties']['REPOSITORY_CONFIG_USERNAME']
+
+  # ranger-env config
+  ranger_env = config['configurations']['ranger-env']
+
+  # create ranger-env config having external ranger credential properties
+  if not has_ranger_admin and enable_ranger_seatunnel:
+    external_admin_username = 
default('/configurations/ranger-seatunnel-plugin-properties/external_admin_username',
 'admin')
+    external_admin_password = 
default('/configurations/ranger-seatunnel-plugin-properties/external_admin_password',
 'admin')
+    external_ranger_admin_username = 
default('/configurations/ranger-seatunnel-plugin-properties/external_ranger_admin_username',
 'amb_ranger_admin')
+    external_ranger_admin_password = 
default('/configurations/ranger-seatunnel-plugin-properties/external_ranger_admin_password',
 'amb_ranger_admin')
+    ranger_env = {}
+    ranger_env['admin_username'] = external_admin_username
+    ranger_env['admin_password'] = external_admin_password
+    ranger_env['ranger_admin_username'] = external_ranger_admin_username
+    ranger_env['ranger_admin_password'] = external_ranger_admin_password
+
+  ranger_plugin_properties = 
config['configurations']['ranger-seatunnel-plugin-properties']
+  policy_user = 
config['configurations']['ranger-seatunnel-plugin-properties']['policy_user']
+  repo_config_password = 
config['configurations']['ranger-seatunnel-plugin-properties']['REPOSITORY_CONFIG_PASSWORD']
+
+  ranger_downloaded_custom_connector = None
+  ranger_previous_jdbc_jar_name = None
+  ranger_driver_curl_source = None
+  ranger_driver_curl_target = None
+  ranger_previous_jdbc_jar = None
+
+  if has_ranger_admin and stack_supports_ranger_audit_db:
+  # to get db connector related properties
+    xa_audit_db_flavor = 
config['configurations']['admin-properties']['DB_FLAVOR']
+    ranger_jdbc_jar_name, ranger_previous_jdbc_jar_name, audit_jdbc_url, 
jdbc_driver = get_audit_configs(config)
+
+    ranger_downloaded_custom_connector = 
format("{tmp_dir}/{ranger_jdbc_jar_name}")
+    ranger_driver_curl_source = format("{jdk_location}/{ranger_jdbc_jar_name}")
+    ranger_driver_curl_target = 
format("{seatunnel_lib}/{ranger_jdbc_jar_name}")
+    ranger_previous_jdbc_jar = 
format("{seatunnel_lib}/{ranger_previous_jdbc_jar_name}")
+    sql_connector_jar = ''
+
+  protocol = "https" if seatunnel_web_ssl_enabled else "http"
+  # Extract host information
+  host = config['clusterHostInfo']['seatunnel-web_hosts'][0]
+  # Construct the URL
+  seatunnel_url = f"{protocol}://{host}:{web_server_port}/seatunnel/api/v1/"
+
+  seatunnel_ranger_plugin_config = {
+    'username': repo_config_username,
+    'password': repo_config_password,
+    'seatunnel.web.url': seatunnel_url,
+    'commonNameForCertificate': common_name_for_certificate
+  }
+
+  if seatunnel_web_ssl_enabled:
+    seatunnel_ranger_plugin_config.update({
+      'seatunnel.web.ssl.truststore': seatunnel_web_ssl_keystore,
+      'seatunnel.web.ssl.truststore.password': 
seatunnel_web_ssl_keystore_password,
+      'seatunnel.web.ssl.truststore.type': seatunnel_web_ssl_keystore_type
+    })
+
+  if security_enabled:
+    seatunnel_ranger_plugin_config['policy.download.auth.users'] = 
seatunnel_user
+    seatunnel_ranger_plugin_config['tag.download.auth.users'] = seatunnel_user
+    seatunnel_ranger_plugin_config['policy.grantrevoke.auth.users'] = 
seatunnel_user
+
+  custom_ranger_service_config = 
generate_ranger_service_config(ranger_plugin_properties)
+  if len(custom_ranger_service_config) > 0:
+    seatunnel_ranger_plugin_config.update(custom_ranger_service_config)
+
+  seatunnel_ranger_plugin_repo = {
+    'isEnabled': 'true',
+    'configs': seatunnel_ranger_plugin_config,
+    'description': 'Seatunnel repo',
+    'name': repo_name,
+    'type': 'seatunnel'
+  }
+
+  xa_audit_db_password = ''
+  if not 
is_empty(config['configurations']['admin-properties']['audit_db_password']) and 
stack_supports_ranger_audit_db and has_ranger_admin:
+    xa_audit_db_password = 
config['configurations']['admin-properties']['audit_db_password']
+
+  xa_audit_db_is_enabled = False
+  if xml_configurations_supported and stack_supports_ranger_audit_db:
+    xa_audit_db_is_enabled = 
config['configurations']['ranger-seatunnel-audit']['xasecure.audit.destination.db']
+
+  xa_audit_hdfs_is_enabled = 
config['configurations']['ranger-seatunnel-audit']['xasecure.audit.destination.hdfs']
 if xml_configurations_supported else False
+  ssl_keystore_password = 
config['configurations']['ranger-seatunnel-policymgr-ssl']['xasecure.policymgr.clientssl.keystore.password']
 if xml_configurations_supported else None
+  ssl_truststore_password = 
config['configurations']['ranger-seatunnel-policymgr-ssl']['xasecure.policymgr.clientssl.truststore.password']
 if xml_configurations_supported else None
+  credential_file = format('/etc/ranger/{repo_name}/cred.jceks')
+
+  # for SQLA explicitly disable audit to DB for Ranger
+  if has_ranger_admin and stack_supports_ranger_audit_db and 
xa_audit_db_flavor.lower() == 'sqla':
+    xa_audit_db_is_enabled = False
+
+cluster_name = config['clusterName']
+# ranger hive plugin section end
+
+
+
+
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/seatunnel.py
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/seatunnel.py
new file mode 100644
index 00000000..0bc14893
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/seatunnel.py
@@ -0,0 +1,66 @@
+"""
+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
+
+    http://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.
+
+"""
+import subprocess
+
+from config_seatunnel import configure_seatunnel
+from resource_management import ComponentIsNotRunning, Fail
+from resource_management.core import shell
+from resource_management.core.resources.system import Execute
+from resource_management.libraries.functions.format import format
+from resource_management.libraries.script.script import Script
+
+
+class Seatunnel(Script):
+  def install(self, env):
+    import params
+    env.set_params(params)
+    self.install_packages(env)
+
+  def configure(self, env, upgrade_type=None, config_dir=None):
+    import params
+    env.set_params(params)
+    configure_seatunnel()
+
+  def start(self, env, upgrade_type=None):
+    import params
+    env.set_params(params)
+    configure_seatunnel()
+    start_cmd = format('/usr/sbin/seatunnel start')
+    Execute(start_cmd, user=params.seatunnel_user)
+
+  def stop(self, env, upgrade_type=None):
+    import params
+    env.set_params(params)
+    stop_cmd = format('/usr/sbin/seatunnel stop')
+    Execute(stop_cmd, user=params.seatunnel_user)
+
+  def status(self, env):
+    import params
+    env.set_params(params)
+    status_cmd = format('/usr/sbin/seatunnel status')
+    code, output, error = shell.call(status_cmd, user=params.seatunnel_user, 
stderr=subprocess.PIPE, logoutput=True)
+    if code != 0:
+      raise Fail(format("Failed to execute command {status_cmd}, 
error={error}"))
+
+    if output and "is not running" in output:
+      raise ComponentIsNotRunning("Seatunnel is not running")
+
+
+if __name__ == "__main__":
+  Seatunnel().execute()
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/seatunnel_web.py
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/seatunnel_web.py
new file mode 100644
index 00000000..144445c9
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/seatunnel_web.py
@@ -0,0 +1,69 @@
+"""
+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
+
+    http://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.
+
+"""
+import subprocess
+
+from config_seatunnel_web import configure_seatunnel_web
+from resource_management.core import shell
+from resource_management.core.exceptions import ComponentIsNotRunning, Fail
+from resource_management.core.resources.system import Execute
+from resource_management.libraries.functions.format import format
+from resource_management.libraries.script.script import Script
+from setup_ranger_seatunnel import setup_ranger_seatunnel
+
+class Seatunnel_web(Script):
+    def install(self, env):
+        import params
+        env.set_params(params)
+        self.install_packages(env)
+
+
+    def configure(self, env, upgrade_type=None):
+        import params
+        env.set_params(params)
+        configure_seatunnel_web()
+
+    def start(self, env, upgrade_type=None):
+        import params
+        env.set_params(params)
+        configure_seatunnel_web()
+        setup_ranger_seatunnel(upgrade_type=upgrade_type)
+
+        start_cmd = format('/usr/sbin/seatunnel-web start')
+        Execute(start_cmd, user=params.seatunnel_user)
+
+    def stop(self, env, upgrade_type=None):
+        import params
+        env.set_params(params)
+        stop_cmd = format('/usr/sbin/seatunnel-web stop')
+        Execute(stop_cmd, user=params.seatunnel_user)
+
+    def status(self, env):
+        import params
+        env.set_params(params)
+        status_cmd = format('/usr/sbin/seatunnel-web status')
+        code, output, error = shell.call(status_cmd, 
user=params.seatunnel_user, stderr=subprocess.PIPE, logoutput=True)
+        if code != 0:
+            raise Fail(format("Failed to execute command {status_cmd}, 
error={error}"))
+
+        if output and "is not running" in output:
+            raise ComponentIsNotRunning("Seatunnel-web is not running")
+
+
+if __name__ == "__main__":
+    Seatunnel_web().execute()
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/service_check.py
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/service_check.py
new file mode 100644
index 00000000..e9e9817d
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/service_check.py
@@ -0,0 +1,52 @@
+"""
+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
+
+    http://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.
+
+"""
+import socket
+
+from resource_management import Fail
+from resource_management.core.logger import Logger
+from resource_management.libraries.functions.format import format
+from resource_management.libraries.script.script import Script
+from seatunnel import Seatunnel
+from seatunnel_web import Seatunnel_web
+
+
+class ServiceCheck(Script):
+    def service_check(self, env):
+        import params
+        env.set_params(params)
+        hostname = socket.gethostname()
+        if hostname in params.seatunnel_hosts_list:
+            Logger.info('Checking Seatunnel service')
+            try:
+                Seatunnel().status(env)
+            except Exception as e:
+                Logger.error(f'Seatunnel service check failed error: {e}')
+                raise Fail(format("Seatunnel on host {hostname} is not 
running, error={e}"))
+
+        if hostname in params.seatunnel_web_hosts_list:
+            Logger.info('Checking Seatunnel-web status')
+            try:
+                Seatunnel_web().status(env)
+            except Exception as e:
+                Logger.error(f'Seatunnel-web service check failed error: {e}')
+                raise Fail(format("Seatunnel-web on host {hostname} is not 
running, error={e}"))
+
+
+if __name__ == "__main__":
+    ServiceCheck().execute()
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/setup_ranger_seatunnel.py
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/setup_ranger_seatunnel.py
new file mode 100755
index 00000000..32f5c3ce
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/package/scripts/setup_ranger_seatunnel.py
@@ -0,0 +1,80 @@
+#!/usr/bin/env python
+"""
+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
+
+    http://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.
+
+"""
+
+# Ambari Commons & Resource Management Imports
+from resource_management.core.logger import Logger
+from resource_management.libraries.functions.setup_ranger_plugin_xml import 
setup_ranger_plugin
+
+def setup_ranger_seatunnel(upgrade_type = None):
+  import params
+
+  if params.enable_ranger_seatunnel:
+    stack_version = params.version
+
+    if params.retryAble:
+      Logger.info("Seatunnel: Setup ranger: command retry enables thus 
retrying if ranger admin is down !")
+    else:
+      Logger.info("Seatunnel: Setup ranger: command retry not enabled thus 
skipping if ranger admin is down !")
+
+    if params.xa_audit_hdfs_is_enabled:
+      try:
+        params.HdfsResource("/ranger/audit",
+                           type="directory",
+                           action="create_on_execute",
+                           owner=params.hdfs_user,
+                           group=params.hdfs_user,
+                           mode=0o755,
+                           recursive_chmod=True
+        )
+        params.HdfsResource("/ranger/audit/seatunnel",
+                           type="directory",
+                           action="create_on_execute",
+                           owner=params.seatunnel_user,
+                           group=params.seatunnel_group,
+                           mode=0o700,
+                           recursive_chmod=True
+        )
+        params.HdfsResource(None, action="execute")
+      except Exception as err:
+        Logger.exception("Audit directory creation in HDFS for HIVE Ranger 
plugin failed with error:\n{0}".format(err))
+
+    api_version='v2'
+
+    setup_ranger_plugin('seatunnel-web', 'seatunnel', 
params.ranger_previous_jdbc_jar,
+                        params.ranger_downloaded_custom_connector, 
params.ranger_driver_curl_source,
+                        params.ranger_driver_curl_target, params.java64_home,
+                        params.repo_name, params.seatunnel_ranger_plugin_repo,
+                        params.ranger_env, params.ranger_plugin_properties,
+                        params.policy_user, params.policymgr_mgr_url,
+                        params.enable_ranger_seatunnel, 
conf_dict=params.seatunnel_web_conf_dir,
+                        component_user=params.seatunnel_user, 
component_group=params.seatunnel_group, cache_service_list=['seatunnel-web'],
+                        
plugin_audit_properties=params.config['configurations']['ranger-seatunnel-audit'],
 
plugin_audit_attributes=params.config['configurationAttributes']['ranger-seatunnel-audit'],
+                        
plugin_security_properties=params.config['configurations']['ranger-seatunnel-security'],
 
plugin_security_attributes=params.config['configurationAttributes']['ranger-seatunnel-security'],
+                        
plugin_policymgr_ssl_properties=params.config['configurations']['ranger-seatunnel-policymgr-ssl'],
 
plugin_policymgr_ssl_attributes=params.config['configurationAttributes']['ranger-seatunnel-policymgr-ssl'],
+                        component_list=['seatunnel', 'seatunnel-web'], 
audit_db_is_enabled=params.xa_audit_db_is_enabled,
+                        credential_file=params.credential_file, 
xa_audit_db_password=params.xa_audit_db_password,
+                        
ssl_truststore_password=params.ssl_truststore_password, 
ssl_keystore_password=params.ssl_keystore_password,
+                        stack_version_override = stack_version, 
skip_if_rangeradmin_down= not params.retryAble, api_version=api_version,
+                        is_security_enabled = params.security_enabled,
+                        is_stack_supports_ranger_kerberos = 
params.stack_supports_ranger_kerberos,
+                        component_user_principal= None,
+                        component_user_keytab=None, 
cred_lib_path_override=params.cred_lib_path, 
cred_setup_prefix_override=params.cred_setup_prefix)
+  else:
+    Logger.info('Ranger Seatunnel plugin is not enabled')
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/application.yaml
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/application.yaml
new file mode 100644
index 00000000..87c1394c
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/application.yaml
@@ -0,0 +1,87 @@
+#
+# 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
+#
+#     http://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.
+#
+
+server:
+  port: {{web_server_port}}
+  ssl:
+    enabled: {{seatunnel_web_ssl_enabled}}
+    key-store: {{seatunnel_web_ssl_keystore}}
+    key-store-password: {{seatunnel_web_ssl_keystore_password}}
+    key-store-type: {{seatunnel_web_ssl_keystore_type}}
+    key-alias: {{seatunnel_web_ssl_keystore_key_alias}}
+spring:
+  application:
+    name: seatunnel-web
+  jackson:
+    date-format: yyyy-MM-dd HH:mm:ss
+  datasource:
+    driver-class-name: {{db_driver_class}}
+    url: {{db_url}}
+    username: {{db_username}}
+    password: {{db_password}}
+  mvc:
+    pathmatch:
+      matching-strategy: ant_path_matcher
+  ldap:
+    url: ldap://localhost:389
+    search:
+      base: ou=people,dc=example,dc=com
+      filter: (uid={0})
+      domain: example.com
+  authentication:
+    providers:
+      - DB
+      #- LDAP # LDAP authentication is disabled by default
+  async-config:
+    core-pool-size: 10
+    max-pool-size: 20
+    queue-capacity: 100
+seatunnel-web:
+  job-definition:
+    write-to-file : {{write_job_definition_to_file}}
+  datasource:
+    encryption:
+      type: {{datasource_encryption_type}}
+      keys-to-encrypt:
+        - password
+        - auth
+  access-controller-class: {{access_controller_class}}
+jwt:
+  expireTime: {{jwt_expire_time}}
+  secretKey: {{jwt_secret_key}}
+  algorithm: {{jwt_algorithm}}
+
+---
+spring:
+  config:
+    activate:
+      on-profile: h2
+  sql:
+    init:
+      schema-locations: classpath*:script/seatunnel_server_h2.sql
+  datasource:
+    driver-class-name: org.h2.Driver
+    url: 
jdbc:h2:mem:seatunnel;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_LOWER=true
+    username: sa
+    password: sa
+  h2:
+    console:
+      enabled: true
+      path: /h2
+      settings:
+        trace: false
+        web-allow-others: false
\ No newline at end of file
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/hazelcast-client.yaml
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/hazelcast-client.yaml
new file mode 100644
index 00000000..afe2e00e
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/hazelcast-client.yaml
@@ -0,0 +1,28 @@
+#
+# 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
+#
+#    http://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.
+#
+
+hazelcast-client:
+  cluster-name: {{seatunnel_cluster_name}}
+  properties:
+    hazelcast.logging.type: log4j2
+  connection-strategy:
+    connection-retry:
+      cluster-connect-timeout-millis: 3000
+  network:
+    cluster-members:
+      {{hazelcast_client_cluster_members}}
+
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/hazelcast.yaml
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/hazelcast.yaml
new file mode 100644
index 00000000..8fa90178
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/hazelcast.yaml
@@ -0,0 +1,48 @@
+#
+# 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
+#
+#    http://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.
+#
+
+hazelcast:
+  cluster-name: {{seatunnel_cluster_name}}
+  network:
+    rest-api:
+      enabled: {{enable_rest_api}}
+      endpoint-groups:
+        CLUSTER_WRITE:
+          enabled: true
+        DATA:
+          enabled: true
+    join:
+      tcp-ip:
+        enabled: true
+        member-list:
+          {{hazelcast_cluster_members}}
+
+    port:
+      auto-increment: false
+      port: {{hazelcast_port}}
+  properties:
+    hazelcast.invocation.max.retry.count: 20
+    hazelcast.tcp.join.port.try.count: 30
+    hazelcast.logging.type: log4j2
+    hazelcast.operation.generic.thread.count: 50
+    hazelcast.heartbeat.failuredetector.type: phi-accrual
+    hazelcast.heartbeat.interval.seconds: 2
+    hazelcast.max.no.heartbeat.seconds: 180
+    hazelcast.heartbeat.phiaccrual.failuredetector.threshold: 10
+    hazelcast.heartbeat.phiaccrual.failuredetector.sample.size: 200
+    hazelcast.heartbeat.phiaccrual.failuredetector.min.std.dev.millis: 100
+
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/jvm_client_options
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/jvm_client_options
new file mode 100644
index 00000000..462e1374
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/jvm_client_options
@@ -0,0 +1,24 @@
+#
+# 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
+#
+#     http://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.
+#
+
+# JVM Heap
+-Xms256m
+-Xmx512m
+
+# JVM Dump
+-XX:+HeapDumpOnOutOfMemoryError
+-XX:HeapDumpPath=/tmp/seatunnel/dump/zeta-client
\ No newline at end of file
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/jvm_options
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/jvm_options
new file mode 100644
index 00000000..c8a7218d
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/jvm_options
@@ -0,0 +1,30 @@
+#
+# 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
+#
+#     http://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.
+#
+
+# JVM Heap
+-Xms2g
+-Xmx2g
+
+# JVM Dump
+-XX:+HeapDumpOnOutOfMemoryError
+-XX:HeapDumpPath=/tmp/seatunnel/dump/zeta-server
+
+# Metaspace
+-XX:MaxMetaspaceSize=2g
+
+# G1GC
+-XX:+UseG1GC
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/log4j2.properties
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/log4j2.properties
new file mode 100644
index 00000000..256a2a8c
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/log4j2.properties
@@ -0,0 +1,103 @@
+################################################################################
+#  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
+#
+#      http://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.
+################################################################################
+
+# The minimum amount of time, in seconds, that must elapse before the file 
configuration is checked for changes.
+monitorInterval = 60
+
+property.file_path = ${sys:seatunnel.logs.path:-/tmp/seatunnel/logs}
+property.file_name = ${sys:seatunnel.logs.file_name:-seatunnel}
+property.file_split_size = 100MB
+property.file_count = 100
+property.file_ttl = 7d
+
+rootLogger.level = INFO
+
+logger.zeta.name=org.apache.seatunnel.engine
+logger.zeta.level=INFO
+
+logger.debezium.name=io.debezium.connector
+logger.debezium.level=WARN
+
+############################ log output to console 
#############################
+#rootLogger.appenderRef.consoleStdout.ref = consoleStdoutAppender
+#rootLogger.appenderRef.consoleStderr.ref = consoleStderrAppender
+############################ log output to console 
#############################
+############################ log output to file    
#############################
+rootLogger.appenderRef.file.ref = fileAppender
+############################ log output to file    
#############################
+
+appender.consoleStdout.name = consoleStdoutAppender
+appender.consoleStdout.type = CONSOLE
+appender.consoleStdout.target = SYSTEM_OUT
+appender.consoleStdout.layout.type = PatternLayout
+appender.consoleStdout.layout.pattern = [%X{ST-JID}] %d{yyyy-MM-dd 
HH:mm:ss,SSS} %-5p [%-30.30c{1.}] [%t] - %m%n
+appender.consoleStdout.filter.acceptLtWarn.type = ThresholdFilter
+appender.consoleStdout.filter.acceptLtWarn.level = WARN
+appender.consoleStdout.filter.acceptLtWarn.onMatch = DENY
+appender.consoleStdout.filter.acceptLtWarn.onMismatch = ACCEPT
+
+appender.consoleStderr.name = consoleStderrAppender
+appender.consoleStderr.type = CONSOLE
+appender.consoleStderr.target = SYSTEM_ERR
+appender.consoleStderr.layout.type = PatternLayout
+appender.consoleStderr.layout.pattern = [%X{ST-JID}] %d{yyyy-MM-dd 
HH:mm:ss,SSS} %-5p [%-30.30c{1.}] [%t] - %m%n
+appender.consoleStderr.filter.acceptGteWarn.type = ThresholdFilter
+appender.consoleStderr.filter.acceptGteWarn.level = WARN
+appender.consoleStderr.filter.acceptGteWarn.onMatch = ACCEPT
+appender.consoleStderr.filter.acceptGteWarn.onMismatch = DENY
+
+appender.routing.name = routingAppender
+appender.routing.type = Routing
+appender.routing.purge.type = IdlePurgePolicy
+appender.routing.purge.timeToLive = 60
+appender.routing.route.type = Routes
+appender.routing.route.pattern = $${ctx:ST-JID}
+appender.routing.route.system.type = Route
+appender.routing.route.system.key = $${ctx:ST-JID}
+appender.routing.route.system.ref = fileAppender
+appender.routing.route.job.type = Route
+appender.routing.route.job.appender.type = File
+appender.routing.route.job.appender.name = job-${ctx:ST-JID}
+appender.routing.route.job.appender.fileName = 
${file_path}/job-${ctx:ST-JID}.log
+appender.routing.route.job.appender.layout.type = PatternLayout
+appender.routing.route.job.appender.layout.pattern = %d{yyyy-MM-dd 
HH:mm:ss,SSS} %-5p [%-30.30c{1.}] [%t] - %m%n
+
+appender.file.name = fileAppender
+appender.file.type = RollingFile
+appender.file.fileName = ${file_path}/${file_name}.log
+appender.file.filePattern = ${file_path}/${file_name}.log.%d{yyyy-MM-dd}-%i
+appender.file.append = true
+appender.file.layout.type = PatternLayout
+appender.file.layout.pattern = [%X{ST-JID}] %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p 
[%-30.30c{1.}] [%t] - %m%n
+appender.file.policies.type = Policies
+appender.file.policies.time.type = TimeBasedTriggeringPolicy
+appender.file.policies.time.modulate = true
+appender.file.policies.size.type = SizeBasedTriggeringPolicy
+appender.file.policies.size.size = ${file_split_size}
+appender.file.strategy.type = DefaultRolloverStrategy
+appender.file.strategy.fileIndex = nomax
+appender.file.strategy.action.type = Delete
+appender.file.strategy.action.basepath = ${file_path}
+appender.file.strategy.action.maxDepth = 1
+appender.file.strategy.action.condition.type = IfFileName
+appender.file.strategy.action.condition.glob = ${file_name}.log*
+appender.file.strategy.action.condition.nested_condition.type = IfAny
+appender.file.strategy.action.condition.nested_condition.lastModify.type = 
IfLastModified
+appender.file.strategy.action.condition.nested_condition.lastModify.age = 
${file_ttl}
+appender.file.strategy.action.condition.nested_condition.fileCount.type = 
IfAccumulatedFileCount
+appender.file.strategy.action.condition.nested_condition.fileCount.exceeds = 
${file_count}
\ No newline at end of file
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/log4j2_client.properties
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/log4j2_client.properties
new file mode 100644
index 00000000..0c751b15
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/log4j2_client.properties
@@ -0,0 +1,81 @@
+################################################################################
+#  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
+#
+#      http://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.
+################################################################################
+
+# The minimum amount of time, in seconds, that must elapse before the file 
configuration is checked for changes.
+monitorInterval = 60
+
+property.file_path = ${sys:seatunnel.logs.path:-/tmp/seatunnel/logs}
+property.file_name = ${sys:seatunnel.logs.file_name:-seatunnel}
+property.file_split_size = 100MB
+property.file_count = 100
+property.file_ttl = 7d
+
+rootLogger.level = INFO
+
+############################ log output to console 
#############################
+rootLogger.appenderRef.consoleStdout.ref = consoleStdoutAppender
+rootLogger.appenderRef.consoleStderr.ref = consoleStderrAppender
+############################ log output to console 
#############################
+############################ log output to file    
#############################
+#rootLogger.appenderRef.file.ref = fileAppender
+############################ log output to file    
#############################
+
+appender.consoleStdout.name = consoleStdoutAppender
+appender.consoleStdout.type = CONSOLE
+appender.consoleStdout.target = SYSTEM_OUT
+appender.consoleStdout.layout.type = PatternLayout
+appender.consoleStdout.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p 
[%-30.30c{1.}] [%t] - %m%n
+appender.consoleStdout.filter.acceptLtWarn.type = ThresholdFilter
+appender.consoleStdout.filter.acceptLtWarn.level = WARN
+appender.consoleStdout.filter.acceptLtWarn.onMatch = DENY
+appender.consoleStdout.filter.acceptLtWarn.onMismatch = ACCEPT
+
+appender.consoleStderr.name = consoleStderrAppender
+appender.consoleStderr.type = CONSOLE
+appender.consoleStderr.target = SYSTEM_ERR
+appender.consoleStderr.layout.type = PatternLayout
+appender.consoleStderr.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p 
[%-30.30c{1.}] [%t] - %m%n
+appender.consoleStderr.filter.acceptGteWarn.type = ThresholdFilter
+appender.consoleStderr.filter.acceptGteWarn.level = WARN
+appender.consoleStderr.filter.acceptGteWarn.onMatch = ACCEPT
+appender.consoleStderr.filter.acceptGteWarn.onMismatch = DENY
+
+#appender.file.name = fileAppender
+#appender.file.type = RollingFile
+#appender.file.fileName = ${file_path}/${file_name}.log
+#appender.file.filePattern = ${file_path}/${file_name}.log.%d{yyyy-MM-dd}-%i
+#appender.file.append = true
+#appender.file.layout.type = PatternLayout
+#appender.file.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p 
[%-30.30c{1.}] [%t] - %m%n
+#appender.file.policies.type = Policies
+#appender.file.policies.time.type = TimeBasedTriggeringPolicy
+#appender.file.policies.time.modulate = true
+#appender.file.policies.size.type = SizeBasedTriggeringPolicy
+#appender.file.policies.size.size = ${file_split_size}
+#appender.file.strategy.type = DefaultRolloverStrategy
+#appender.file.strategy.fileIndex = nomax
+#appender.file.strategy.action.type = Delete
+#appender.file.strategy.action.basepath = ${file_path}
+#appender.file.strategy.action.maxDepth = 1
+#appender.file.strategy.action.condition.type = IfFileName
+#appender.file.strategy.action.condition.glob = ${file_name}.log*
+#appender.file.strategy.action.condition.nested_condition.type = IfAny
+#appender.file.strategy.action.condition.nested_condition.lastModify.type = 
IfLastModified
+#appender.file.strategy.action.condition.nested_condition.lastModify.age = 
${file_ttl}
+#appender.file.strategy.action.condition.nested_condition.fileCount.type = 
IfAccumulatedFileCount
+#appender.file.strategy.action.condition.nested_condition.fileCount.exceeds = 
${file_count}
\ No newline at end of file
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/logback-spring.xml
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/logback-spring.xml
new file mode 100644
index 00000000..b1883c9d
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/logback-spring.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+    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
+       http://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.
+-->
+<configuration scan="true" scanPeriod="10 seconds">
+    <springProperty scope="context" name="APP_NAME" 
source="spring.application.name"/>
+    <property name="APP_LOG_PATH" value="${seatunnel-web.logs.path}/" />
+    <property name="HOST_NAME" value="${HOSTNAME:-UNKNOWN}"/>
+    <property name="TRACE" 
value="[tr:%X{X-B3-TraceId:-},sp:%X{X-B3-SpanId:-}]"/>
+    <include resource="org/springframework/boot/logging/logback/defaults.xml" 
/>
+
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ${APP_NAME} ${HOST_NAME} %p 
${TRACE} [%thread] [%C{0}.%M\(\):%L] - %m%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="seatunnel-web" 
class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${APP_LOG_PATH}/seatunnel-web.log</file>
+        <append>true</append>
+        <rollingPolicy 
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            
<FileNamePattern>${APP_LOG_PATH}/seatunnel-web.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
+            <MaxHistory>30</MaxHistory>
+            <MaxFileSize>100MB</MaxFileSize>
+        </rollingPolicy>
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ${APP_NAME} ${HOST_NAME} %p 
[%thread] [%C{0}.%M\(\):%L] - %m%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <root level="INFO">
+        <appender-ref ref="seatunnel-web" />
+    </root>
+</configuration>
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/seatunnel-env.sh
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/seatunnel-env.sh
new file mode 100644
index 00000000..ca54f467
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/seatunnel-env.sh
@@ -0,0 +1,27 @@
+#!/usr/bin/env bash
+#
+# 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
+#
+#    http://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.
+#
+
+# Home directory of spark distribution.
+SPARK_HOME=${SPARK_HOME:-/opt/spark}
+# Home directory of flink distribution.
+FLINK_HOME=${FLINK_HOME:-/opt/flink}
+# Below variables are used in seatunnel-cluster.sh, seatunnel.sh, 
seatunnel-connector.sh etc scripts
+STACK_ROOT=${STACK_ROOT:-"/usr/bigtop"}
+export APP_DIR="$STACK_ROOT/current/seatunnel"
+export CONF_DIR="/etc/seatunnel/conf"
+export LOG_DIR="/var/log/seatunnel"
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/seatunnel-web-env.sh
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/seatunnel-web-env.sh
new file mode 100755
index 00000000..4e5795bf
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/seatunnel-web-env.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# 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
+#
+#    http://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.
+#
+
+# Default directories
+STACK_ROOT=${STACK_ROOT:-"/usr/bigtop"}
+export LOGDIR=${LOGDIR:-"/var/log/seatunnel-web"}
+export CONFDIR=${CONFDIR:-"/etc/seatunnel-web/conf"}
+export 
SEATUNNEL_WEB_HOME=${SEATUNNEL_WEB_HOME:-"$STACK_ROOT/current/seatunnel-web"}
+export SEATUNNEL_HOME="${STACK_ROOT}/current/seatunnel"
+
+# JVM options
+export JAVA_MEMORY_OPTS=${JAVA_MEMORY_OPTS:-"-Xms2g -Xmx4g -Xmn1g"}
+export JAVA_GC_OPTS=${JAVA_GC_OPTS:-"-XX:+PrintGCDetails 
-Xloggc:${LOGDIR}/gc.log"}
+export JAVA_ERROR_OPTS=${JAVA_ERROR_OPTS:-"-XX:+HeapDumpOnOutOfMemoryError 
-XX:HeapDumpPath=${LOGDIR}/dump.hprof"}
+
+#JDK17_OPTS="--add-opens java.base/java.lang.invoke=ALL-UNNAMED --add-opens 
java.base/java.net=ALL-UNNAMED --add-opens 
java.security.jgss/sun.security.krb5=ALL-UNNAMED"
+#JAVA_OPTS="$JAVA_OPTS $JDK17_OPTS"
+
+#DEBUG_OPTS="-Xdebug 
-Xrunjdwp:server=y,transport=dt_socket,address=*:8476,suspend=n"
+#DEBUG_OPTS="$DEBUG_OPTS -verbose:class"
+#export JAVA_OPTS="$JAVA_OPTS $DEBUG_OPTS"
+
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/seatunnel.yaml
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/seatunnel.yaml
new file mode 100644
index 00000000..7dbcdfa9
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/properties/seatunnel.yaml
@@ -0,0 +1,39 @@
+#
+# 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
+#
+#    http://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.
+#
+
+seatunnel:
+  engine:
+    history-job-expire-minutes: 1440
+    backup-count: {{backup_count}}
+    queue-type: blockingqueue
+    print-execution-info-interval: 60
+    print-job-metrics-info-interval: 60
+    slot-service:
+      dynamic-slot: true
+    checkpoint:
+      interval: 10000
+      timeout: 60000
+      storage:
+        type: hdfs
+        max-retained: 3
+        plugin-config:
+          namespace: /var/lib/seatunnel/checkpoint_snapshot/
+          storage.type: hdfs
+          fs.defaultFS: file:///var/lib/seatunnel/filesystem # Ensure that the 
directory has written permission
+    telemetry:
+      metric:
+        enabled: false
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/quicklinks/quicklinks.json
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/quicklinks/quicklinks.json
new file mode 100644
index 00000000..e13c4338
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/quicklinks/quicklinks.json
@@ -0,0 +1,49 @@
+{
+  "name": "default",
+  "description": "default quick links configuration",
+  "configuration": {
+    "protocol": {
+      "type":"https",
+      "checks":[
+        {
+          "property":"seatunnel.web.ssl.enabled",
+          "desired":"true",
+          "site":"seatunnel-web-application"
+        }
+      ]
+    },
+    "links": [
+      {
+        "name": "seatunnel_web_ui",
+        "label": "Seatunnel-web UI",
+        "component_name": "SEATUNNEL-WEB",
+        "url": "%@://%@:%@/",
+        "requires_user_name": "false",
+        "port": {
+          "http_property": "http_port",
+          "http_default_port": "8801",
+          "https_property": "https_port",
+          "https_default_port": "8443",
+          "regex": "^(\\d+)$",
+          "site": "seatunnel-web-application"
+        }
+      },
+      {
+        "name": "seatunnel_web_ui",
+        "label": "Seatunnel-web API Doc",
+        "component_name": "SEATUNNEL-WEB",
+        "url": "%@://%@:%@/swagger-ui.html",
+        "requires_user_name": "false",
+        "port": {
+          "http_property": "http_port",
+          "http_default_port": "8801",
+          "https_property": "https_port",
+          "https_default_port": "8443",
+          "regex": "^(\\d+)$",
+          "site": "seatunnel-web-application"
+        }
+      }
+    ]
+  }
+}
+
diff --git 
a/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/role_command_order.json
 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/role_command_order.json
new file mode 100644
index 00000000..2170153e
--- /dev/null
+++ 
b/seatunnel-mpack/src/main/resources/addon-services/SEATUNNEL/2.3.8/role_command_order.json
@@ -0,0 +1,11 @@
+{
+  "general_deps": {
+    "_comment": "dependencies for Seatunnel"
+  },
+  "commandParams": {
+    "roleCommandOrder": {
+      "SEATUNNEL-START": ["SEATUNNEL-WEB-START"],
+      "SEATUNNEL-WEB-STOP": ["SEATUNNEL-STOP"]
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/seatunnel-mpack/src/main/resources/extensions/SEATUNNEL/2.3.8/metainfo.xml 
b/seatunnel-mpack/src/main/resources/extensions/SEATUNNEL/2.3.8/metainfo.xml
new file mode 100644
index 00000000..c641b035
--- /dev/null
+++ b/seatunnel-mpack/src/main/resources/extensions/SEATUNNEL/2.3.8/metainfo.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+   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
+       http://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.
+-->
+<metainfo>
+  <stacks>
+    <stack>
+      <name>BIGTOP</name>
+      <version>3.3.0</version>
+    </stack>
+  </stacks>
+</metainfo>
diff --git a/seatunnel-mpack/src/main/resources/mpack.json 
b/seatunnel-mpack/src/main/resources/mpack.json
new file mode 100644
index 00000000..f3fda67a
--- /dev/null
+++ b/seatunnel-mpack/src/main/resources/mpack.json
@@ -0,0 +1,37 @@
+{
+  "type": "full-release",
+  "name": "seatunnel-mpack",
+  "version": "1.0.0.0",
+  "description": "Seatunnel Management Pack",
+  "prerequisites": {
+    "min_ambari_version": "3.0.0",
+    "min-stack-versions" : [
+      {
+        "stack_name" : "BIGTOP", "stack_version" : "3.3.0"
+      } ]
+  },
+  "artifacts": [
+    {
+      "name" : "seatunnel-extension-definitions",
+      "type" : "extension-definitions",
+      "source_dir": "extensions"
+    },
+    {
+      "name": "seatunnel-stack-addon-service-definitions",
+      "type": "stack-addon-service-definitions",
+      "source_dir": "addon-services",
+      "service_versions_map": [
+        {
+          "service_name" : "SEATUNNEL",
+          "service_version" : "2.3.8",
+          "applicable_stacks" : [
+            {
+              "stack_name" : "BIGTOP",
+              "stack_version" : "3.3.0"
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

Reply via email to