利用ansible批量创建iis站点

准备: 系统必须大于等于windows2008 R2 系统 升级 PowerShell至3.0 安装iis 安装net

ansible控制台目录结构

.
├── hosts #ansible 存放客户机IP
├── roles
│   └── web
│       ├── files
│       │   └── web.ps1 # 创建iis站点ps脚本
│       └── tasks
│           └── main.yml #ansible 控制脚本
└── web.yml # ansible 调用脚本

web.yml 文件说明

- hosts: ‘{{ host }}‘ # 客户机hosts文件节点名字
  vars:
    sitePort: 9002 # 端口号 创建网站用到完成会重置80端口
    SiteName: default # 网站应用程序池名字
    SiteAppPoolsModel: Integrated # 托管管道模式 Classic 、Integrated 
    managedRuntimeVersion: v4.0 # net版本号
    WebSitePath: D:\default # 网站数据存放地址
    HostHeader1:  # 第一web访问域名 
    HostHeader2:  # 第二个访问域名 
    defaultDocument: index.html #默认主页
    IISLogFile: d:\LogFiles # web网站日志存放地址
    net32Or64: false  # 是否打开32模式支持 64位系统使用 True、false  
  roles:
    - web # ansible 执行标签
main.yml 文件内容说明
- name: install web site
  script: web.ps1 {{sitePort}} {{SiteName}} {{SiteAppPoolsModel}} {{managedRuntimeVersion}} {{WebSitePath}} {{HostHeader1}} {{HostHeader2}} {{defaultDocument}} {{IISLogFile}} {{net32Or64}} # 客户机执行脚本及给脚本传参数
 #参数 {{sitePort}} web端口号 可以默认
 # {{SiteName}} # 网站应用程序池名字 
 # {{SiteAppPoolsModel}} 托管管道模式 Classic 、Integrated  可以配置默认
 # {{managedRuntimeVersion}} net版本号 可以配置默认
 # {{WebSitePath}} 网站数据存放地址
 # {{HostHeader1}} 第一web访问域名
 # {{HostHeader2}} 第二个访问域名 默认没打开
 #  {{defaultDocument}} 默认主页
 # {{IISLogFile}} web网站日志存放地址 可以配置成默认值
 # {{net32Or64}} 是否打开32模式支持 64位系统使用  可以配置成默认
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 System  2 >Network Service  3 >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 /[name="‘$SiteAppPools‘"].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 /[name="‘$SiteAppPools‘"].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 /[name="‘$SiteAppPools‘"].enable32BitAppOnWin64:$net32Or64
        #是否自动启动 
        .$Env:windir\system32\inetsrv\appcmd.exe set config /section:applicationPools /[name="‘$SiteAppPools‘"].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 hosts  web.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 hosts  web.yml -verbose --extra-vars "host=test SiteName=51cto WebSitePath=D:\51cto.com HostHeader1=
 完整项目 下载附件
时间: 2024-08-15 03:35:05

利用ansible批量创建iis站点的相关文章

使用appcmd命令创建iis站点及应用程序池

参考文章:iis7 appcmd的基础命令及简单用法 验证环境:Windows 7    IIS7 AppCmd.exe工具所在目录 C:\windows\sytstem32\inetsrv\目录下,所以执行命令前,先把当前目录切换到该目录下: cd C:\Windows\System32\inetsrv 创建iis站点: appcmd add site /name:"MyTestSite1" /bindings:http/*:8990: /physicalPath:"E:\

zabbix企业应用:利用自动发现监控IIS站点

如果一台windows server有许多个IIS站点,我们想实现这样一个监控目标:监控每个站点的状态.请求.流量.连接数,而且以后新增加的站点也可以自动加入到监控里,不需要再手动添加. 利用zabbix的自动发现(LLD)功能结合脚本可以实现上面的需求,实现对IIS站点的动态添加,动态监控. 先看一下监控的效果: 上图中的"Web Service(wskh)"是指IIS网站名称为wskh:"Web Service(_Total)"是指IIS下所有的站点. 网站流量

ansible 批量创建用户

一.ansible安装 1.安装第三方epel源 centos 5的epel #rpm -ivh http://mirrors.sohu.com/fedora-epel/5/x86_64/epel-release-5-4.noarch.rpm centos 6的epel #rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm 查看系统版本 # cat /etc/issue CentOS

通过代码动态创建IIS站点

对WebApi进行单元测试时,一般需要一个IIS站点,一般的做法,是通过写一个批处理的bat脚本来实现,其实通过编码,也能实现该功能. 主要有关注三点:应用程序池.Web站点.绑定(协议类型:http.https,IP地址,端口,主机名) 1.总体代码 var webSite = app.WebSite; using (var sm = new ServerManager()) { //创建应用程序池 var appPool = sm.ApplicationPools.FirstOrDefaul

动态创建IIS站点

对WebApi进行单元测试时,一般需要一个IIS站点,一般的做法,是通过写一个批处理的bat脚本来实现,其实通过编码,也能实现该功能. 主要有关注三点:应用程序池.Web站点.绑定(协议类型:http.https,IP地址,端口,主机名) 1.总体代码 var webSite = app.WebSite; using (var sm = new ServerManager()) { //创建应用程序池 var appPool = sm.ApplicationPools.FirstOrDefaul

cmd下命令行创建 IIS 站点

windows 创建站点命令 appcmd C:\Windows\System32\inetsrv\appcmd.exe SITE 虚拟站点的管理 APP 管理应用程序 VDIR 管理虚拟目录 APPPOOL 管理应用程序池 CONFIG 管理常规配置节 WP 管理工作进程 REQUEST 管理 HTTP 请求 MODULE 管理服务器模块 BACKUP 管理服务器配置备份 TRACE 使用失败请求跟踪日志 list 列出应用程序池 set 配置应用程序池 add 添加新应用程序池 delete

针对windowsserver 创建iis站点访问出错的解决方案(HTTP 错误 500.19 - Internal Server Error)

错误如下:   服务器错误 Internet信息服务 7.0 错误摘要HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 详细错误信息模块 IIS Web Core 通知 BeginRequest 处理程序 尚未确定 错误代码 0x80070005 配置错误 由于权限不足而无法读取配置文件 配置文件 \\?\C:\Users\Administrator\Desktop\zzu\web.config 请求的 URL htt

利用ansible批量管理windows2008 R2 以上dns服务器

准备:安装dns服务器net3.5  PowerShell DnsShell插件用到.DnsShell插件附件里面 ansible 支持环境也要安装的 ansible 目录结构说明: . ├── DnsShell #PowerShell dns支持模块 cp to C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules 正在文件夹 │   ├── DNSShell.dll │   ├── DnsShell.Format.ps1xml │   ├── 

Ansible 批量创建用户 密码注意事项

user模块是请求的是useradd, userdel, usermod三个指令,goup模块请求的是groupadd, groupdel, groupmod 三个指令. user模块 home:指定用户的家目录,需要与createhome配合使用 groups:指定用户的属组 uid:指定用的uid password:指定用户的密码 name:指定用户名 createhome:是否创建家目录 yes|no system:是否为系统用户 remove:当state=absent时,remove=