博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 CustomScript 扩展程序自动执行 Linux 虚拟机自定义任务
阅读量:5819 次
发布时间:2019-06-18

本文共 3643 字,大约阅读时间需要 12 分钟。

WSSC WS ARD 高级项目经理

您可能已经从中了解了针对 Windows 虚拟机的 CustomScript扩展程序,现在的好消息是,这一扩展程序也已面向 Linux虚拟机提供。

中还介绍了 cloud-init,通过 cloud-init可以在 Azure Linux虚拟机配置期间向虚拟机插入脚本或元数据。CustomScript扩展程序则提供了更多功能,它可在虚拟机配置期间或配置之后运行您的脚本;而且还可以在 Azure支持的任何 Linux虚拟机上运行。

CustomScript能为您做什么?

Azure上创建 Linux虚拟机后,您可能需要在虚拟机上部署您的工作负荷(Web服务器、数据库等),理想情况下这可以通过一系列脚本来完成。

  • CustomScript扩展程序可自动从您指定的位置下载这些脚本,并使用您输入的参数执行脚本。

  • 只要在您的虚拟机上安装相应的脚本解译器,CustomScript扩展程序便可支持以 Linux系统下任何脚本语言(PythonLinux Shell 脚本语言等)编写的脚本。

  • 您可以在虚拟机配置期间安装并配置 CustomScript扩展程序,也可以选择在配置之后的任何时间进行。

  • 您可以使用 Azure PowerShell Cmdlet部署 CustomScript扩展程序。通过
    Azure 门户网站进行部署的功能也有望在未来几周内实现。敬请关注更多详情。

 先决条件

  • 微软 Azure Linux代理 2.0.5或更高版本。建议更新到最新版本。请注意,大多数 Azure虚拟机 Linux镜像库都包含 2.0.5版本。您可以通过运行waagent -version来确认此版本已安装在虚拟机中。为保证扩展程序最佳用户体验,建议按照本文结尾“其他注意事项”中的步骤更新到最新版本。

  • 。请注意,针对扩展程序的 支持有望在未来几周内推出。

您希望运行的脚本。确保脚本已上传至 Azure Blob存储或 Github 位置。

部署 CustomScript扩展程序

您可以通过 Azure PowerShell Azure 门户网站来部署扩展程序。在本文中,我们将重点介绍通过 Azure PowerShell部署扩展程序的过程。有关脚本中 API的参考信息,请单击

首先,确保您已经安装 Azure PowerShell。根据您的脚本的存储位置,有两个选项来部署扩展程序并运行您的脚本。

运行存储在 Azure Blob存储中的脚本

1. 用户编写脚本并将其上传至一个 Azure Blob 位置。

2. 在虚拟机配置期间或配置后将扩展程序添加至虚拟机中。

3.输入脚本的 Azure Blob 位置及其他可选参数。

4. 扩展程序将脚本下载到虚拟机上。

5.扩展程序按照用户指定的参数启动脚本。

#指定虚拟机,输入 Azure 存储帐户名和密码$vm = Get-AzureVM -ServiceName ‘MyServiceName’ -Name ‘MyVMName’$PrivateConfiguration = '{"storageAccountName":"MyAccount","storageAccountKey":"Mykey"}' #指定脚本在 Azure Blob 中的位置,并指定要执行的命令$PublicConfiguration = '{"fileUris":["http://MyAccount.blob.core.windows.net/vhds/MyShellScript.sh"], "commandToExecute":"sh MyShellScript.sh" }' #将扩展程序部署到虚拟机上,选择扩展程序的最新版本$ExtensionName = 'CustomScriptForLinux'  $Publisher = 'Microsoft.OSTCExtensions'  $Version = '1.1' Set-AzureVMExtension -ExtensionName $ExtensionName -VM  $vm -Publisher $Publisher -Version $Version -PrivateConfiguration $PrivateConfiguration -PublicConfiguration $PublicConfiguration  | Update-AzureVM

运行存储在 GitHub 中的脚本

1.    用户编写脚本,并将其上传至 GitHub

2.    在虚拟机配置期间或配置之后将扩展程序添加至虚拟机中。

