3.6. 配置数据


3.6.1. 独立服务器配置文件

独立配置文件位于 EAP_HOME/standalone/configuration/ 目录中。对于五个预定义的配置集(default, ha, full, full-ha, load-balancer),每个都有单独的文件。

Expand
表 3.2. 独立配置文件
配置文件用途

standalone.xml

此独立配置文件是启动单机服务器时使用的默认配置。它包含有关服务器的所有信息,包括子系统、网络、部署、套接字绑定和其他可配置的详细信息。它不提供消息传递或高可用性所需的子系统。

standalone-ha.xml

此单机配置文件包含所有默认子系统,并添加 modclusterjgroups 子系统,以实现高可用性。它不提供消息传递所需的子系统。

standalone-full.xml

此单机配置文件包含所有默认子系统,并添加 messaging-activemqiiop-openjdk 子系统。它不提供高可用性所需的子系统。

standalone-full-ha.xml

此独立配置文件包括对每一种可能子系统的支持,包括消息传递和高可用性方面的支持。

standalone-load-balancer.xml

此单机配置文件包含使用内置 mod_cluster 前端负载平衡器对其他 JBoss EAP 实例进行负载平衡所需的最小子系统。

默认情况下,将 JBoss EAP 作为单机服务器启动使用 standalone.xml 文件。若要使用其他配置启动 JBoss EAP,可使用 --server-config 参数:例如,

$ EAP_HOME/bin/standalone.sh --server-config=standalone-full.xml
Copy to Clipboard Toggle word wrap

3.6.1.1. 使用 YAML 文件更新独立服务器配置

使用 YAML 文件配置单机服务器可外部化自定义流程,并提高服务器升级的速度。使用此功能时,服务器以只读模式启动。这意味着,在服务器重启后,对配置的更改不会保留。

注意

受管域中的服务器 不支持 YAML 配置。

用户可以修改 YAML 文件中的各种资源。YAML 文件支持以下资源:

  • core-service
  • interface
  • socket-binding-group
  • subsystem
  • system-property

YAML 文件 不支持 以下资源:

  • 扩展 :向服务器添加扩展。不支持这个元素,因为它可能需要缺少的模块。
  • 部署 :将部署添加到服务器。这个元素不被支持,因为它除了配置外还需要更多大量更改。
  • deployment-overlay :将 deployment-overlays 添加到服务器。这个元素不被支持,因为它除了配置外还需要更多大量更改。
  • 路径 :在解析 YAML 文件时定义就绪。

YAML root 节点是 wildfly-configuration。您可以跟踪模型树来修改资源。如果已存在资源(由 XML 配置文件或以前的 YAML 文件创建),您可以使用模型树更新它。如果资源不存在,您可以使用模型树创建它。

定义新的 PostGresql 数据源的 YAML 配置文件示例

wildfly-configuration:
  subsystem:
    datasources:
      jdbc-driver:
        postgresql:
          driver-name: postgresql
          driver-xa-datasource-class-name: org.postgresql.xa.PGXADataSource
          driver-module-name: org.postgresql.jdbc
      data-source:
        PostgreSQLDS:
          enabled: true
          exception-sorter-class-name: org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter
          jndi-name: java:jboss/datasources/PostgreSQLDS
          jta: true
          max-pool-size: 20
          min-pool-size: 0
          connection-url: "jdbc:postgresql://localhost:5432}/demo"
          driver-name: postgresql
          user-name: postgres
          password: postgres
          validate-on-match: true
          background-validation: false
          background-validation-millis: 10000
          flush-strategy: FailingConnectionOnly
          statistics-enable: false
          stale-connection-checker-class-name: org.jboss.jca.adapters.jdbc.extensions.novendor.NullStaleConnectionChecker
          valid-connection-checker-class-name: org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker
          transaction-isolation: TRANSACTION_READ_COMMITTED
Copy to Clipboard Toggle word wrap

上面的示例定义了名为 postgresqljdbc-driver以及名为 PostgreSQLDS 的数据源

