问题描述
我正在使用 azurerm_virtual_machine_extension
在Azure中引导一些虚拟机.
I'm using azurerm_virtual_machine_extension
to bootstrap some virtual machines in azure.
我发现的所有示例都使用类似的东西显示:
All examples i've found show using something similar to:
settings = <<SETTINGS
{
"fileUris": [ "https://my.bootstrapscript.com/script.sh}" ],
"commandToExecute": "bash script.sh"
}
SETTINGS
虽然可行,但我的问题是我必须公开托管 script
与 fileUris
一起使用.设置中是否有允许我从terraform文件夹发送本地文件内容的选项?
While this works, my issue is i'm having to publicly host script
for use with fileUris
. Is there an option within settings that will allow me to send local file contents from my terraform folder?
类似的东西:
settings = <<SETTINGS
{
"file": [ ${file("./script.txt")} ],
"commandToExecute": "bash script.sh"
}
SETTINGS
谢谢.
推荐答案
是的!
简介
在protected_settings中,使用脚本".
Yes We Can!
Introduction
In protected_settings, use "script".
terrain脚本
provider "azurerm" {
}
resource "azurerm_virtual_machine_extension" "vmext" {
resource_group_name = "${var.resource_group_name}"
location = "${var.location}"
name = "${var.hostname}-vmext"
virtual_machine_name = "${var.hostname}"
publisher = "Microsoft.Azure.Extensions"
type = "CustomScript"
type_handler_version = "2.0"
protected_settings = <<PROT
{
"script": "${base64encode(file(var.scfile))}"
}
PROT
}
变量
variable resource_group_name {
type = string
default = "ORA"
}
variable location {
type = string
default = "eastus"
}
variable hostname {
type = string
default = "ora"
}
variable scfile{
type = string
default = "yum.bash"
}
bash脚本
#!/bin/bash
mkdir -p ~/download
cd ~/download
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm
yum -y install cowsay
cowsay ExaGridDba
输出
应用
[terraform@terra stackoverflow]$ terraform apply
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# azurerm_virtual_machine_extension.vmex0 will be created
+ resource "azurerm_virtual_machine_extension" "vmex0" {
+ id = (known after apply)
+ location = "eastus"
+ name = "ora-vmext"
+ protected_settings = (sensitive value)
+ publisher = "Microsoft.Azure.Extensions"
+ resource_group_name = "ORA"
+ tags = (known after apply)
+ type = "CustomScript"
+ type_handler_version = "2.0"
+ virtual_machine_name = "ora"
}
Plan: 1 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
azurerm_virtual_machine_extension.vmex0: Creating...
azurerm_virtual_machine_extension.vmex0: Still creating... [10s elapsed]
azurerm_virtual_machine_extension.vmex0: Still creating... [20s elapsed]
azurerm_virtual_machine_extension.vmex0: Still creating... [30s elapsed]
azurerm_virtual_machine_extension.vmex0: Still creating... [40s elapsed]
azurerm_virtual_machine_extension.vmex0: Still creating... [50s elapsed]
azurerm_virtual_machine_extension.vmex0: Still creating... [1m0s elapsed]
azurerm_virtual_machine_extension.vmex0: Still creating... [1m10s elapsed]
azurerm_virtual_machine_extension.vmex0: Still creating... [1m20s elapsed]
azurerm_virtual_machine_extension.vmex0: Still creating... [1m30s elapsed]
azurerm_virtual_machine_extension.vmex0: Still creating... [1m40s elapsed]
azurerm_virtual_machine_extension.vmex0: Still creating... [1m50s elapsed]
azurerm_virtual_machine_extension.vmex0: Still creating... [2m0s elapsed]
azurerm_virtual_machine_extension.vmex0: Creation complete after 2m1s [id=/subscriptions/7fe8a9c3-0812-42e2-9733-3f567308a0d0/resourceGroups/ORA/providers/Microsoft.Compute/virtualMachines/ora/extensions/ora-vmext]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
在目标上
stdout
[root@ora ~]# cat /var/lib/waagent/custom-script/download/0/stdout
Preparing... ########################################
Updating / installing...
epel-release-7-12 ########################################
Loaded plugins: langpacks, ulninfo
Resolving Dependencies
--> Running transaction check
---> Package cowsay.noarch 0:3.04-4.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
cowsay noarch 3.04-4.el7 epel 42 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 42 k
Installed size: 77 k
Downloading packages:
Public key for cowsay-3.04-4.el7.noarch.rpm is not installed
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : cowsay-3.04-4.el7.noarch 1/1
Verifying : cowsay-3.04-4.el7.noarch 1/1
Installed:
cowsay.noarch 0:3.04-4.el7
Complete!
< ExaGridDba >
------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
备注
- 脚本大小限制为262144字节base64编码,或196608字节.
- #!"确定口译员.#!/bin/python"将启动python脚本.
- 不需要这些azurerm_virtual_machine_extension参数:
- 设置
- fileUris
- commandToExecute
- storageAccountName
- storageAccountKey
结论
在Azure VM中,可以在不引用Blob存储帐户的情况下运行脚本.
Conclusion
In Azure VM, it is possible to run a script without referring to a blob storage account.
这篇关于地形Azurerm_virtual_machine_extension的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!