3.    输入脚本的 GitHub位置及其他可选参数。

4.    扩展程序将脚本下载到虚拟机上。

5.    扩展程序按照用户指定的参数启动脚本。

#指定虚拟机$vm = Get-AzureVM -ServiceName ‘MyServiceName’ -Name ‘MyVMName’#指定脚本的位置,并指定要执行的命令$PublicConfiguration = '{"fileUris":["https://github.com/MyProject/Archive/MyPythonScript.py"], "commandToExecute":"python MyPythonScript.py" }' #将扩展程序部署到虚拟机上,选择扩展程序的最新版本$ExtensionName = 'CustomScriptForLinux'  $Publisher = 'Microsoft.OSTCExtensions'  $Version = '1.1' Set-AzureVMExtension -ExtensionName $ExtensionName -VM  $vm -Publisher $Publisher -Version $Version -PublicConfiguration $PublicConfiguration  | Update-AzureVM

查询结果

  • CustomScript扩展程序部署完毕即开始执行用户脚本。

  • 执行结果可通过 Azure PowerShell CmdletGet-AzureVM”“Get-Deployment”进行检索。您也可以通过 Azure 门户网站(即将推出)查看状态。

  • 您可以在 /var/log/azure/Microsoft.OSTCExtensions.CustomScriptForLinux/1.0/extension.log中找到 CustomScript扩展程序的日志文件。请注意,用户脚本的标准输出也将体现在该日志文件中。

其他注意事项

  • 如果您有多个脚本,您可以编写一个可调用相关脚本的入口点脚本,然后将该入口点脚本、相关脚本和任何其他相关二进制文件上传至存放脚本的位置(Azure Blob存储  GitHub)。

  • 扩展程序设计用于在虚拟机创建之后处理一次性任务。如果使用相同的配置第二次调用该扩展程序,则该扩展程序将不会执行您所指定的脚本。不过,如果您确实需要多次运行 CustomScript 扩展程序,您可以通过变换不同的配置来运行。例如:

1.    更改您的脚本的名称。

2.    使用以下代码添加一个时间戳作为 [PublicConfiguration]参数:

#生成当前时间戳,添加至配置中,这可确保每次运行 CustomScript 扩展程序时都采用不同的配置$TimeStamp = (Get-Date).Ticks$PublicConfiguration = '{"fileUris":[“MyAccount.blob.core.windows.net/vhds/MyShellScript.sh”], "commandToExecute":"sh MyShellScript.sh", “timestamp”:“' + $TimeStamp + '“}

  • 更新到WALA2.0.8的方法

  1. Github下载 WALA2.0.8 的源代码

    # wget

  2. waagent文件添加“可执行”的权限

    # chmod +x waagent

  3. 替换 /usr/sbin/目录下的waagent文件

    # cp waagent /usr/sbin

  4. 重启waagent服务

# service waagent restart

(如果你使用的是Ubuntu,需要将上述命令中的waagent替换为walinuxagent)

注意:1.如需要更新到其他版本,请参看2.运行以上命令需要Root权限。

本文翻译自:




转载于:https://www.cnblogs.com/sesexxoo/p/6190994.html

你可能感兴趣的文章
zabbix监控php状态(四)
查看>>
定时任务的创建
查看>>
实战Django:小型CMS Part2
查看>>
原创]windows server 2012 AD架构试验系列 – 16更改DC计算机名
查看>>
统治世界的十大算法
查看>>
linux svn安装和配置
查看>>
SSH中调用另一action的方法(chain,redirect)
查看>>
数据库基础
查看>>
表格排序
查看>>
关于Android四大组件的学习总结
查看>>
java只能的round,ceil,floor方法的使用
查看>>
由于无法创建应用程序域,因此未能执行请求。错误: 0x80070002 系统找不到指定的文件...
查看>>
新开的博客,为自己祝贺一下
查看>>
【CQOI2011】放棋子
查看>>
采用JXL包进行EXCEL数据写入操作
查看>>
一周总结
查看>>
将txt文件转化为json进行操作
查看>>
线性表4 - 数据结构和算法09
查看>>
C语言数据类型char
查看>>
Online Patching--EBS R12.2最大的改进
查看>>