gpt4 book ai didi

powershell - Azure Service Fabric - 使用 Powershell 配置服务实例参数

转载 作者:行者123 更新时间:2023-12-02 23:54:06 27 4
gpt4 key购买 nike

是否可以通过 Settings.xml 文件或其他方式在运行时将参数注入(inject) guest 可执行文件?我有一个 GuestExecutable ,我需要将一些配置传递给它 - 在服务创建时的 URL。

我需要两个使用不同参数运行的服务实例,服务实例信息在我需要传递的自定义参数方面必须有所不同。这是否可以使用 Powershell,或者我是否需要对配置进行版本化并创建一个新版本?

提前致谢

最佳答案

您是否尝试过以下命令: New-ServiceFabricApplication ?

创建应用程序 list 文件时,参数将包含您在注册新应用程序时设置的可替换参数。

像这样的 ApplicationManifest.xml 示例:

<?xml version="1.0" encoding="utf-8"?>
<ApplicationManifest ApplicationTypeName="MyAppTypeName" ApplicationTypeVersion="1.0.0" xmlns=...>
<Parameters>
<Parameter Name="Web1_InstanceCount" Value="-1" />
<Parameter Name="ENVIRONMENT_NAME" Value="DEV" />
<Parameter Name="FEPlacementConstraints" Value="NodeTypeName==FrontEnd" />
</Parameters>
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="MyServicePkg" ServiceManifestVersion="1.0.0" />
<ConfigOverrides />
<EnvironmentOverrides />
</ServiceManifestImport>
<DefaultServices>
<Service Name="Web1">
<StatelessService ServiceTypeName="MyServiceType" InstanceCount="[Web1_InstanceCount]">
<SingletonPartition />
<PlacementConstraints>[FEPlacementConstraints]</PlacementConstraints>
</StatelessService>
</Service>
</DefaultServices>
</ApplicationManifest>

您将使用这样的配置覆盖来更改设置文件:
<ConfigOverrides>
<ConfigOverride Name="Config">
<Settings>
<Section Name="MyConfigSection">
<Parameter Name="MySetting" Value="[ENVIRONMENT_NAME]"/>
</Section>
</Settings>
</ConfigOverride>
</ConfigOverrides>

或者您可以像这样在您的服务上设置环境变量:
<EnvironmentOverrides CodePackageRef="Code">
<EnvironmentVariable Name="ASPNETCORE_ENVIRONMENT" Value="[ENVIRONMENT_NAME]" />
</EnvironmentOverrides>

In my opinion the environment overrides would work better on your case, because most guest executable are not flexible on how you can configure them but generally they accept environment variables.



那么你:
  • 上传您的申请: Copy-ServiceFabricApplicationPackage
  • 使用 Register-ServiceFabricApplicationType 注册您的应用程序
  • 然后使用所需的设置注册每个新应用程序:

  • .
    New-ServiceFabricApplication -ApplicationName fabric:/myapp/todolist-dev -ApplicationTypeName "MyAppTypeName" -ApplicationTypeVersion "1.0.0" -ApplicationParameter @{Web1_InstanceCount='-1'; ENVIRONMENT_NAME='DEV'}

    New-ServiceFabricApplication -ApplicationName fabric:/myapp/todolist-uat -ApplicationTypeName "MyAppTypeName" -ApplicationTypeVersion "1.0.0" -ApplicationParameter @{Web1_InstanceCount='-1'; ENVIRONMENT_NAME='UAT'}

    这种方法的唯一缺点是您最终会得到两个应用程序,但不要认为这对您来说是个问题,它们的管理方式与您对单个应用程序的管理方式基本相同。

    如果您严格需要在同一个应用程序上同时运行两者,您可以采取一些解决方法:
  • 使用多个 Config 包(不认为与 guest 可执行文件一起工作,但与可靠服务一起工作)
  • 使用启动脚本,您可以在其中添加将参数传递给启动 exe 的逻辑,如下所示:

  • 在您的 服务 list .xml :
      <CodePackage Name="Code" Version="1.0.0">
    <EntryPoint>
    <ExeHost>
    <Program>start.bat</Program>
    <WorkingFolder>CodePackage</WorkingFolder>
    </ExeHost>
    </EntryPoint>
    </CodePackage>

    在 .exe 的同一文件夹(代码)上,创建包含以下内容的 start.bat 文件:
    myApp.exe %EnvironmentVariableNameSetBySF%

    关于powershell - Azure Service Fabric - 使用 Powershell 配置服务实例参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50243911/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com