注意

您不能使用 YAML 配置文件来管理模块。相反,您需要手动或通过管理 CLI 创建或调配 org.postgresql.jdbc 模块。

3.6.1.2. 使用标签进行 YAML 文件操作

您可以使用标签对 YAML 配置文件执行几个操作。

  • !undefine: undefine a attribute

    undefine CONSOLE 日志记录器级别 YAML 配置文件示例

    wildfly-configuration:
        subsystem:
            logging:
              console-handler:
                CONSOLE:
                  level: !undefine
    Copy to Clipboard Toggle word wrap

  • !remove :删除资源

    删除嵌入的 Artemis 代理并连接到远程代理 YAML 配置文件示例

    wildfly-configuration:
      socket-binding-group:
        standard-sockets:
          remote-destination-outbound-socket-binding:
            remote-artemis:
              host: localhost
              port: 61616
      subsystem:
        messaging-activemq:
          server:
            default: !remove
          remote-connector:
            artemis:
              socket-binding: remote-artemis
          pooled-connection-factory:
            RemoteConnectionFactory:
              connectors:
                - artemis
              entries:
                - "java:jboss/RemoteConnectionFactory"
                - "java:jboss/exported/jms/RemoteConnectionFactory"
              enable-amq1-prefix: false
              user: admin
              password: admin
        ejb3:
          default-resource-adapter-name: RemoteConnectionFactory
        ee:
          service:
            default-bindings:
              jms-connection-factory: "java:jboss/RemoteConnectionFactory"
    Copy to Clipboard Toggle word wrap

  • !list-add : 向列表添加一个元素(使用可选索引)

    RemoteTransactionPermission 添加到权限列表 YAML 配置文件示例

    wildfly-configuration:
        subsystem:
            elytron:
              permission-set:
               default-permissions:
                 permissions: !list-add
                  - class-name: org.wildfly.transaction.client.RemoteTransactionPermission
                    module: org.wildfly.transaction.client
                    target-name: "*"
                    index: 0
    Copy to Clipboard Toggle word wrap

    注意

    如果未定义 index 属性,该条目将附加到列表的末尾。

3.6.1.3. 使用 YAML 文件启动单机服务器

您可以使用 YAML 配置文件启动单机服务器。

流程

  1. 打开终端。
  2. 使用以下命令启动带有 YAML 文件的单机服务器:

    ./standalone.sh -y=/home/ehsavoie/dev/wildfly/config2.yml:config.yml -c standalone-full.xml
    Copy to Clipboard Toggle word wrap

    --yaml or -y 参数允许您传递 YAML 文件列表。您必须使用分号(;)对于 Windows Server 或基于 Unix 的操作系统的冒号(:)来分隔每个 YAML 文件路径。您可以使用绝对路径、相对于当前执行目录的路径,或者相对于独立配置目录的路径。

操作按照定义文件的顺序以及 XML 配置定义初始操作后的顺序应用。

3.6.2. 受管域配置文件

受管域配置文件位于 EAP_HOME/domain/configuration/ 目录中。

Expand
表 3.3. 受管域配置文件
配置文件用途

domain.xml

这是受管域的主配置文件。只有域 master 会读取此文件。此文件包含所有配置集(default, ha, full, full-ha, load-balancer)的配置。

host.xml

此文件包含特定于受管域中物理主机的配置详细信息,如网络接口、套接字绑定、主机名称和其他特定于主机的详细信息。host.xml 文件包含 host-master.xmlhost-slave.xml 的所有功能,如下所述。

host-master.xml

此文件仅包含将服务器作为主域控制器运行所需的配置详细信息。

host-slave.xml

此文件仅包含作为受管域主机控制器运行服务器所需的配置详细信息。

默认情况下,在受管域中启动 JBoss EAP 将使用 host.xml 文件。若要使用其他配置启动 JBoss EAP,可使用 --host-config 参数:例如,

$ EAP_HOME/bin/domain.sh --host-config=host-master.xml
Copy to Clipboard Toggle word wrap

