利用ansible批量管理windows2008 R2 以上dns服务器,ansiblewindows2008
准备:安装dns服务器net3.5 PowerShell DnsShell插件用到。DnsShell插件附件里面 ansible 支持环境也要安装的
ansible 目录结构说明:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
.
├── DnsShell
│ ├── DNSShell.dll
│ ├── DnsShell.Format.ps1xml
│ ├── DnsShell.psd1
│ └── en-US
│ └── DnsShell.dll-help.xml
├── dns.yml
├── hosts
└── roles
└── dns
├── files
│ └── dns.ps1
└── tasks
└── main.yml
|
1
2
3
4
5
6
7
8
9
10
|
dns.yml 说明:
- hosts: dns
vars:
parameter: dnszone
Domain: test .com
name: A
ipaddress: 192.168.1.1
ipaddress2: 192.168.1.1
roles:
- dns
|
1
2
3
4
5
6
7
8
|
main.yml 说明:
- name: sc dns
script: dns.ps1 {{parameter}} {{Domain}} {{name}} {{ipaddress}} {{ipaddress2}}
Domain 要操作的域名
name 域名记录 a记录 mx记录等
ipaddress a记录的IP cname 域名
ipaddress2 修改域名解析使用
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
dns.ps1 说明
param($a,$b,$c,$d,$e)
$parameter=$a
$Domain=$b
$name=$c
$ipaddress=$d
$ipaddress2=$e
import -module dnsshell
if ($parameter - eq "dnszone" )
{
new-dnszone -zonename $Domain -zonetype primary
}
elseif ($parameter - eq "A" )
{
new-dnsrecord -zonename $Domain -name $name -recordtype A -ipaddress $ipaddress
}
elseif ($parameter - eq "CNAME" )
{
new-dnsrecord -zonename $Domain -name $name -recordtype CNAME - hostname $ipaddress
}
elseif ($parameter - eq "delete" )
{
$ARecord = Get-WmiObject -Namespace root\MicrosoftDNS -class MicrosoftDNS_ResourceRecord -filter "containername='$Domain' AND OwnerName='$name.$Domain' and RecordData='$ipaddress'"
$ARecord.delete()
}
elseif ($parameter - eq "update" )
{
$ARecord = Get-WmiObject -Namespace root\MicrosoftDNS -class MicrosoftDNS_ResourceRecord -filter "containername='$Domain' AND OwnerName='$name.$Domain' and RecordData='$ipaddress'"
$ARecord.Modify($ARecord.TTL, "$ipaddress2" )
}
else
{
exit
}
|
其它说明:
1
2
3
4
5
6
7
8
9
10
11
12
|
添加主域名:ansible-playbook -i hosts dns.yml -verbose --extra-vars "parameter=dnszone Domain=test.com"
添加 A记录
ansible-playbook -i hosts dns.yml -verbose --extra-vars "parameter=A Domain=test.com name=www ipaddress=192.168.1.1"
添加 cname记录
ansible-playbook -i hosts dns.yml -verbose --extra-vars "parameter=cname Domain= test .com name= test ipaddress=
删减记录:
ansible-playbook -i hosts dns.yml -verbose --extra-vars "parameter=deleteDomain=test.com name=www ipaddress=192.168.1.1"
ansible-playbook -i hosts dns.yml -verbose --extra-vars "parameter=delete Domain= test .com name= test ipaddress=www. test .com.
更新记录
ansible-playbook -i hosts dns.yml -verbose --extra-vars "parameter=update Domain=test.com name=www ipaddress=192.168.1.1 ipaddress2=192.168.1.2"
ansible-playbook -i hosts dns.yml -verbose --extra-vars "parameter=update Domain=test.com name=test ipaddress=www.test.com. ipaddress2=www.test2www.test.com.com."
|
评论暂时关闭