IBM WebSphere:如何使用wsadmin脚本将应用程序映射到多个集群?

时间:2019-06-07 14:48:44

标签: python websphere jython websphere-8 wsadmin

我正在尝试使用wsadmin脚本自动化应用程序的部署,该应用程序映射到单元中的两个集群。但是,无论我尝试多少,应用程序都只会映射到一个群集。结果,该应用程序根本无法启动。

我收到以下错误消息:

Application helloteam_07062019_1956 is not deployed on the cluster SPPAbcd
Exception: exceptions.AttributeError WASL6048E: The helloteam_07062019_1956 application is not deployed on the SPPAbcd target.  
WASX7017E: Exception received while running file "/app/was_scripts/main_scripts/deploy_mutlitest.py"; exception information: com.ibm.bsf.BSFException: exception from Jython:
Traceback (innermost last):
  File "<string>", line 175, in ?
  File "/app/service/IBM/WebSphere/AppServer/scriptLibraries/application/V70/AdminApplication.py", line 4665, in startApplicationOnCluster
ScriptLibraryException: : 'exceptions.AttributeError WASL6048E: The helloteam_07062019_1956 application is not deployed on the SPPAbcd target. '

从错误消息中很明显,应用程序仅映射到SRVApp群集,但没有映射到SPPAbcd群集。结果,它无法启动该应用程序。

这是脚本

targetServerOne = "WebSphere:cell=DIGIAPP1Cell02,cluster=SPPAbcd"
targetServerTwo = "WebSphere:cell=DIGIAPP1Cell02,cluster=SRVApp"

AdminApp.install(location, ['-appname',"hellotest",'-defaultbinding.virtual.host',virtualHost,'-usedefaultbindings','-contextroot',ctxRoot,'-MapModulesToServers',[["EchoApp",URI,targetServerOne],["EchoApp",URI,targetServerTwo]]])
AdminConfig.save()

cell=AdminConfig.list('Cell')
cellName=AdminConfig.showAttribute(cell, 'name')
clusters=AdminConfig.list('ServerCluster').split('\n')
print("The clusters in "+cellName+" are...")
print(clusters)

for name in startClusters:
    startapp = AdminApplication.startApplicationOnCluster(newWar, name)
    print(startapp)

如上所述,无论我如何尝试,应用程序都只会映射到SRVApp集群(在DMGR控制台中检查应用程序的“管理模块”部分之后)。它没有被映射到SPPAbcd群集。

如何实现正确的模块映射到多个集群? adminapp.install命令中提到了模块映射部分。那是映射模块的正确方法吗?

感谢和问候。

-Kris

1 个答案:

答案 0 :(得分:0)

为解决此问题,我利用了Jenkins的EnvInject插件在构建时注入属性。

我没有使用两个目标服务器(targetServerOne和targetServerTwo),而是仅使用目标服务器,并从属性文件中调用了它。

这是我的属性文件:

moduleMapping=WebSphere:cell=cell1,cluster=cluster1+WebSphere:cell=cell1,cluster=cluster2

我的脚本已如下修改:

from os import getenv as env

targetServer = env(‘moduleMapping’)

AdminApp.install(filename, [ ‘-MapModulesToServers, [[‘moduleName’, ‘uri’, targetServer]]])

这已将我的应用映射到一个单元中的两个群集。