3.6.3. 备份配置数据

为了稍后恢复 JBoss EAP 服务器配置,应备份以下位置中的项目:

  • EAP_HOME/standalone/configuration/

    • 备份整个目录,以保存单机服务器的用户数据、服务器配置和日志记录设置。
  • EAP_HOME/domain/configuration/

    • 备份整个目录,以保存用户和配置文件数据、域和主机配置,以及受管域的日志记录设置。
  • EAP_HOME/modules/

    • 备份任何自定义模块。
  • EAP_HOME/welcome-content/

    • 备份任何自定义欢迎内容。
  • EAP_HOME/bin/

    • 备份任何自定义脚本或启动配置文件。

3.6.4. 配置文件快照

为了协助服务器维护和管理,JBoss EAP 在启动时创建原始配置文件的时间戳版本。管理操作的任何其他配置更改将导致自动备份原始文件,保留实例的工作副本供引用和回滚。此外,还可以生成配置快照,它们是当前服务器配置的即时副本。这些快照可由管理员保存和加载。

以下示例使用 standalone.xml 文件,但同一进程适用于 domain.xmlhost.xml 文件。

进行快照

使用管理 CLI 为当前配置生成快照。

:take-snapshot
{
    "outcome" => "success",
    "result" => "EAP_HOME/standalone/configuration/standalone_xml_history/snapshot/20151022-133109702standalone.xml"
}
Copy to Clipboard Toggle word wrap
列出快照

使用管理 CLI 列出已执行的所有快照。

:list-snapshots
{
    "outcome" => "success",
    "result" => {
        "directory" => "EAP_HOME/standalone/configuration/standalone_xml_history/snapshot",
        "names" => [
            "20151022-133109702standalone.xml",
            "20151022-132715958standalone.xml"
        ]
    }
}
Copy to Clipboard Toggle word wrap
删除快照

使用管理 CLI 删除快照。

:delete-snapshot(name=20151022-133109702standalone.xml)
Copy to Clipboard Toggle word wrap
使用快照启动服务器

可以使用快照或自动保存的配置启动服务器。

  1. 进入 EAP_HOME/standalone/configuration/standalone_xml_history 目录,找到要加载的快照或保存的配置文件。
  2. 启动服务器并指向所选配置文件。传递与配置目录相关的文件路径 EAP_HOME/standalone/configuration/

    $ EAP_HOME/bin/standalone.sh --server-config=standalone_xml_history/snapshot/20151022-133109702standalone.xml
    Copy to Clipboard Toggle word wrap
注意

在受管域中运行时,请使用 --host-config 参数来指定配置文件。

3.6.5. 查看配置更改

JBoss EAP 7 提供了跟踪对运行系统进行的配置更改的功能。这样,管理员可以查看其他授权用户所做的配置更改历史记录。

重要

更改存储在内存中,不会在服务器重新启动之间保留。此功能不能取代 管理审计日志记录

您可以从 管理 CLI管理控制台 启用跟踪和查看配置更改。

通过管理 CLI 跟踪和查看配置更改

若要启用跟踪配置更改,可使用以下管理 CLI 命令:您可以使用 max-history 属性指定要存储的条目数量。

/subsystem=core-management/service=configuration-changes:add(max-history=20)
Copy to Clipboard Toggle word wrap
注意

在受管域中,配置更改在主机级别上跟踪,以进行主机和服务器相关的修改。为主机控制器启用配置更改可为其所有受管服务器启用它。您可以使用以下命令跟踪每个主机的配置更改:

/host=HOST_NAME/subsystem=core-management/service=configuration-changes:add(max-history=20)
Copy to Clipboard Toggle word wrap

要查看最近的配置更改列表,请使用以下管理 CLI 命令:

/subsystem=core-management/service=configuration-changes:list-changes
Copy to Clipboard Toggle word wrap
注意

在受管域中,您可以使用以下命令列出主机的配置更改:

