Azure实践之automation自动整理资产信息
更新:HHH   时间:2023-1-7


今天来讨论下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的资产信息了!


返回云计算教程...