forked from hashicorp/terraform
-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
azure-vm-simple-linux #8
Closed
scottzilla
wants to merge
76
commits into
cloudbooster:master
from
10thmagnitude:topic-101-vm-simple-linux
Closed
Changes from 73 commits
Commits
Show all changes
76 commits
Select commit
Hold shift + click to select a range
2c1c999
initial commit - deploys successfully
anniehedgpeth 84ebc67
gitignore added
anniehedgpeth 5da82e6
added .travis.yml and deploy.sh
4febc17
updated travis.yml for builds on terraform examples
b7f8ae5
added directory to build matrix
8d9e3e1
added deploy script, updated travis.yml to build topic- branches
601735b
updated .travis.yml to read branches prefixed with topic-
90d948b
cleanup and simplify deploy script
bbdb2ce
removed branch restrictions on deploy
ca65fe3
disabling travis deployment on master short-term
d8131c2
cleanup; permitted topic branch
3ce7a24
add execute permissions to deploy.sh file
832ab98
generate random string for hostname
62dc732
updated syntax for arguments to terraform
c4ac9c3
fixed syntax for terraform variables
048ab5a
renamed folder; updated deployment script; prompt for additional vari…
d0973b7
moved outputs to outputs.tf; added sshCommand
3dce8c2
was working on the wrong deploy.sh........ :(
44d416c
fixed quotes
42b4ddc
plan now produces output plan, apply now consumes outputted plan
f52b7a9
fixed -out syntax
1d7d3f1
added missing \ to plan command
acaea87
nixed the numbers from string generation
4fb55b0
made string generation more robust
e0208f4
added after_deploy step to travis.yml; updated string generation yet …
af3de7b
azure is awfully particular for certain strings
1653d5d
incorrect variable reference
bf5d977
fixed after_deploy syntax for .travis.yml
36e4b74
added -force to after_deploy
87b049b
adding cd to after_deploy to ensure we're in the correct directory
f117f1d
trying terraform 0.9.2 for destroy bug; fixed interpolation issue wit…
602559f
updated travis file to use docker for pre_deploy/deploy/after_deploy
3f9d6a2
no need to pull images
017b469
mount pwd to container for terraform
8ed7e81
invalid path for travis
60b2081
service docker required, despite docker already running
3a1adfc
simplified travis.yml and deploy.sh
372605c
added env variables to terraform:light
f047180
env vars need quotes
d89e652
forgot \ at eol
4edbc8b
fixed plan args
10f48d5
cleaned up argument passing;removed quotes from container args
86f68f4
better passing of env vars
20d8a07
azure cli after_deploy step working properly; cleanup
6c3c85d
simplified deploy.sh, fixed after_deploy delete via cli
34d0c45
updated to best practices/conventions
anniehedgpeth 2776838
cleanup
9a7e424
cleanup; sane defaults
3e49819
fixed broken syntax for travis
02952ca
cleanup/reorg
ccfdc3c
branch restrictions
9232165
rename; and execute perms
986b068
travis syntax changes
d0e8c28
fixed travis cfg
d4ea91a
removal of extra cd
fcffe2d
easier to export in before_deploy block
679aa2e
run script in wrong dir
441b86a
explicit build dirs
938402e
bad syntax
942c23a
Merge branch 'master' into topic-101-vm-simple-linux
scottzilla 5850bc8
azuredeploy.tf to main.tf in README
anniehedgpeth e4b1cf7
Merge branch 'topic-101-vm-simple-linux' of https://github.com/10thma…
anniehedgpeth afb164b
Topic 101 vm simple linux (#1)
scottzilla 2362bd7
merge upstream
f2ba2a3
Merge branch 'master' of github.com:harijayms/terraform
5d4e049
Merge branch 'master' of github.com:harijayms/terraform
3a77aaf
merge upstream
1ce99f6
added deployment script for mac; ensured managed disks are being used
f635bbd
updated build dir
56f6aa1
renamed scripts to be more intuitive; added check for docker
64b52ee
merge upstream
7777546
consolidated deploy and after_deploy into a single script; simplified…
7a34501
removed container resource; added terraform show
7140760
updated incorrect descriptions
5f577c7
added az vm show between apply & destroy
001acd6
merge upstream
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
# Very simple deployment of a Linux VM | ||
|
||
<a href="http://armviz.io/#/?load=https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2Fazure-quickstart-templates%2Fmaster%2F101-vm-simple-linux%2Fazuredeploy.json" target="_blank"> | ||
<img src="http://armviz.io/visualizebutton.png"/> | ||
</a> | ||
|
||
This template allows you to deploy a simple Linux VM using a few different options for the Ubuntu version, using the latest patched version. This will deploy a A1 size VM in the resource group location and return the FQDN of the VM. | ||
|
||
This template takes a minimum amount of parameters and deploys a Linux VM, using the latest patched version. | ||
|
||
## main.tf | ||
The `main.tf` file contains the actual resources that will be deployed. It also contains the Azure Resource Group definition and any defined variables. | ||
|
||
## outputs.tf | ||
This data is outputted when `terraform apply` is called, and can be queried using the `terraform output` command. | ||
|
||
## provider.tf | ||
Azure requires that an application is added to Azure Active Directory to generate the `client_id`, `client_secret`, and `tenant_id` needed by Terraform (`subscription_id` can be recovered from your Azure account details). Please go [here](https://www.terraform.io/docs/providers/azurerm/) for full instructions on how to create this to populate your `provider.tf` file. | ||
|
||
## terraform.tfvars | ||
If a `terraform.tfvars` file is present in the current directory, Terraform automatically loads it to populate variables. We don't recommend saving usernames and password to version control, but you can create a local secret variables file and use `-var-file` to load it. | ||
|
||
## variables.tf | ||
The `variables.tf` file contains all of the input parameters that the user can specify when deploying this Terraform template. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
#!/bin/bash | ||
|
||
set -o errexit -o nounset | ||
|
||
docker run --rm -it \ | ||
-e ARM_CLIENT_ID \ | ||
-e ARM_CLIENT_SECRET \ | ||
-e ARM_SUBSCRIPTION_ID \ | ||
-e ARM_TENANT_ID \ | ||
-v $(pwd):/data \ | ||
--workdir=/data \ | ||
--entrypoint "/bin/sh" \ | ||
hashicorp/terraform:light \ | ||
-c "/bin/terraform get; \ | ||
/bin/terraform validate; \ | ||
/bin/terraform plan -out=out.tfplan -var dns_name=$KEY -var hostname=$KEY -var resource_group=$KEY -var admin_password=$PASSWORD; \ | ||
/bin/terraform apply out.tfplan; \ | ||
/bin/terraform show;" | ||
|
||
|
||
# cleanup deployed azure resources via terraform | ||
docker run --rm -it \ | ||
-e ARM_CLIENT_ID \ | ||
-e ARM_CLIENT_SECRET \ | ||
-e ARM_SUBSCRIPTION_ID \ | ||
-e ARM_TENANT_ID \ | ||
-v $(pwd):/data \ | ||
--workdir=/data \ | ||
--entrypoint "/bin/sh" \ | ||
hashicorp/terraform:light \ | ||
-c "/bin/terraform destroy -force -var dns_name=$KEY -var hostname=$KEY -var resource_group=$KEY -var admin_password=$PASSWORD;" | ||
|
||
|
||
# cleanup deployed azure resources via azure-cli | ||
# docker run --rm -it \ | ||
# azuresdk/azure-cli-python \ | ||
# sh -c "az login --service-principal -u $ARM_CLIENT_ID -p $ARM_CLIENT_SECRET --tenant $ARM_TENANT_ID; \ | ||
# az group delete -y -n $KEY" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
#!/bin/bash | ||
|
||
set -o errexit -o nounset | ||
|
||
if docker -v; then | ||
|
||
# generate a unique string for CI deployment | ||
export KEY=$(cat /dev/urandom | env LC_CTYPE=C tr -cd 'a-z' | head -c 12) | ||
export PASSWORD=$KEY$(cat /dev/urandom | env LC_CTYPE=C tr -cd 'A-Z' | head -c 2)$(cat /dev/urandom | env LC_CTYPE=C tr -cd '0-9' | head -c 2) | ||
|
||
/bin/sh ./deploy.ci.sh | ||
|
||
else | ||
echo "Docker is used to run terraform commands, please install before run: https://docs.docker.com/docker-for-mac/install/" | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
resource "azurerm_resource_group" "rg" { | ||
name = "${var.resource_group}" | ||
location = "${var.location}" | ||
} | ||
|
||
resource "azurerm_virtual_network" "vnet" { | ||
name = "${var.virtual_network_name}" | ||
location = "${var.location}" | ||
address_space = ["${var.address_space}"] | ||
resource_group_name = "${azurerm_resource_group.rg.name}" | ||
} | ||
|
||
resource "azurerm_subnet" "subnet" { | ||
name = "${var.rg_prefix}subnet" | ||
virtual_network_name = "${azurerm_virtual_network.vnet.name}" | ||
resource_group_name = "${azurerm_resource_group.rg.name}" | ||
address_prefix = "${var.subnet_prefix}" | ||
} | ||
|
||
resource "azurerm_network_interface" "nic" { | ||
name = "${var.rg_prefix}nic" | ||
location = "${var.location}" | ||
resource_group_name = "${azurerm_resource_group.rg.name}" | ||
|
||
ip_configuration { | ||
name = "${var.rg_prefix}ipconfig" | ||
subnet_id = "${azurerm_subnet.subnet.id}" | ||
private_ip_address_allocation = "Dynamic" | ||
public_ip_address_id = "${azurerm_public_ip.pip.id}" | ||
} | ||
} | ||
|
||
resource "azurerm_public_ip" "pip" { | ||
name = "${var.rg_prefix}-ip" | ||
location = "${var.location}" | ||
resource_group_name = "${azurerm_resource_group.rg.name}" | ||
public_ip_address_allocation = "dynamic" | ||
domain_name_label = "${var.dns_name}" | ||
} | ||
|
||
resource "azurerm_storage_account" "stor" { | ||
name = "${var.dns_name}stor" | ||
location = "${var.location}" | ||
resource_group_name = "${azurerm_resource_group.rg.name}" | ||
account_type = "${var.storage_account_type}" | ||
} | ||
|
||
resource "azurerm_managed_disk" "datadisk" { | ||
name = "${var.hostname}-datadisk" | ||
location = "${var.location}" | ||
resource_group_name = "${azurerm_resource_group.rg.name}" | ||
storage_account_type = "Standard_LRS" | ||
create_option = "Empty" | ||
disk_size_gb = "1023" | ||
} | ||
|
||
resource "azurerm_virtual_machine" "vm" { | ||
name = "${var.rg_prefix}vm" | ||
location = "${var.location}" | ||
resource_group_name = "${azurerm_resource_group.rg.name}" | ||
vm_size = "${var.vm_size}" | ||
network_interface_ids = ["${azurerm_network_interface.nic.id}"] | ||
|
||
storage_image_reference { | ||
publisher = "${var.image_publisher}" | ||
offer = "${var.image_offer}" | ||
sku = "${var.image_sku}" | ||
version = "${var.image_version}" | ||
} | ||
|
||
storage_os_disk { | ||
name = "${var.hostname}-osdisk" | ||
managed_disk_type = "Standard_LRS" | ||
caching = "ReadWrite" | ||
create_option = "FromImage" | ||
} | ||
|
||
storage_data_disk { | ||
name = "${var.hostname}-datadisk" | ||
managed_disk_id = "${azurerm_managed_disk.datadisk.id}" | ||
managed_disk_type = "Standard_LRS" | ||
disk_size_gb = "1023" | ||
create_option = "Attach" | ||
lun = 0 | ||
} | ||
|
||
os_profile { | ||
computer_name = "${var.hostname}" | ||
admin_username = "${var.admin_username}" | ||
admin_password = "${var.admin_password}" | ||
} | ||
|
||
os_profile_linux_config { | ||
disable_password_authentication = false | ||
} | ||
|
||
boot_diagnostics { | ||
enabled = "true" | ||
storage_uri = "${azurerm_storage_account.stor.primary_blob_endpoint}" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
output "hostname" { | ||
value = "${var.hostname}" | ||
} | ||
|
||
output "vm_fqdn" { | ||
value = "${azurerm_public_ip.pip.fqdn}" | ||
} | ||
|
||
output "sshCommand" { | ||
value = "ssh ${var.admin_username}@${azurerm_public_ip.pip.fqdn}" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# provider "azurerm" { | ||
# subscription_id = "REPLACE-WITH-YOUR-SUBSCRIPTION-ID" | ||
# client_id = "REPLACE-WITH-YOUR-CLIENT-ID" | ||
# client_secret = "REPLACE-WITH-YOUR-CLIENT-SECRET" | ||
# tenant_id = "REPLACE-WITH-YOUR-TENANT-ID" | ||
# } | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# Replace with relevant values | ||
|
||
# resource_group = "myresourcegroup" | ||
# rg_prefix = "rg" | ||
# hostname = "myvm" | ||
# dns_name = "mydnsname" | ||
# location = "southcentralus" | ||
# admin_password = "T3rr@f0rmP@ssword" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
variable "resource_group" { | ||
description = "The name of the resource group in which to create the virtual network." | ||
} | ||
|
||
variable "rg_prefix" { | ||
description = "The shortened abbreviation to represent your resource group that will go on the front of some resources." | ||
default = "rg" | ||
} | ||
|
||
variable "hostname" { | ||
description = "VM name referenced also in storage-related names." | ||
} | ||
|
||
variable "dns_name" { | ||
description = " Label for the Domain Name. Will be used to make up the FQDN. If a domain name label is specified, an A DNS record is created for the public IP in the Microsoft Azure DNS system." | ||
} | ||
|
||
variable "location" { | ||
description = "The location/region where the virtual network is created. Changing this forces a new resource to be created." | ||
default = "southcentralus" | ||
} | ||
|
||
variable "virtual_network_name" { | ||
description = "The name for the virtual network." | ||
default = "vnet" | ||
} | ||
|
||
variable "address_space" { | ||
description = "The address space that is used by the virtual network. You can supply more than one address space. Changing this forces a new resource to be created." | ||
default = "10.0.0.0/16" | ||
} | ||
|
||
variable "subnet_prefix" { | ||
description = "The address prefix to use for the subnet." | ||
default = "10.0.10.0/24" | ||
} | ||
|
||
variable "storage_account_type" { | ||
description = "Specifies the name of the storage account. Changing this forces a new resource to be created. This must be unique across the entire Azure service, not just within the resource group." | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Description is wrong |
||
default = "Standard_LRS" | ||
} | ||
|
||
variable "vm_size" { | ||
description = "Specifies the name of the virtual machine resource. Changing this forces a new resource to be created." | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Wrong description |
||
default = "Standard_A0" | ||
} | ||
|
||
variable "image_publisher" { | ||
description = "name of the publisher of the image (az vm image list)" | ||
default = "Canonical" | ||
} | ||
|
||
variable "image_offer" { | ||
description = "the name of the offer (az vm image list)" | ||
default = "UbuntuServer" | ||
} | ||
|
||
variable "image_sku" { | ||
description = "image sku to apply (az vm image list)" | ||
default = "16.04-LTS" | ||
} | ||
|
||
variable "image_version" { | ||
description = "version of the image to apply (az vm image list)" | ||
default = "latest" | ||
} | ||
|
||
variable "admin_username" { | ||
description = "administrator user name" | ||
default = "vmadmin" | ||
} | ||
|
||
variable "admin_password" { | ||
description = "administrator password (recommended to disable password auth)" | ||
} |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add terraform show here, it will be good to record it in the logs