/host=HOST_NAME/subsystem=core-management/service=configuration-changes:list-changes
Copy to Clipboard Toggle word wrap

您可以使用以下命令列出影响特定服务器的配置更改:

/host=HOST_NAME/server=SERVER_NAME/subsystem=core-management/service=configuration-changes:list-changes
Copy to Clipboard Toggle word wrap

这会列出所做的每个配置更改,包括日期、来源、结果和操作详情。例如,以下 list-changes 命令的输出显示配置更改,最近显示的第一个显示为第一个。

{
    "outcome" => "success",
    "result" => [
        {
            "operation-date" => "2016-02-12T18:37:00.354Z",
            "access-mechanism" => "NATIVE",
            "remote-address" => "127.0.0.1/127.0.0.1",
            "outcome" => "success",
            "operations" => [{
                "address" => [],
                "operation" => "reload",
                "operation-headers" => {
                    "caller-type" => "user",
                    "access-mechanism" => "NATIVE"
                }
            }]
        },
        {
            "operation-date" => "2016-02-12T18:34:16.859Z",
            "access-mechanism" => "NATIVE",
            "remote-address" => "127.0.0.1/127.0.0.1",
            "outcome" => "success",
            "operations" => [{
                "address" => [
                    ("subsystem" => "datasources"),
                    ("data-source" => "ExampleDS")
                ],
                "operation" => "write-attribute",
                "name" => "enabled",
                "value" => false,
                "operation-headers" => {
                    "caller-type" => "user",
                    "access-mechanism" => "NATIVE"
                }
            }]
        },
        {
            "operation-date" => "2016-02-12T18:24:11.670Z",
            "access-mechanism" => "HTTP",
            "remote-address" => "127.0.0.1/127.0.0.1",
            "outcome" => "success",
            "operations" => [{
                "operation" => "remove",
                "address" => [
                    ("subsystem" => "messaging-activemq"),
                    ("server" => "default"),
                    ("jms-queue" => "ExpiryQueue")
                ],
                "operation-headers" => {"access-mechanism" => "HTTP"}
            }]
        }
    ]
}
Copy to Clipboard Toggle word wrap

这个示例列出了影响配置的三个操作详情:

  • 从管理 CLI 重新加载服务器:
  • 从管理 CLI 禁用 ExampleDS 数据源.
  • 从管理控制台 移除 ExpiryQueue 队列。
从管理控制台跟踪和查看配置更改

若要启用从管理控制台跟踪配置更改,可选择到 Runtime 选项卡,前往服务器或主机以跟踪 的更改,并从下拉菜单中选择 Configuration Changes。单击 Enable Configuration Changes,并提供最大历史记录值。

然后,此页面上的表列出进行的每个配置更改,包括日期、来源、结果和操作详情。

3.6.6. 属性替换

JBoss EAP 允许您使用表达式来定义可在配置中替换字面值的可替换属性。表达式的格式为 ${PARAMETER:DEFAULT_VALUE}。如果设置了指定参数,则将使用参数的值。否则,将使用提供的默认值。

解析表达式支持的源包括系统属性、环境变量和密码库。对于部署,源可以是部署存档中的 META-INF/jboss.properties 文件中的属性。对于支持子部署的部署类型,如果属性文件位于外部部署中,则解析范围仅限于所有子部署,如 EAR。如果属性文件在子部署中,则解析的范围仅限于该子部署。

以下 standalone.xml 配置文件的示例将 public 接口的 inet-address 设为 127.0.0.1,除非设置了 jboss.bind.address 参数。

<interface name="public">
    <inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
Copy to Clipboard Toggle word wrap

将 EAP 启动为单机服务器时,可以使用以下命令设置 jboss.bind.address 参数:

$ EAP_HOME/bin/standalone.sh -Djboss.bind.address=IP_ADDRESS
Copy to Clipboard Toggle word wrap
嵌套表达式

表达式可以嵌套,允许更高级地使用表达式来代替固定值。嵌套表达式的格式类似于普通表达式的格式,但一个表达式被嵌入在另一个表达式中,例如:

