NO.105 Jenkins+Ant實現JDK、WebLogic、Domain批量安裝(5)批量執行的ANT指令碼
阿新 • • 發佈:2018-12-19
所謂自動化安裝,最大的價值就是批量執行操作。今天講一下ant中批量的實現。
批量安裝,即在多個伺服器安裝。本文預設所有伺服器環境一致,即作業系統版本、使用者名稱密碼,完全一樣。
那麼對於多伺服器安裝JDK來講,多個伺服器的IP便是引數。這裡,我們使用英文逗號作為各IP的分割符。
按慣例,我們先把引數在d:\tmp\build_params.properties進行定義。
server.ips=192.168.1.0,192.168.1.1,192.168.1.2
那麼在build.xml如何解析這個server.ips呢?我們使用foreach方法,指令碼如下:
<!-- 多伺服器安裝JDK --> <target name="foreach_installJDK"> <foreach list="${server.ips}" target="installJDK" param="server.ip" delimiter=","> </foreach> </target> <!-- 這裡簡單示意下拆分後的IP,JDK的安裝指令碼參見前幾節內容--> <target name="installJDK"> <echo message="${server.ip}" /> </target>
如果是兩個引數呢?我們可以定義英文冒號作為二級分割符,下面是兩個引數的例子:
server.ips_ports=192.168.1.0:7001,192.168.1.1:8001,192.168.1.2:9001
<target name="foreach_server"> <foreach list="${server.ips_ports}" target="A" param="server.ip_port" delimiter=","> </foreach> </target> <target name="A" > <echo message="${server.ip_port}" /> <propertyregex property="server.ip" input="${server.ip_port}" regexp="(.*)(\:)(.*)" select="\1" casesensitive="false" /> <propertyregex property="server.port" input="${server.ip_port}" regexp="(.*)(\:)(.*)" select="\3" casesensitive="false" /> <antcall target="B"/> </target> <target name="B" > <echo message="${server.ipt}" /> <echo message="${server.port}" /> </target>
大家可以試著寫一寫三個引數的情況的指令碼~
今天先到這兒啦。