创建桌面图像以快速识别服务器的用途

时间:2017-09-12 06:12:23

标签: powershell amazon-ec2 virtual-machine devops windows-server

这是我的背景故事,但我认为我所要求的可能适用于更广泛的场景:

我正致力于为AWS构建部署管道。使用AWS,您可以获得VM的实例ID,一旦您登录,您就会获得一个带有一些无用文本的桌面。由于EC2实例(VM)使用标记来表示每个VM的用途,因此我想在服务器上插入信息时以某种方式显示该信息。

我不是OPS的人,我不习惯打开许多远程桌面并记住每个桌面的功能。在我看来,一个可识别的明显可见符号会有很多帮助。

我有几个选项专注于设置桌面壁纸。

  • 当操作系统是Windows Server时,使用BGInfo呈现一些文本。我会将标签转换为文本,然后使用BGInfo。输出不是很明显
  • 找到一个可以表达组件或目的等概念的API,它会呈现图片。找不到一个。
  • 使用其中一个有趣的图片渲染,通常会在图片的占位符上添加文字。这是非常明显的,但在信息密度方面有限。例如picture
  • 我考虑过从shields.io生成徽章,然后将它们合并为一张图片。
  • 我或者更好的美学家,会创建一些代表可能组件的图片,然后将这些组合成一个更大的图片,用作壁纸的来源。

所有需要通过组合较小的图像进行某种大图像渲染的选项都非常费力,我想知道我是否真的遗漏了某些东西,或者没有在Google上查询正确的关键字学科。那些经常与云设置等许多虚拟机一起工作的人会怎么做?您如何快速确定虚拟机的目的或在任何地方运行?

我的问题显然是一个带有UI的操作系统,因为我需要有一个可见的,易于识别的标记。但是,如果您有命令行的解决方案,请同时分享。我虽然例如修改了PowerShell控制台状态,就像它为git status做的那样。我也专注于Windows Server操作系统,但是如果有基于unix的解决方案,请分享,也许我们可以移植这个想法。

1 个答案:

答案 0 :(得分:1)

在针对AWS EC2实例的此主题上进行了一些实验后,我实现了关于此主题的初始第一种方法。不是很有活力,但它现在对我有用。

我从EC2实例信息中驱动图片选择(不生成)。例如,来自标签或部分名称。

然后我的CodeDepploy包将修改位于AppData文件夹中的Ec2Wallpaper.jpg以供预期用户使用。例如,管理员C:\Users\Administrator\AppData\Local\Ec2Wallpaper.jpg。我这样做是因为在分析了EC2实例上发生的事情之后,我意识到我的代码与来自EC2Launch的代码之间会发生争执。因此,由于AWS的模块EC2Launch已经完成了它的工作,并设置了增强了一些额外信息的壁纸,我选择修改原始图片并让它做到这一点。工作

# This is the original wallpaper for the Administrator user that the EC2Launch tries to modify (Windows Server 2016) upon logon
$originalEC2WallpaperPath="C:\Users\Administrator\AppData\Local\Ec2Wallpaper.jpg"
Write-Debug "originalEC2WallpaperPath=$originalEC2WallpaperPath"
if(Test-Path $originalEC2WallpaperPath)
{
    # Script that will decides which wallpaper to use and returns it's item back
    # Need to decide on location.
    $getWallPaperItemPath=Join-Path -Path $PSScriptRoot -ChildPath "Get-WallpaperItem.ps1"
    Write-Debug "getWallPaperItemPath=$getWallPaperItemPath"

    # Execute the Get-WallpaperItem.ps1
    $wallPaperItem=& $getWallPaperItemPath

    if($wallPaperItem)
    {

        Copy-Item -Path $originalEC2WallpaperPath -Destination "$($originalEC2WallpaperPath).bak"
        Write-Verbose "Copied $originalEC2WallpaperPath to $($originalEC2WallpaperPath).bak"

        Copy-Item -Path $wallPaperItem.FullName -Destination $originalEC2WallpaperPath -Force
        Write-Verbose "Copied $($wallPaperItem.FullName) to $originalEC2WallpaperPath"
    }
    else
    {
        Write-Warning "$getWallPaperItemPath returned a null item"
    }
}
else
{
    Write-Debug "$originalEC2WallpaperPath doesn't exist. Not supported changing the wallpaper via EC2Launch"
}

请注意,Get-WallpaperItem.ps1是负责决定使用哪个墙纸并将有效的powershell项返回到脚本的脚本。 Get-WallpaperItem.ps1可以使用EC2的名称,标签或其他信息来决定从预定列表中使用哪张图片,或以某种方式生成图片。

我最初的问题是解决更多动态部分,这对我来说仍然是一种增强。此时最好的选择是使用ImageMagick将预渲染图片和动态图片从文本整理到画布中。