${SYSTEM_VALUE_1${SYSTEM_VALUE_2}}
Copy to Clipboard Toggle word wrap

嵌套表达式是递归评估的,因此首先评估内嵌表达式,然后评估外部表达式。表达式也可能是递归的,其中一个表达式解析为另外一个表达式,然后解析。允许表达式的任何位置都允许嵌套表达式,但管理 CLI 命令除外。

例如,如果数据源定义中使用的密码被屏蔽,则可以使用嵌套表达式。数据源的配置可能包含以下行:

<password>${VAULT::ds_ExampleDS::password::1}</password>
Copy to Clipboard Toggle word wrap

ds_ExampleDS 的值可以替换为使用嵌套表达式的系统属性(datasource_name)。数据源的配置可以改为有以下行:

<password>${VAULT::${datasource_name}::password::1}</password>
Copy to Clipboard Toggle word wrap

JBoss EAP 首先评估表达式 ${datasource_name},然后将其输入到更大的表达式并评估生成的表达式。此配置的优点在于数据源的名称是从固定配置中提取的。

基于描述符的特征替换

应用程序配置(如数据源连接参数)通常会因开发、测试和生产环境而异。构建系统脚本有时可以容纳这种差异,因为 Jakarta EE 规范不包含将这些配置外部化的方法。借助 JBoss EAP,您可以使用基于描述符的属性替换在外部管理配置。

基于描述符的属性替换基于描述符的属性,允许您从应用和构建链中删除对环境相关的假设。特定环境的配置可以在部署描述符中指定,而不是注释或构建系统脚本。您可以在文件中提供配置,或者作为参数在命令行中提供。

ee 子系统中有几个标记控制是否应用属性替换。

JBoss 特定的描述符替换由 jboss-descriptor-property-replacement 标志控制,默认情况下被启用。启用后,可以在以下部署描述符中替换属性:

  • jboss-ejb3.xml
  • jboss-app.xml
  • jboss-web.xml
  • jboss-permissions.xml
  • *-jms.xml
  • *-ds.xml

以下管理 CLI 命令可用于启用或禁用特定于 JBoss 的描述符中的属性替换:

/subsystem=ee:write-attribute(name="jboss-descriptor-property-replacement",value=VALUE)
Copy to Clipboard Toggle word wrap

Jakarta EE 描述符替换由 spec-descriptor-property-replacement 标志控制,默认为 禁用。启用后,可以在以下部署描述符中替换属性:

  • ejb-jar.xml
  • permissions.xml
  • persistence.xml
  • application.xml
  • web.xml

以下管理 CLI 命令可用于在 Jakarta EE 描述符中启用或禁用属性替换:

/subsystem=ee:write-attribute(name="spec-descriptor-property-replacement",value=VALUE)
Copy to Clipboard Toggle word wrap

3.6.7. 使用 Git 管理配置数据

自 JBoss EAP 7.3 起,您可以使用 Git 来管理和持久保留您的服务器配置数据、属性文件和部署。这不仅允许您管理这些文件的版本历史记录,还允许您使用一个或多个 Git 存储库在多个服务器和节点间共享服务器和应用配置。此功能仅适用于使用默认配置目录布局的单机服务器。

您可以选择 在本地 Git 存储库中 使用配置数据,也可以 从远程 Git 存储库 中提取数据。Git 存储库在 jboss.server.base.dir 目录中配置,这是单机服务器内容的基础目录。在 jboss.server.base.dir 目录配置为使用 Git 后,JBoss EAP 将自动通过管理 CLI 或管理控制台提交每次更新到配置的更新。通过手动编辑配置文件在服务器外进行的任何更改都不会提交或保留,但您可以使用 Git CLI 添加和提交手动更改。您还可以使用 Git CLI 查看提交历史记录,管理分支和管理内容。

要使用此功能,在您启动服务器时在命令行中传递一个或多个参数。

Expand
表 3.4. Git 配置管理的服务器启动参数
参数描述

