今天来讨论下Azure automation的其他应用方式,对于云管理人员来说,肯定是非常希望对云中的资产情况有一个全面的了解的,对于这种需求,Azure Portal其实不失为一个不错的选择,然而,很多情况下,Portal了解的信息往往没有那么全面,而且效率非常低
这时候,使用PowerShell进行各种信息的统计就显得更为高效了,可以使用各种脚本统计包括IaaS到PaaS服务的各种信息,如果想要定期的去收集这些信息,还可以结合Azure automation,定义好schedule,然后配合收集信息的脚本,即可实现这样的需求
下边来看具体如何实现,首先在Azure中创建好一个automation account,这个就不演示了,之后更新好我们的module,并且导入好需要的module,常用的包括azurerm.storage, azurerm.network, azurerm.profile等,这部分内容可以看下之前的博客
https://blog.51cto.com/mxyit/2348123
有了这些内容之后,下一步要做的就是创建一个PowerShell的runbook了,收集信息的runbook有很多,包括网上的以及我自己写的,各位可以根据需要使用,我自己写的其实以前也介绍过很多次
使用PowerShell 获取 Azure账户中的用户权限分配情况
https://blog.51cto.com/mxyit/2347819
使用PowerShell快速获取Azure中的SQL Server VM
https://blog.51cto.com/mxyit/2347699
如何使用PowerShell 收集Azure VM Image列表
https://blog.51cto.com/mxyit/2070613
这里我用的是一个外国友人写的脚本,因为涵盖的服务比较多一些
https://gallery.technet.microsoft.com/scriptcenter/Azure-Inventory-using-3db0f658?redir=0
这个脚本本身是会把信息存储在硬盘上的,但是因为在automation中,这部分信息没办法持久化,所以我们可以稍作修改,分两个层面
1. 将收集好的信息存储为csv文件,保存在blob中
2. 将csv文件作为附件发送到邮箱中
为此,我们需要在原来的脚本基础上做一些修改,添加一些内容,以收集虚拟机信息为例,在虚拟机信息收集的脚本后添加以下内容
#Define file name
$filename="Virtual_Machine_details_"+ (Get-Date -UFormat '%Y_%m_%d')+".csv"
$virtual_machine_object | Export-Csv -path $filename -NoTypeInformation -Force
#Define blob info
$StorageAccountName = "<your storage account name>"
$StorageAccountKey = "<************************* your storage account key*************************>"
$ctx = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey
$containername="inventory"
Set-AzureStorageBlobContent -Container $ContainerName -File $filename -Blob $filename -Context $ctx -Force
#send email
$uname = "your email account"
$pwd = ConvertTo-SecureString -String "<your password>" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($uname, $pwd)
Send-MailMessage -from $uname -To '<target mail account>' -Subject "Azure Environment daily check $(Get-Date -UFormat '%Y/%m/%d')" -Body $("<font size=3><b>Here's the Azure environment status today</b></font><br>" ) -Attachments $filename -SmtpServer '<mail server>' -Credential $cred -UseSsl -BodyAsHtml
完成后,将runbook link to schedule
创建一个schedule
之后即可在schedule中看到了
运行后可以看到类似以下的效果,当然,这里只是演示了获取VM的信息,未包含脚本里的其他内容
Blob中存储内容
邮件收到的内容
这样,每天早上来了之后就可以看到Azure的资产信息了!