Windows 2008 R 2以上のdnsサーバをansibleで一括管理
3930 ワード
準備:dnsサーバnet 3をインストールする.5 PowerShell DnsShellプラグインを使用します.DnsShellプラグイン添付ファイルにはansibleサポート環境もインストールします
ansibleディレクトリ構造の説明:
その他の説明:
転載先:https://blog.51cto.com/juestnow/1876484
ansibleディレクトリ構造の説明:
.
├── DnsShell #PowerShell dns cp to C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
│ ├── DNSShell.dll
│ ├── DnsShell.Format.ps1xml
│ ├── DnsShell.psd1
│ └── en-US
│ └── DnsShell.dll-help.xml
├── dns.yml # ansible
├── hosts # ip
└── roles
└── dns
├── files
│ └── dns.ps1 # PowerShell
└── tasks
└── main.yml # ansible
dns.yml :
- hosts: dns #
vars: #
parameter: dnszone # (dnszone A A CNAME cname delete update )
Domain: test.com # test.com
name: A # a
ipaddress: 192.168.1.1 # ip
ipaddress2: 192.168.1.1 #
roles:
- dns # ansible
main.yml :
- name: sc dns
script: dns.ps1 `parameter` `Domain` `name` `ipaddress` `ipaddress2`
# parameter : , ,
Domain
name a mx
ipaddress a IP cname
ipaddress2
dns.ps1
# ************************************************************
# * *
# * Powershell DNS *
# * *
# ************************************************************
#set-executionpolicy remotesigned
# dns
#################################################################################################
#
param($a,$b,$c,$d,$e)
$parameter=$a
$Domain=$b
$name=$c
$ipaddress=$d
$ipaddress2=$e
#################################################################################################
import-module dnsshell # dnsshell
##
if ($parameter -eq "dnszone")
{
new-dnszone -zonename $Domain -zonetype primary
}
## A
elseif ($parameter -eq "A")
{
new-dnsrecord -zonename $Domain -name $name -recordtype A -ipaddress $ipaddress
}
## CNAME
elseif ($parameter -eq "CNAME")
{
new-dnsrecord -zonename $Domain -name $name -recordtype CNAME -hostname $ipaddress
}
## dns
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()
}
## dns
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
}
その他の説明:
: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.baidu.com."
転載先:https://blog.51cto.com/juestnow/1876484