--git-repo

用于管理和持久服务器配置数据的 Git 存储库的位置。如果为本地存储则可以是 local;或是到远程存储库的 URL。

--git-branch

Git 存储库中要使用的分支或标签名称。此参数应命名现有的分支或标签名称,因为如果不存在,则不会创建该分支或标签名称。如果使用标签名称,请将存储库置于分离的 HEAD 状态,这意味着以后的提交不会附加到任何分支。标签名称为只读,通常在多个节点之间复制配置时使用。

--git-auth

指向 Elytron 配置文件的 URL,该文件包含连接远程 Git 存储库时要使用的凭据。如果您的远程 Git 存储库需要身份验证,则需要此参数。此参数不能与本地存储库一起使用。

使用本地 Git 存储库

要使用本地 Git 存储库,请使用 --git-repo=local 参数启动服务器。您还可以在启动服务器时添加 --git-branch=GIT_BRANCH_NAME 参数,在远程存储库中指定可选分支或标签名称。此参数应命名现有的分支或标签名称,因为如果不存在,则不会创建该分支或标签名称。如果使用标签名称,请将存储库置于分离的 HEAD 状态,这意味着以后的提交不会附加到任何分支。

以下是使用 本地存储库1.0.x 分支启动服务器的命令示例:

$ EAP_HOME/bin/standalone.sh --git-repo=local --git-branch=1.0.x
Copy to Clipboard Toggle word wrap

如果您使用 参数启动服务器以使用 本地 Git 存储库,JBoss EAP 将检查 jboss.server.base.dir 目录是否已针对 Git 进行了配置。否则,JBoss EAP 会利用现有配置内容在 jboss.server.base.dir 目录中创建并初始化 Git 存储库。JBoss EAP 检查由 --git-branch 参数传递的分支名称。如果未传递该参数,它将检查 master 分支。初始化后,您应该会看到单机服务器内容的基础目录中的 a .git/ 目录和 a.gitignore 文件。

使用远程 Git 存储库

要使用远程 Git 存储库,请使用 --git-repo=REMOTE_REPO 参数启动服务器。参数的值可以是您手动添加到本地 Git 配置的 URL 或远程别名。

您还可以在启动服务器时添加 --git-branch=GIT_BRANCH_NAME 参数,在远程存储库中指定可选分支或标签名称。此参数应命名现有的分支或标签名称,因为如果不存在,则不会创建该分支或标签名称。如果使用标签名称,请将存储库置于分离的 HEAD 状态,这意味着以后的提交不会附加到任何分支。

如果您的 Git 存储库需要身份验证,那么在启动服务器时,还必须添加 --git-auth=AUTH_FILE_URL 参数。此参数应当是 Elytron 配置文件的 URL,其中包含连接 Git 存储库所需的凭据。以下是可用于身份验证的 Elytron 配置文件的示例:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <authentication-client xmlns="urn:elytron:client:1.2">
    <authentication-rules>
      <rule use-configuration="test-login">
      </rule>
    </authentication-rules>
    <authentication-configurations>
      <configuration name="test-login">
        <sasl-mechanism-selector selector="BASIC" />
        <set-user-name name="eap-user" />
        <credentials>
          <clear-password password="my_api_key" />
        </credentials>
        <set-mechanism-realm name="testRealm" />
      </configuration>
    </authentication-configurations>
  </authentication-client>
</configuration>
Copy to Clipboard Toggle word wrap

以下是使用 full 配置文件启动服务器的命令示例,它使用远程 eap-configuration 存储库的 1.0.x 分支,并将 URL 传递到包含身份验证凭据的 Elytron 配置文件。

$ EAP_HOME/bin/standalone.sh --git-repo=https://github.com/MY_GIT_ID/eap-configuration.git --git-branch=1.0.x --git-auth=file:///home/USER_NAME/github-wildfly-config.xml --server-config=standalone-full.xml
Copy to Clipboard Toggle word wrap

