|
|
51CTO旗下网站
|
|
移动端

5.4.4 用户自定义脚本扩展

《Microsoft Azure 管理与开发.上册,基础设施服务IaaS》本书是当下关于Microsoft Azure 产品的书籍中特别具有完整性、实用性的一本书,由Microsoft Azure中国区运维团队——世纪互联蓝云的资深工程师们编写。本节为大家介绍用户自定义脚本扩展。

作者:世纪互联蓝云公司来源:电子工业出版社|2018-07-07 09:38

5.4.4 用户自定义脚本扩展

除了上面的扩展外,还可以通过用户自定义脚本扩展来在虚拟机中执行Powershell 或者Shell 脚本。用户自定义脚本可以实现非常多的功能,例如通过脚本进行批量部署推送,等等。下面分别演示Windows 和Linux 虚拟机通过自定义脚本来实现一些简单的功能。

(1) 使用用户自定义脚本扩展为Windows 虚拟机添加一个管理员用户。

首先创建一个adduser.ps1 脚本,脚本内容如下:

  1. $computer="localhost";  
  2. $objOu = [ADSI]"WinNT://$computer";  
  3. $user = "TestUser";  
  4. $password = "Passw0rd!";  
  5. $objUser = $objOU.Create("User", $user);  
  6. $objUser.setpassword($password);  
  7. $objUser.SetInfo();  
  8. $objGroup = [ADSI]"WinNT://$computer/Administrators,group";  
  9. $objUserAdded = [ADSI]"WinNT://$user";  
  10. $objGroup.Add($objUserAdded.PSBase.Path); 

将脚本上传到存储账号的容器中(容器需要设置为公有容器),要保证公网可以访问到这个脚本(因为扩展实际上也是通过公网去下载这个脚本的)。使用下面的AzurePowershell 命令在虚拟机中执行上面的脚本:

  1. $vm = Get-AzureVM -ServiceName DemoCloudService -Name DemoVM  
  2. Set-AzureVMCustomScriptExtension -VM $vm -Run 'adduser.ps1' -FileUri  
  3. 'http://XXX.blob.core.chinacloudapi.cn/scripts/adduser.ps1'  
  4. $vm | Update-AzureVM 

执行成功后,在虚拟机仪表板中查看扩展的安装情况以及命令的执行情况,如图5.4-6所示。

到虚拟机中查看,发现已经成功添加了新的用户,如图5.4-7 所示。

(2) 使用用户自定义脚本扩展在Linux 虚拟机中安装nginx 服务。

这里仍然以CentOS 系统为例,创建一个install_nginx.sh 文件,写入下面的内容:

  1. #!/bin/sh  
  2. touch /etc/yum.repos.d/nginx.repo  
  3. echo '[nginx]' >> /etc/yum.repos.d/nginx.repo  
  4. echo 'name=nginx repo' >> /etc/yum.repos.d/nginx.repo  
  5. echo 'baseurl=http://nginx.org/packages/centos/$releasever/$basearch/' >> 
  6. /etc/yum.repos.d/nginx.repo  
  7. echo 'gpgcheck=0>> /etc/yum.repos.d/nginx.repo  
  8. echo 'enabled=1>> /etc/yum.repos.d/nginx.repo  
  9. yum -y install nginx 

保存后将文件上传到存储中,同样保证此文件公网可以访问。

然后使用下面的命令在Linux 虚拟机中执行上面的安装脚本:

  1. $vm = Get-AzureVM -ServiceName DemoCloudService -Name DemoLinuxVM  
  2. $PrivateConfiguration = '{"storageAccountName": "DemoStorageAccountName",  
  3. "storageAccountKey":"<Storage Key>"}'  
  4. $PublicConfiguration = '{"fileUris":["http://XXX.blob.core.chinacloudapi.cn/  
  5. scripts/install_nginx.sh"], "commandToExecute": "sh install_nginx.sh" }'  
  6. $ExtensionName = 'CustomScriptForLinux' 
  7. $Publisher = 'Microsoft.OSTCExtensions' 
  8. $Version = '1.*' 
  9. Set-AzureVMExtension -ExtensionName $ExtensionName -VM $vm -Publisher  
  10. $Publisher -Version $Version -PrivateConfiguration $PrivateConfiguration  
  11. -PublicConfiguration $PublicConfiguration | Update-AzureVM 

执行完成后,查看扩展的安装和执行状态,如图5.4-8 所示。

登录虚拟机查看nginx 的状态,发现已经完成安装。

  1. [root@XXX ~]# service nginx status  
  2. nginx is stopped 

除了上面的例子,用户自定义脚本扩展可实现的功能非常多,对于Windows 虚拟机而言,只要Powershell 能够实现的功能,理论上都能够使用自定义脚本扩展调用Powershell脚本完成。同理,对于Linux 虚拟机而言,只要Shell 能够实现的功能,理论上也都能通过该扩展调用Shell 脚本实现。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

计算机病毒分析与防治简明教程

本书全面翔实地介绍了各种病毒的原理,以操作系统的发展为主线,结合病毒的发展过程来综合分析病毒。在分析工具上,较多地利用了脚本语言、...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