9AMC 发表于 2018-7-30 06:38:04

利用ansible批量创建iis站点

web.ps1 文件内容说明  
# ************************************************************
  
# *                                                          *
  
# *               Powershell部署web站点脚本                  *
  
# *                                                          *
  
# ************************************************************
  
#set-executionpolicy remotesigned
  
# 建立IIS站点所用参数
  
#################################################################################################
  
#参数申明
  
param($a,$b,$c,$d,$e,$f,$g,$h,$i,$j)
  
$sitePort = $a#端口
  
$SiteName = "$b"    #站点名
  
$SiteAppPools = $SiteName#进程池名
  
$SiteAppPoolsModel = "$c"#进程池使用通道模式
  
$AppPoolType = "ApplicationPoolIdentity"      #指定应用程序池要使用的帐户标识(0 >Local Service 1 >Local System2 >Network Service3 >User 4 >ApplicationPoolIdentity)
  
$managedRuntimeVersion = "$d"#.net版本
  
$WebSitePath = "$e" #站点程序路径
  
$HostHeader1 = "$f"      #绑定站点域名
  
$HostHeader2 = "$g"      #绑定站点域名
  
$defaultDocument = "$h"
  
$IISLogFile = "$i\$SiteName" #IIS日志路径
  
$net32Or64 = $j#是否启用.net32模式
  
#################################################################################################
  
Import-Module WebAdministration#导入IIS模块
  
#创建IIS应用程序池
  
function BuildAppPool(){
  
    $AppPool = "iis:\AppPools\" + $SiteAppPools
  
    $existAppPool = Test-Path $AppPool
  
    if($existAppPool -eq $false){
  
      #创建应用程序池
  
      .$Env:windir\system32\inetsrv\appcmd.exe add apppool /name:$SiteAppPools /managedRuntimeVersion:$managedRuntimeVersion/managedPipelineMode:$SiteAppPoolsModel
  
      #指定应用程序池要使用的帐户标识
  
      .$Env:windir\system32\inetsrv\appcmd.exe set config /section:applicationPools /.processModel.identityType:$AppPoolType
  
      #设置应用程序池使用.net版本
  
      .$Env:windir\system32\inetsrv\appcmd.exe add apppool /name:$SiteAppPools /managedRuntimeVersion:$managedRuntimeVersion/managedPipelineMode:$SiteAppPoolsModel
  
      #限制进程使用内存上限为1.5G
  
      .$Env:windir\system32\inetsrv\appcmd.exe set config /section:applicationPools /.recycling.periodicRestart.privateMemory:1572864
  
      #指定进程固定回收时间
  
      .$Env:windir\system32\inetsrv\appcmd.exe set apppool /apppool.name: $SiteAppPools /recycling.periodicRestart.time:1.00:00:00
  
      #启用.net32模式
  
      .$Env:windir\system32\inetsrv\appcmd.exe set config /section:applicationPools /.enable32BitAppOnWin64:$net32Or64
  
      #是否自动启动
  
      .$Env:windir\system32\inetsrv\appcmd.exe set config /section:applicationPools /.autoStart:$true
  
    }
  
}
  

  
#创建IIS应用站点
  
function BuildSite(){
  
    $appSitePath = "iis:\sites\"+$SiteName
  
    $existweb = Test-Path $appSitePath
  
    if(!$existweb)
  
    {
  
      New-Website -name $SiteName -port $sitePort-ApplicationPool $SiteAppPools -PhysicalPath $WebSitePath
  
       .$Env:windir\system32\inetsrv\appcmd.exe set site $SiteName /bindings:"http/*:80:$HostHeader1" # 默认打开一个域名加80端口 默认所有IP
  #.$Env:windir\system32\inetsrv\appcmd.exe set site $SiteName /bindings:"http/*:80:$HostHeader1,http/*:80:$HostHeader2" # 可以添加多域名访问通一个网站 重置默认端口80
  # New-WebBinding -Name $SiteName -IPAddress "*" -Port $sitePort -HostHeader $HostHeader1 # 端口号加域名访问 根据实际情况修改
  
      .$Env:windir\system32\inetsrv\appcmd.exe set config /section:directoryBrowse /enabled:false
  
    }
  
    else{
  
    echo "'$SiteName' is Already exists"
  
    }
  
}
  

  
#设置IIS日志记录路径
  
function CreatIISLogFile(){
  
    .$Env:windir\system32\inetsrv\appcmd.exe set site $SiteName "-logfile.directory:$IISLogFile"
  
}
  

  

  
function RunBuild(){
  
    BuildAppPool
  
    BuildSite
  
    CreatIISLogFile
  
    .$Env:windir\system32\inetsrv\appcmd.exe start site $SiteName
  
}
  
RunBuild
  
使用方式
  
1、可以传入所有参数
  
ansible-playbook -i hostsweb.yml -verbose --extra-vars "host=test sitePort=9002 SiteName=ttyykk SiteAppPoolsModel=Integrated managedRuntimeVersion=v4.0 WebSitePath=D:\werwerw HostHeader1=www.qkaxml.com defaultDocument=index.htm IISLogFile=d:\LogFiles net32Or64=false"
  
2、根据情况传入参数 例如
  
网站名字 数据存放地址 域名等   可以根据实际情况修改。
  
ansible-playbook -i hostsweb.yml -verbose --extra-vars "host=test SiteName=51cto WebSitePath=D:\51cto.com HostHeader1=
  
完整项目 下载附件
页: [1]
查看完整版本: 利用ansible批量创建iis站点