如果您使用 参数启动服务器以使用远程 Git 存储库,JBoss EAP 会检查 jboss.server.base.dir 目录是否已针对 Git 进行了配置。否则,JBoss EAP 将删除 jboss.server.base.dir 目录中的现有配置文件,并将它们替换为远程 Git 配置数据。JBoss EAP 检查由 --git-branch 参数传递的分支名称。如果未传递该参数,它将检查 master 分支。这个过程完成后,您应该会在单机服务器内容的基础目录中看到 a .git/ 目录和 a.gitignore 文件。

警告

如果您稍后启动服务器传递与最初使用的 --git-repo URL 或 --git-branch 名称不同的服务器,您将在尝试启动服务器时看到错误消息 java.lang.RuntimeException: WFLYSRV0268: Failed to pull repository GIT_REPO_NAME。这是因为 JBoss EAP 尝试从与 jboss.server.base.dir 目录中当前配置的仓库和分支不同的存储库和分支中提取配置数据,而 Git 拉取会导致冲突。

使用远程 Git SSH 存储库

对于 SSH 身份验证,您可以通过指定 SSH 凭据来配置 elytron 配置文件。在此文件中指定 SSH 凭据后,您可以启动独立服务器实例,并且有一个远程 Git SSH 存储库来管理服务器配置文件历史记录。

您还可以使用 WildFly Elytron 工具(您可以使用 elytron-tool.sh 脚本访问)来生成 SSH 密钥对,并将它存储在凭据存储中。如果您之前没有为服务器指定了 SSH 凭据,Wildly Elytron 工具很有用。

将凭据添加到 elytron 配置文件时,您可以连接到远程 Git SSH 存储库。

前提条件

流程

  • 在终端中发出以下命令来连接远程 git SSH 存储库:

    $ <eap_home_path>/bin/standalone.sh --git-repo=<git_repository_url> --git-auth=<elytron_configuration_file_url>
    Copy to Clipboard Toggle word wrap

    您的单机服务器启动,服务器的配置文件历史记录现在由远程 Git SSH 存储库管理。

其他资源

elytron 配置文件中使用 OpenSSH 密钥

elytron 子系统支持使用 OpenSSH 命令行工具生成的 SSH 密钥对。此工具使用 RSA、DSA 和 ECDSA 算法。

您可以使用 ssh-keygen 命令生成 SSH 密钥对。

另外,您可以使用三种元素类型之一来指定您的密码:

  • clear-password
  • masked-password
  • credential-store-reference

先决条件

  • 您已生成了 SSH 密钥对。以下示例显示了生成大小为 256 MB 的 ECDSA 密钥。该密语设置为 secret

    [~/.ssh]$ ssh-keygen -t ecdsa -b 256
    
    Generating public/private ecdsa key pair.
    Enter file in which to save the key (/home/user/.ssh/id_ecdsa):
    Enter passphrase (empty for no passphrase): secret
    Enter same passphrase again: secret
    Your identification has been saved in /home/user/.ssh/id_ecdsa.
    Your public key has been saved in /home/user/.ssh/id_ecdsa.pub.
    Copy to Clipboard Toggle word wrap

流程

  • 选择以下两个方法之一在 elytron 配置文件中指定您的密钥对:

    • 使用密钥对凭证在配置文件中指定您的密钥对。例如:

      <authentication-configurations>
          <configuration name="example">
              <credentials>
                  <key-pair>
                      <openssh-private-key pem="-----BEGIN OPENSSH PRIVATE KEY-----
                                                                  b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABDaZzGpGV
                                                                  922xmrL+bMHioPAAAAEAAAAAEAAABoAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlz
                                                                  dHAyNTYAAABBBIMTU1m6pmpnSTZ2k/cbKnxXkRpXUmWwqN1SSNLpRswGsUhmLG2H21br1Z
                                                                  lEHRiRn6zQmA4YCtCw2hLuz8M8WVoAAADAQk+bMNWFfaI4Ej1AQdlLl6v4RDa2HGjDS3V4
                                                                  39h0pOx4Ix7YZKydTN4SPkYRt78CNK0AhhtKsWo2lVNwyfh8/6SeqowhgCG9MJYW8yRR1R
                                                                  3DX/eQTx6MV/gSSRLDTpcVWUY0jrBGpMaEvylKoNcabiEo44flkIYlG6E/YtFXsmXsoBsj
                                                                  nFcjvmfE7Lzyin5Fowwpbqj9f0XOARu9wsUzeyJVAwT7+YCU3mWJ3dnO1bOxK4TuLsxD6j
                                                                  RB7bJemsfr
                                                                  -----END OPENSSH PRIVATE KEY-----">
                         <clear-password password="secret"/>
                      </openssh-private-key>
                  </key-pair>
              </credentials>
          </configuration>
      </authentication-configurations>
      Copy to Clipboard Toggle word wrap

      示例显示了 OpenSSH 格式的密钥对。secret 的密码短语被设置为 明文密码 类型,需要解密私钥。

      重要

      elytron 子系统支持 PKCS8 格式的密钥对。但是,您不能使用密码短语加密 PKCS8 格式的密钥对,因为当您需要将密钥对解密回其原始格式时,您可能会遇到的问题。

    • 在配置文件的 <ssh-credential> 元素中指定包含私钥的文件位置。例如:

      <authentication-configurations>
          <configuration name="example">
              <credentials>
                  <ssh-credential ssh-directory="/user/home/example/.ssh" private-key-file="id_test_ecdsa" known-hosts-file="known_hosts_test"> 
      1
       
      2
       
      3
      
                      <clear-password password="secret"/>
                  </ssh-credential>
               </credentials>
          </configuration>
      </authentication-configurations>
      Copy to Clipboard Toggle word wrap
      1
      ssh-directory 属性指定密钥的位置和已知主机文件。
      2
      private-key-file 属性指定包含私钥的文件名。
      3
      known-hosts-file 属性指定包含已知 SSH 主机的文件名。
使用 Git 时发布远程配置数据

您可以使用管理 CLI 发布配置 操作将您的 Git 存储库更改推送到远程存储库。由于当您启动服务器时,JBoss EAP 会在启动过程中从远程 Git 存储库提取配置,这允许您在多个服务器之间共享配置数据。您只能将此操作用于远程存储库。它不适用于本地存储库。

以下管理 CLI 操作将配置数据发布到远程 eap-configuration 存储库:

:publish-configuration(location="=https://github.com/MY_GIT_ID/eap-configuration.git")
{"outcome" => "success"}
Copy to Clipboard Toggle word wrap
通过 Git 使用快照

除了使用 Git 提交历史记录来跟踪配置更改外,您还可以生成快照以在特定时间点保留配置。您可以列出快照并删除快照。

使用 Git 时生成快照

快照作为标签存储在 Git 中。您可以在 take-snapshot 操作上将快照标签名称和提交消息指定为参数。

以下管理 CLI 操作将拍摄快照,并将其命名为"snapshot-01"标签。

:take-snapshot(name="snapshot-01", comment="1st snapshot")
{
    "outcome" => "success",
    "result" => "1st snapshot"
}
Copy to Clipboard Toggle word wrap
使用 Git 列出快照

您可以使用 list-snapshots 操作列出所有快照标签。

以下管理 CLI 操作列出了快照标签:

:list-snapshots
{
    "outcome" => "success",
    "result" => {
        "directory" => "",
        "names" => [
            "snapshot : 1st snapshot",
            "refs/tags/snapshot-01",
            "snapshot2 : 2nd snapshot",
            "refs/tags/snapshot-02"
        ]
    }
}
Copy to Clipboard Toggle word wrap
使用 Git 删除快照

您可以通过在 delete-snapshot 操作上传递标签名称来删除特定的快照。

以下管理 CLI 操作将使用标签名称 "snapshot-01" 删除快照。

:delete-snapshot(name="snapshot-01")
{"outcome" => "success"}
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat