Repository files navigation

Validations for Linux Images on Azure (Vhd Supported)

Use this script/pipeline to check if your custom linux image (Vhd) built works on Azure.

Table of Contents

  1. Motivation
  2. Requirements
    1. Linux / macOS / Windows
    2. Azure Pipelines
    3. Azure Cloud Shell
  3. Installation
  4. Working
    1. Setup
      1. Current Setup
      2. Future Setup
    2. Output
      1. Current Available Output
      2. Future Enhancement
      3. Example
    3. Validations
      1. Current Available Validations
      2. Future Support / Enhancement
  5. Contributing to the Repository
    1. Areas of contribution
    2. Feature Request, Issue and Bug Reporting
    3. Code Optimizations / Enhancements
    4. Microsoft OpenSource code of conduct
  6. Maintainers

Motivation

We wish to help our customers and also the community who are using Azure to use their Linux Virtual Machines with custom images and generalized images with less hassle. Hence the requirement of this pipeline which the customer/community can fork in their repositories and run as part of their regular validations.

This can also be used by Support teams across and outside Microsoft to validate incoming customers' images using Azure Cloud Shell

Requirements

Linux / macOS / Windows

  1. Terraform
    1. Azure Provider
  2. Azure Account
    1. Azure AAD Appliation Id Setup
    2. Currently AAD Application ID and Client Secret is Supported
    3. Ensure that Azure App has contributor access

Azure Pipelines

  1. Ensure that Terraform is available on Azure pipeline
  2. Ensure that relevant pipeline variables are set

Azure Cloud Shell

All requirements are met. Terraform is already installed by default.

Installation

  1. Ensure that Requirements is met
  2. clone the repo using the following command
    git clone https://github.com/Azure/linux-image-validations
  3. Tar the validations folder using the following command
    tar -cvzf validations/* validator.tar.gz
  4. Ensure that validator.tar.gz is present inside an Azure Storage Account.
    https://storage_account.blob.core.windows.net/container/validator.tar.gz
    
  5. Create a file called validate_upload.sh with the following details and place it inside the storage account
    #!/bin/bash -e
    generation=$2
    vhdName=$1
    sudo $(which tar) -xzf validator.tar.gz
    [[ -n"$(uname -a | grep -i $distro)"||-n"$(uname -a | grep -i debian)" ]] && sudo $(which python) validate.py
    [[ -n"$(uname -a | grep -i $redhat)"||-n"$(uname -a | grep -i centos)" ]] && sudo $(which platform_python) validate.py cat logs.json
    # Example of a curl callecho"https://contoso.com/images/$vhdName/validation/$generation"
    curl --location --request POST "https://contoso.com/images/$vhdName/validation/$generation" \
    --header 'Content-Type: application/json' -d @logs.json
    
  6. For folks who wish to run from commandline. Do note that this is to be performed after previous steps are in place.
    1. Deploying Resources (Terraform variables / Environment variables can also be used)
    cd linux-image-validations/azure
    terraform apply
    1. Cleanup of Resources
    cd linux-image-validations/azure
    terraform destroy
    

Working

Terraform is used in setting up of the infrastructure. Python is used to run the scripts inside the Virtual Machine using the Azure Custom Script Extension By doing so will perform the inherent validations such as WALinuxAgent Availability

Setup

Current Setup

  1. Single VM
  2. Single nic support
  3. Testing of Generation 1 and Generation 2 Virtual Machine.
  4. HA Not supported
  5. Input is currently the SAS Uri to the Linux VHD.

Future Setup

  1. High Availability with cluster
  2. Multiple NIC support

Output

Output is currently rendered in JSON We are currently in the Information Gathering wherein most of the details is not validated rather than displayed directly. The output details are currently available in logs.json

Currently Available

System
  1. /proc/cmdline - This is used to check if the VM supports Serial console
  2. Grub configuration - This is used to check if the VM supports Serial console
  3. OS Release and Kernel Version
  4. Disk Usage Report
  5. MBR/EFI Boot
Package Manager
  1. Repo availability - (yum and dnf)

Future Support

  1. Driver details
  2. Cloud-Init details
  3. Instance Metadata Service (IMDS)

Example

JSON Output

Validations

Current Validations Performed

  1. Generation 1 and Generation 2 VM Bootability
  2. WALinuxAgent Availability.
  3. Network Connectivity
  4. Repo Availability (Currently Yum and dnf supported)

Future Validations

  1. Azure Site Recovery
  2. Cloud-Init validation

Linux Distribution Supported

Current

  1. RedHat
  2. CentOS

Future Support

  1. SLES
  2. OpenSUSE
  3. Ubuntu - (Works - E2E testing is required)
  4. Debian - (Works - E2E testing is required)

Contributing

We sincerely welcome contributions from our customers and community. Together we believe that we can make this a better validation system for Linux Images on Azure.

Areas

  1. Documentation
  2. Code Enhancement
  3. Testing and Bug Reports

Issue and Bug Reporting

Issue Template to report Bugs and bugs are tracked on issues tab. This can also be used to propose new feature request. Please turn the feature-request flag

[Issue Occurrence - Optional]
Short one-liner issue statement
[Environment]
1. Linux / Windows / OS X
2. Azure Pipelines
3. CloudShell
[Description]
Provide Detailed Description explaining the issue statement
Add Screenshots / Snippets / Error messages if available
[Steps to Reproduce]
[Severity]

Code Enhancement

  1. naming convention for terraform scripts - snake_case for variables
  2. PEP-8 for Python is followed
  3. Commit Message format.
    <Repo Name / Work Name>: Short one-liner of the work
    Description:
    <Provide your description in brief>
    Signed-off-by: 
    Multiple file changes involving multiple work should be submitted with multiple commits.

Code of Conduct

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Maintainers

  1. Sriharsha B S
  2. Pankaj Basnal
  3. Abhilash Gopal

About

Azure Compatible Linux Images validations

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Validations for Linux Images on Azure (Vhd Supported)

Use this script/pipeline to check if your custom linux image (Vhd) built works on Azure.

Table of Contents

  1. Motivation
  2. Requirements
    1. Linux / macOS / Windows
    2. Azure Pipelines
    3. Azure Cloud Shell
  3. Installation
  4. Working
    1. Setup
      1. Current Setup
      2. Future Setup
    2. Output
      1. Current Available Output
      2. Future Enhancement
      3. Example
    3. Validations
      1. Current Available Validations
      2. Future Support / Enhancement
  5. Contributing to the Repository
    1. Areas of contribution
    2. Feature Request, Issue and Bug Reporting
    3. Code Optimizations / Enhancements
    4. Microsoft OpenSource code of conduct
  6. Maintainers

Motivation

We wish to help our customers and also the community who are using Azure to use their Linux Virtual Machines with custom images and generalized images with less hassle. Hence the requirement of this pipeline which the customer/community can fork in their repositories and run as part of their regular validations.

This can also be used by Support teams across and outside Microsoft to validate incoming customers' images using Azure Cloud Shell

Requirements

Linux / macOS / Windows

  1. Terraform
    1. Azure Provider
  2. Azure Account
    1. Azure AAD Appliation Id Setup
    2. Currently AAD Application ID and Client Secret is Supported
    3. Ensure that Azure App has contributor access

Azure Pipelines

  1. Ensure that Terraform is available on Azure pipeline
  2. Ensure that relevant pipeline variables are set

Azure Cloud Shell

All requirements are met. Terraform is already installed by default.

Installation

  1. Ensure that Requirements is met
  2. clone the repo using the following command
    git clone https://github.com/Azure/linux-image-validations
  3. Tar the validations folder using the following command
    tar -cvzf validations/* validator.tar.gz
  4. Ensure that validator.tar.gz is present inside an Azure Storage Account.
    https://storage_account.blob.core.windows.net/container/validator.tar.gz
    
  5. Create a file called validate_upload.sh with the following details and place it inside the storage account
    #!/bin/bash -e
    generation=$2
    vhdName=$1
    sudo $(which tar) -xzf validator.tar.gz
    [[ -n"$(uname -a | grep -i $distro)"||-n"$(uname -a | grep -i debian)" ]] && sudo $(which python) validate.py
    [[ -n"$(uname -a | grep -i $redhat)"||-n"$(uname -a | grep -i centos)" ]] && sudo $(which platform_python) validate.py cat logs.json
    # Example of a curl callecho"https://contoso.com/images/$vhdName/validation/$generation"
    curl --location --request POST "https://contoso.com/images/$vhdName/validation/$generation" \
    --header 'Content-Type: application/json' -d @logs.json
    
  6. For folks who wish to run from commandline. Do note that this is to be performed after previous steps are in place.
    1. Deploying Resources (Terraform variables / Environment variables can also be used)
    cd linux-image-validations/azure
    terraform apply
    1. Cleanup of Resources
    cd linux-image-validations/azure
    terraform destroy
    

Working

Terraform is used in setting up of the infrastructure. Python is used to run the scripts inside the Virtual Machine using the Azure Custom Script Extension By doing so will perform the inherent validations such as WALinuxAgent Availability

Setup

Current Setup

  1. Single VM
  2. Single nic support
  3. Testing of Generation 1 and Generation 2 Virtual Machine.
  4. HA Not supported
  5. Input is currently the SAS Uri to the Linux VHD.

Future Setup

  1. High Availability with cluster
  2. Multiple NIC support

Output

Output is currently rendered in JSON We are currently in the Information Gathering wherein most of the details is not validated rather than displayed directly. The output details are currently available in logs.json

Currently Available

System
  1. /proc/cmdline - This is used to check if the VM supports Serial console
  2. Grub configuration - This is used to check if the VM supports Serial console
  3. OS Release and Kernel Version
  4. Disk Usage Report
  5. MBR/EFI Boot
Package Manager
  1. Repo availability - (yum and dnf)

Future Support

  1. Driver details
  2. Cloud-Init details
  3. Instance Metadata Service (IMDS)

Example

JSON Output

Validations

Current Validations Performed

  1. Generation 1 and Generation 2 VM Bootability
  2. WALinuxAgent Availability.
  3. Network Connectivity
  4. Repo Availability (Currently Yum and dnf supported)

Future Validations

  1. Azure Site Recovery
  2. Cloud-Init validation

Linux Distribution Supported

Current

  1. RedHat
  2. CentOS

Future Support

  1. SLES
  2. OpenSUSE
  3. Ubuntu - (Works - E2E testing is required)
  4. Debian - (Works - E2E testing is required)

Contributing

We sincerely welcome contributions from our customers and community. Together we believe that we can make this a better validation system for Linux Images on Azure.

Areas

  1. Documentation
  2. Code Enhancement
  3. Testing and Bug Reports

Issue and Bug Reporting

Issue Template to report Bugs and bugs are tracked on issues tab. This can also be used to propose new feature request. Please turn the feature-request flag

[Issue Occurrence - Optional]
Short one-liner issue statement
[Environment]
1. Linux / Windows / OS X
2. Azure Pipelines
3. CloudShell
[Description]
Provide Detailed Description explaining the issue statement
Add Screenshots / Snippets / Error messages if available
[Steps to Reproduce]
[Severity]

Code Enhancement

  1. naming convention for terraform scripts - snake_case for variables
  2. PEP-8 for Python is followed
  3. Commit Message format.
    <Repo Name / Work Name>: Short one-liner of the work
    Description:
    <Provide your description in brief>
    Signed-off-by: 
    Multiple file changes involving multiple work should be submitted with multiple commits.

Code of Conduct

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Maintainers

  1. Sriharsha B S
  2. Pankaj Basnal
  3. Abhilash Gopal

About

Azure Compatible Linux Images validations

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Validations for Linux Images on Azure (Vhd Supported)

Use this script/pipeline to check if your custom linux image (Vhd) built works on Azure.

Table of Contents

  1. Motivation
  2. Requirements
    1. Linux / macOS / Windows
    2. Azure Pipelines
    3. Azure Cloud Shell
  3. Installation
  4. Working
    1. Setup
      1. Current Setup
      2. Future Setup
    2. Output
      1. Current Available Output
      2. Future Enhancement
      3. Example
    3. Validations
      1. Current Available Validations
      2. Future Support / Enhancement
  5. Contributing to the Repository
    1. Areas of contribution
    2. Feature Request, Issue and Bug Reporting
    3. Code Optimizations / Enhancements
    4. Microsoft OpenSource code of conduct
  6. Maintainers

Motivation

We wish to help our customers and also the community who are using Azure to use their Linux Virtual Machines with custom images and generalized images with less hassle. Hence the requirement of this pipeline which the customer/community can fork in their repositories and run as part of their regular validations.

This can also be used by Support teams across and outside Microsoft to validate incoming customers' images using Azure Cloud Shell

Requirements

Linux / macOS / Windows

  1. Terraform
    1. Azure Provider
  2. Azure Account
    1. Azure AAD Appliation Id Setup
    2. Currently AAD Application ID and Client Secret is Supported
    3. Ensure that Azure App has contributor access

Azure Pipelines

  1. Ensure that Terraform is available on Azure pipeline
  2. Ensure that relevant pipeline variables are set

Azure Cloud Shell

All requirements are met. Terraform is already installed by default.

Installation

  1. Ensure that Requirements is met
  2. clone the repo using the following command
    git clone https://github.com/Azure/linux-image-validations
  3. Tar the validations folder using the following command
    tar -cvzf validations/* validator.tar.gz
  4. Ensure that validator.tar.gz is present inside an Azure Storage Account.
    https://storage_account.blob.core.windows.net/container/validator.tar.gz
    
  5. Create a file called validate_upload.sh with the following details and place it inside the storage account
    #!/bin/bash -e
    generation=$2
    vhdName=$1
    sudo $(which tar) -xzf validator.tar.gz
    [[ -n"$(uname -a | grep -i $distro)"||-n"$(uname -a | grep -i debian)" ]] && sudo $(which python) validate.py
    [[ -n"$(uname -a | grep -i $redhat)"||-n"$(uname -a | grep -i centos)" ]] && sudo $(which platform_python) validate.py cat logs.json
    # Example of a curl callecho"https://contoso.com/images/$vhdName/validation/$generation"
    curl --location --request POST "https://contoso.com/images/$vhdName/validation/$generation" \
    --header 'Content-Type: application/json' -d @logs.json
    
  6. For folks who wish to run from commandline. Do note that this is to be performed after previous steps are in place.
    1. Deploying Resources (Terraform variables / Environment variables can also be used)
    cd linux-image-validations/azure
    terraform apply
    1. Cleanup of Resources
    cd linux-image-validations/azure
    terraform destroy
    

Working

Terraform is used in setting up of the infrastructure. Python is used to run the scripts inside the Virtual Machine using the Azure Custom Script Extension By doing so will perform the inherent validations such as WALinuxAgent Availability

Setup

Current Setup

  1. Single VM
  2. Single nic support
  3. Testing of Generation 1 and Generation 2 Virtual Machine.
  4. HA Not supported
  5. Input is currently the SAS Uri to the Linux VHD.

Future Setup

  1. High Availability with cluster
  2. Multiple NIC support

Output

Output is currently rendered in JSON We are currently in the Information Gathering wherein most of the details is not validated rather than displayed directly. The output details are currently available in logs.json

Currently Available

System
  1. /proc/cmdline - This is used to check if the VM supports Serial console
  2. Grub configuration - This is used to check if the VM supports Serial console
  3. OS Release and Kernel Version
  4. Disk Usage Report
  5. MBR/EFI Boot
Package Manager
  1. Repo availability - (yum and dnf)

Future Support

  1. Driver details
  2. Cloud-Init details
  3. Instance Metadata Service (IMDS)

Example

JSON Output

Validations

Current Validations Performed

  1. Generation 1 and Generation 2 VM Bootability
  2. WALinuxAgent Availability.
  3. Network Connectivity
  4. Repo Availability (Currently Yum and dnf supported)

Future Validations

  1. Azure Site Recovery
  2. Cloud-Init validation

Linux Distribution Supported

Current

  1. RedHat
  2. CentOS

Future Support

  1. SLES
  2. OpenSUSE
  3. Ubuntu - (Works - E2E testing is required)
  4. Debian - (Works - E2E testing is required)

Contributing

We sincerely welcome contributions from our customers and community. Together we believe that we can make this a better validation system for Linux Images on Azure.

Areas

  1. Documentation
  2. Code Enhancement
  3. Testing and Bug Reports

Issue and Bug Reporting

Issue Template to report Bugs and bugs are tracked on issues tab. This can also be used to propose new feature request. Please turn the feature-request flag

[Issue Occurrence - Optional]
Short one-liner issue statement
[Environment]
1. Linux / Windows / OS X
2. Azure Pipelines
3. CloudShell
[Description]
Provide Detailed Description explaining the issue statement
Add Screenshots / Snippets / Error messages if available
[Steps to Reproduce]
[Severity]

Code Enhancement

  1. naming convention for terraform scripts - snake_case for variables
  2. PEP-8 for Python is followed
  3. Commit Message format.
    <Repo Name / Work Name>: Short one-liner of the work
    Description:
    <Provide your description in brief>
    Signed-off-by: 
    Multiple file changes involving multiple work should be submitted with multiple commits.

Code of Conduct

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Maintainers

  1. Sriharsha B S
  2. Pankaj Basnal
  3. Abhilash Gopal

About

Azure Compatible Linux Images validations

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Validations for Linux Images on Azure (Vhd Supported)

Use this script/pipeline to check if your custom linux image (Vhd) built works on Azure.

Table of Contents

  1. Motivation
  2. Requirements
    1. Linux / macOS / Windows
    2. Azure Pipelines
    3. Azure Cloud Shell
  3. Installation
  4. Working
    1. Setup
      1. Current Setup
      2. Future Setup
    2. Output
      1. Current Available Output
      2. Future Enhancement
      3. Example
    3. Validations
      1. Current Available Validations
      2. Future Support / Enhancement
  5. Contributing to the Repository
    1. Areas of contribution
    2. Feature Request, Issue and Bug Reporting
    3. Code Optimizations / Enhancements
    4. Microsoft OpenSource code of conduct
  6. Maintainers

Motivation

We wish to help our customers and also the community who are using Azure to use their Linux Virtual Machines with custom images and generalized images with less hassle. Hence the requirement of this pipeline which the customer/community can fork in their repositories and run as part of their regular validations.

This can also be used by Support teams across and outside Microsoft to validate incoming customers' images using Azure Cloud Shell

Requirements

Linux / macOS / Windows

  1. Terraform
    1. Azure Provider
  2. Azure Account
    1. Azure AAD Appliation Id Setup
    2. Currently AAD Application ID and Client Secret is Supported
    3. Ensure that Azure App has contributor access

Azure Pipelines

  1. Ensure that Terraform is available on Azure pipeline
  2. Ensure that relevant pipeline variables are set

Azure Cloud Shell

All requirements are met. Terraform is already installed by default.

Installation

  1. Ensure that Requirements is met
  2. clone the repo using the following command
    git clone https://github.com/Azure/linux-image-validations
  3. Tar the validations folder using the following command
    tar -cvzf validations/* validator.tar.gz
  4. Ensure that validator.tar.gz is present inside an Azure Storage Account.
    https://storage_account.blob.core.windows.net/container/validator.tar.gz
    
  5. Create a file called validate_upload.sh with the following details and place it inside the storage account
    #!/bin/bash -e
    generation=$2
    vhdName=$1
    sudo $(which tar) -xzf validator.tar.gz
    [[ -n"$(uname -a | grep -i $distro)"||-n"$(uname -a | grep -i debian)" ]] && sudo $(which python) validate.py
    [[ -n"$(uname -a | grep -i $redhat)"||-n"$(uname -a | grep -i centos)" ]] && sudo $(which platform_python) validate.py cat logs.json
    # Example of a curl callecho"https://contoso.com/images/$vhdName/validation/$generation"
    curl --location --request POST "https://contoso.com/images/$vhdName/validation/$generation" \
    --header 'Content-Type: application/json' -d @logs.json
    
  6. For folks who wish to run from commandline. Do note that this is to be performed after previous steps are in place.
    1. Deploying Resources (Terraform variables / Environment variables can also be used)
    cd linux-image-validations/azure
    terraform apply
    1. Cleanup of Resources
    cd linux-image-validations/azure
    terraform destroy
    

Working

Terraform is used in setting up of the infrastructure. Python is used to run the scripts inside the Virtual Machine using the Azure Custom Script Extension By doing so will perform the inherent validations such as WALinuxAgent Availability

Setup

Current Setup

  1. Single VM
  2. Single nic support
  3. Testing of Generation 1 and Generation 2 Virtual Machine.
  4. HA Not supported
  5. Input is currently the SAS Uri to the Linux VHD.

Future Setup

  1. High Availability with cluster
  2. Multiple NIC support

Output

Output is currently rendered in JSON We are currently in the Information Gathering wherein most of the details is not validated rather than displayed directly. The output details are currently available in logs.json

Currently Available

System
  1. /proc/cmdline - This is used to check if the VM supports Serial console
  2. Grub configuration - This is used to check if the VM supports Serial console
  3. OS Release and Kernel Version
  4. Disk Usage Report
  5. MBR/EFI Boot
Package Manager
  1. Repo availability - (yum and dnf)

Future Support

  1. Driver details
  2. Cloud-Init details
  3. Instance Metadata Service (IMDS)

Example

JSON Output

Validations

Current Validations Performed

  1. Generation 1 and Generation 2 VM Bootability
  2. WALinuxAgent Availability.
  3. Network Connectivity
  4. Repo Availability (Currently Yum and dnf supported)

Future Validations

  1. Azure Site Recovery
  2. Cloud-Init validation

Linux Distribution Supported

Current

  1. RedHat
  2. CentOS

Future Support

  1. SLES
  2. OpenSUSE
  3. Ubuntu - (Works - E2E testing is required)
  4. Debian - (Works - E2E testing is required)

Contributing

We sincerely welcome contributions from our customers and community. Together we believe that we can make this a better validation system for Linux Images on Azure.

Areas

  1. Documentation
  2. Code Enhancement
  3. Testing and Bug Reports

Issue and Bug Reporting

Issue Template to report Bugs and bugs are tracked on issues tab. This can also be used to propose new feature request. Please turn the feature-request flag

[Issue Occurrence - Optional]
Short one-liner issue statement
[Environment]
1. Linux / Windows / OS X
2. Azure Pipelines
3. CloudShell
[Description]
Provide Detailed Description explaining the issue statement
Add Screenshots / Snippets / Error messages if available
[Steps to Reproduce]
[Severity]

Code Enhancement

  1. naming convention for terraform scripts - snake_case for variables
  2. PEP-8 for Python is followed
  3. Commit Message format.
    <Repo Name / Work Name>: Short one-liner of the work
    Description:
    <Provide your description in brief>
    Signed-off-by: 
    Multiple file changes involving multiple work should be submitted with multiple commits.

Code of Conduct

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Maintainers

  1. Sriharsha B S
  2. Pankaj Basnal
  3. Abhilash Gopal

About

Azure Compatible Linux Images validations

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Validations for Linux Images on Azure (Vhd Supported)

Use this script/pipeline to check if your custom linux image (Vhd) built works on Azure.

Table of Contents

  1. Motivation
  2. Requirements
    1. Linux / macOS / Windows
    2. Azure Pipelines
    3. Azure Cloud Shell
  3. Installation
  4. Working
    1. Setup
      1. Current Setup
      2. Future Setup
    2. Output
      1. Current Available Output
      2. Future Enhancement
      3. Example
    3. Validations
      1. Current Available Validations
      2. Future Support / Enhancement
  5. Contributing to the Repository
    1. Areas of contribution
    2. Feature Request, Issue and Bug Reporting
    3. Code Optimizations / Enhancements
    4. Microsoft OpenSource code of conduct
  6. Maintainers

Motivation

We wish to help our customers and also the community who are using Azure to use their Linux Virtual Machines with custom images and generalized images with less hassle. Hence the requirement of this pipeline which the customer/community can fork in their repositories and run as part of their regular validations.

This can also be used by Support teams across and outside Microsoft to validate incoming customers' images using Azure Cloud Shell

Requirements

Linux / macOS / Windows

  1. Terraform
    1. Azure Provider
  2. Azure Account
    1. Azure AAD Appliation Id Setup
    2. Currently AAD Application ID and Client Secret is Supported
    3. Ensure that Azure App has contributor access

Azure Pipelines

  1. Ensure that Terraform is available on Azure pipeline
  2. Ensure that relevant pipeline variables are set

Azure Cloud Shell

All requirements are met. Terraform is already installed by default.

Installation

  1. Ensure that Requirements is met
  2. clone the repo using the following command
    git clone https://github.com/Azure/linux-image-validations
  3. Tar the validations folder using the following command
    tar -cvzf validations/* validator.tar.gz
  4. Ensure that validator.tar.gz is present inside an Azure Storage Account.
    https://storage_account.blob.core.windows.net/container/validator.tar.gz
    
  5. Create a file called validate_upload.sh with the following details and place it inside the storage account
    #!/bin/bash -e
    generation=$2
    vhdName=$1
    sudo $(which tar) -xzf validator.tar.gz
    [[ -n"$(uname -a | grep -i $distro)"||-n"$(uname -a | grep -i debian)" ]] && sudo $(which python) validate.py
    [[ -n"$(uname -a | grep -i $redhat)"||-n"$(uname -a | grep -i centos)" ]] && sudo $(which platform_python) validate.py cat logs.json
    # Example of a curl callecho"https://contoso.com/images/$vhdName/validation/$generation"
    curl --location --request POST "https://contoso.com/images/$vhdName/validation/$generation" \
    --header 'Content-Type: application/json' -d @logs.json
    
  6. For folks who wish to run from commandline. Do note that this is to be performed after previous steps are in place.
    1. Deploying Resources (Terraform variables / Environment variables can also be used)
    cd linux-image-validations/azure
    terraform apply
    1. Cleanup of Resources
    cd linux-image-validations/azure
    terraform destroy
    

Working

Terraform is used in setting up of the infrastructure. Python is used to run the scripts inside the Virtual Machine using the Azure Custom Script Extension By doing so will perform the inherent validations such as WALinuxAgent Availability

Setup

Current Setup

  1. Single VM
  2. Single nic support
  3. Testing of Generation 1 and Generation 2 Virtual Machine.
  4. HA Not supported
  5. Input is currently the SAS Uri to the Linux VHD.

Future Setup

  1. High Availability with cluster
  2. Multiple NIC support

Output

Output is currently rendered in JSON We are currently in the Information Gathering wherein most of the details is not validated rather than displayed directly. The output details are currently available in logs.json

Currently Available

System
  1. /proc/cmdline - This is used to check if the VM supports Serial console
  2. Grub configuration - This is used to check if the VM supports Serial console
  3. OS Release and Kernel Version
  4. Disk Usage Report
  5. MBR/EFI Boot
Package Manager
  1. Repo availability - (yum and dnf)

Future Support

  1. Driver details
  2. Cloud-Init details
  3. Instance Metadata Service (IMDS)

Example

JSON Output

Validations

Current Validations Performed

  1. Generation 1 and Generation 2 VM Bootability
  2. WALinuxAgent Availability.
  3. Network Connectivity
  4. Repo Availability (Currently Yum and dnf supported)

Future Validations

  1. Azure Site Recovery
  2. Cloud-Init validation

Linux Distribution Supported

Current

  1. RedHat
  2. CentOS

Future Support

  1. SLES
  2. OpenSUSE
  3. Ubuntu - (Works - E2E testing is required)
  4. Debian - (Works - E2E testing is required)

Contributing

We sincerely welcome contributions from our customers and community. Together we believe that we can make this a better validation system for Linux Images on Azure.

Areas

  1. Documentation
  2. Code Enhancement
  3. Testing and Bug Reports

Issue and Bug Reporting

Issue Template to report Bugs and bugs are tracked on issues tab. This can also be used to propose new feature request. Please turn the feature-request flag

[Issue Occurrence - Optional]
Short one-liner issue statement
[Environment]
1. Linux / Windows / OS X
2. Azure Pipelines
3. CloudShell
[Description]
Provide Detailed Description explaining the issue statement
Add Screenshots / Snippets / Error messages if available
[Steps to Reproduce]
[Severity]

Code Enhancement

  1. naming convention for terraform scripts - snake_case for variables
  2. PEP-8 for Python is followed
  3. Commit Message format.
    <Repo Name / Work Name>: Short one-liner of the work
    Description:
    <Provide your description in brief>
    Signed-off-by: 
    Multiple file changes involving multiple work should be submitted with multiple commits.

Code of Conduct

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Maintainers

  1. Sriharsha B S
  2. Pankaj Basnal
  3. Abhilash Gopal

About

Azure Compatible Linux Images validations

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Validations for Linux Images on Azure (Vhd Supported)

Use this script/pipeline to check if your custom linux image (Vhd) built works on Azure.

Table of Contents

  1. Motivation
  2. Requirements
    1. Linux / macOS / Windows
    2. Azure Pipelines
    3. Azure Cloud Shell
  3. Installation
  4. Working
    1. Setup
      1. Current Setup
      2. Future Setup
    2. Output
      1. Current Available Output
      2. Future Enhancement
      3. Example
    3. Validations
      1. Current Available Validations
      2. Future Support / Enhancement
  5. Contributing to the Repository
    1. Areas of contribution
    2. Feature Request, Issue and Bug Reporting
    3. Code Optimizations / Enhancements
    4. Microsoft OpenSource code of conduct
  6. Maintainers

Motivation

We wish to help our customers and also the community who are using Azure to use their Linux Virtual Machines with custom images and generalized images with less hassle. Hence the requirement of this pipeline which the customer/community can fork in their repositories and run as part of their regular validations.

This can also be used by Support teams across and outside Microsoft to validate incoming customers' images using Azure Cloud Shell

Requirements

Linux / macOS / Windows

  1. Terraform
    1. Azure Provider
  2. Azure Account
    1. Azure AAD Appliation Id Setup
    2. Currently AAD Application ID and Client Secret is Supported
    3. Ensure that Azure App has contributor access

Azure Pipelines

  1. Ensure that Terraform is available on Azure pipeline
  2. Ensure that relevant pipeline variables are set

Azure Cloud Shell

All requirements are met. Terraform is already installed by default.

Installation

  1. Ensure that Requirements is met
  2. clone the repo using the following command
    git clone https://github.com/Azure/linux-image-validations
  3. Tar the validations folder using the following command
    tar -cvzf validations/* validator.tar.gz
  4. Ensure that validator.tar.gz is present inside an Azure Storage Account.
    https://storage_account.blob.core.windows.net/container/validator.tar.gz
    
  5. Create a file called validate_upload.sh with the following details and place it inside the storage account
    #!/bin/bash -e
    generation=$2
    vhdName=$1
    sudo $(which tar) -xzf validator.tar.gz
    [[ -n"$(uname -a | grep -i $distro)"||-n"$(uname -a | grep -i debian)" ]] && sudo $(which python) validate.py
    [[ -n"$(uname -a | grep -i $redhat)"||-n"$(uname -a | grep -i centos)" ]] && sudo $(which platform_python) validate.py cat logs.json
    # Example of a curl callecho"https://contoso.com/images/$vhdName/validation/$generation"
    curl --location --request POST "https://contoso.com/images/$vhdName/validation/$generation" \
    --header 'Content-Type: application/json' -d @logs.json
    
  6. For folks who wish to run from commandline. Do note that this is to be performed after previous steps are in place.
    1. Deploying Resources (Terraform variables / Environment variables can also be used)
    cd linux-image-validations/azure
    terraform apply
    1. Cleanup of Resources
    cd linux-image-validations/azure
    terraform destroy
    

Working

Terraform is used in setting up of the infrastructure. Python is used to run the scripts inside the Virtual Machine using the Azure Custom Script Extension By doing so will perform the inherent validations such as WALinuxAgent Availability

Setup

Current Setup

  1. Single VM
  2. Single nic support
  3. Testing of Generation 1 and Generation 2 Virtual Machine.
  4. HA Not supported
  5. Input is currently the SAS Uri to the Linux VHD.

Future Setup

  1. High Availability with cluster
  2. Multiple NIC support

Output

Output is currently rendered in JSON We are currently in the Information Gathering wherein most of the details is not validated rather than displayed directly. The output details are currently available in logs.json

Currently Available

System
  1. /proc/cmdline - This is used to check if the VM supports Serial console
  2. Grub configuration - This is used to check if the VM supports Serial console
  3. OS Release and Kernel Version
  4. Disk Usage Report
  5. MBR/EFI Boot
Package Manager
  1. Repo availability - (yum and dnf)

Future Support

  1. Driver details
  2. Cloud-Init details
  3. Instance Metadata Service (IMDS)

Example

JSON Output

Validations

Current Validations Performed

  1. Generation 1 and Generation 2 VM Bootability
  2. WALinuxAgent Availability.
  3. Network Connectivity
  4. Repo Availability (Currently Yum and dnf supported)

Future Validations

  1. Azure Site Recovery
  2. Cloud-Init validation

Linux Distribution Supported

Current

  1. RedHat
  2. CentOS

Future Support

  1. SLES
  2. OpenSUSE
  3. Ubuntu - (Works - E2E testing is required)
  4. Debian - (Works - E2E testing is required)

Contributing

We sincerely welcome contributions from our customers and community. Together we believe that we can make this a better validation system for Linux Images on Azure.

Areas

  1. Documentation
  2. Code Enhancement
  3. Testing and Bug Reports

Issue and Bug Reporting

Issue Template to report Bugs and bugs are tracked on issues tab. This can also be used to propose new feature request. Please turn the feature-request flag

[Issue Occurrence - Optional]
Short one-liner issue statement
[Environment]
1. Linux / Windows / OS X
2. Azure Pipelines
3. CloudShell
[Description]
Provide Detailed Description explaining the issue statement
Add Screenshots / Snippets / Error messages if available
[Steps to Reproduce]
[Severity]

Code Enhancement

  1. naming convention for terraform scripts - snake_case for variables
  2. PEP-8 for Python is followed
  3. Commit Message format.
    <Repo Name / Work Name>: Short one-liner of the work
    Description:
    <Provide your description in brief>
    Signed-off-by: 
    Multiple file changes involving multiple work should be submitted with multiple commits.

Code of Conduct

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Maintainers

  1. Sriharsha B S
  2. Pankaj Basnal
  3. Abhilash Gopal

About

Azure Compatible Linux Images validations

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Validations for Linux Images on Azure (Vhd Supported)

Use this script/pipeline to check if your custom linux image (Vhd) built works on Azure.

Table of Contents

  1. Motivation
  2. Requirements
    1. Linux / macOS / Windows
    2. Azure Pipelines
    3. Azure Cloud Shell
  3. Installation
  4. Working
    1. Setup
      1. Current Setup
      2. Future Setup
    2. Output
      1. Current Available Output
      2. Future Enhancement
      3. Example
    3. Validations
      1. Current Available Validations
      2. Future Support / Enhancement
  5. Contributing to the Repository
    1. Areas of contribution
    2. Feature Request, Issue and Bug Reporting
    3. Code Optimizations / Enhancements
    4. Microsoft OpenSource code of conduct
  6. Maintainers

Motivation

We wish to help our customers and also the community who are using Azure to use their Linux Virtual Machines with custom images and generalized images with less hassle. Hence the requirement of this pipeline which the customer/community can fork in their repositories and run as part of their regular validations.

This can also be used by Support teams across and outside Microsoft to validate incoming customers' images using Azure Cloud Shell

Requirements

Linux / macOS / Windows

  1. Terraform
    1. Azure Provider
  2. Azure Account
    1. Azure AAD Appliation Id Setup
    2. Currently AAD Application ID and Client Secret is Supported
    3. Ensure that Azure App has contributor access

Azure Pipelines

  1. Ensure that Terraform is available on Azure pipeline
  2. Ensure that relevant pipeline variables are set

Azure Cloud Shell

All requirements are met. Terraform is already installed by default.

Installation

  1. Ensure that Requirements is met
  2. clone the repo using the following command
    git clone https://github.com/Azure/linux-image-validations
  3. Tar the validations folder using the following command
    tar -cvzf validations/* validator.tar.gz
  4. Ensure that validator.tar.gz is present inside an Azure Storage Account.
    https://storage_account.blob.core.windows.net/container/validator.tar.gz
    
  5. Create a file called validate_upload.sh with the following details and place it inside the storage account
    #!/bin/bash -e
    generation=$2
    vhdName=$1
    sudo $(which tar) -xzf validator.tar.gz
    [[ -n"$(uname -a | grep -i $distro)"||-n"$(uname -a | grep -i debian)" ]] && sudo $(which python) validate.py
    [[ -n"$(uname -a | grep -i $redhat)"||-n"$(uname -a | grep -i centos)" ]] && sudo $(which platform_python) validate.py cat logs.json
    # Example of a curl callecho"https://contoso.com/images/$vhdName/validation/$generation"
    curl --location --request POST "https://contoso.com/images/$vhdName/validation/$generation" \
    --header 'Content-Type: application/json' -d @logs.json
    
  6. For folks who wish to run from commandline. Do note that this is to be performed after previous steps are in place.
    1. Deploying Resources (Terraform variables / Environment variables can also be used)
    cd linux-image-validations/azure
    terraform apply
    1. Cleanup of Resources
    cd linux-image-validations/azure
    terraform destroy
    

Working

Terraform is used in setting up of the infrastructure. Python is used to run the scripts inside the Virtual Machine using the Azure Custom Script Extension By doing so will perform the inherent validations such as WALinuxAgent Availability

Setup

Current Setup

  1. Single VM
  2. Single nic support
  3. Testing of Generation 1 and Generation 2 Virtual Machine.
  4. HA Not supported
  5. Input is currently the SAS Uri to the Linux VHD.

Future Setup

  1. High Availability with cluster
  2. Multiple NIC support

Output

Output is currently rendered in JSON We are currently in the Information Gathering wherein most of the details is not validated rather than displayed directly. The output details are currently available in logs.json

Currently Available

System
  1. /proc/cmdline - This is used to check if the VM supports Serial console
  2. Grub configuration - This is used to check if the VM supports Serial console
  3. OS Release and Kernel Version
  4. Disk Usage Report
  5. MBR/EFI Boot
Package Manager
  1. Repo availability - (yum and dnf)

Future Support

  1. Driver details
  2. Cloud-Init details
  3. Instance Metadata Service (IMDS)

Example

JSON Output

Validations

Current Validations Performed

  1. Generation 1 and Generation 2 VM Bootability
  2. WALinuxAgent Availability.
  3. Network Connectivity
  4. Repo Availability (Currently Yum and dnf supported)

Future Validations

  1. Azure Site Recovery
  2. Cloud-Init validation

Linux Distribution Supported

Current

  1. RedHat
  2. CentOS

Future Support

  1. SLES
  2. OpenSUSE
  3. Ubuntu - (Works - E2E testing is required)
  4. Debian - (Works - E2E testing is required)

Contributing

We sincerely welcome contributions from our customers and community. Together we believe that we can make this a better validation system for Linux Images on Azure.

Areas

  1. Documentation
  2. Code Enhancement
  3. Testing and Bug Reports

Issue and Bug Reporting

Issue Template to report Bugs and bugs are tracked on issues tab. This can also be used to propose new feature request. Please turn the feature-request flag

[Issue Occurrence - Optional]
Short one-liner issue statement
[Environment]
1. Linux / Windows / OS X
2. Azure Pipelines
3. CloudShell
[Description]
Provide Detailed Description explaining the issue statement
Add Screenshots / Snippets / Error messages if available
[Steps to Reproduce]
[Severity]

Code Enhancement

  1. naming convention for terraform scripts - snake_case for variables
  2. PEP-8 for Python is followed
  3. Commit Message format.
    <Repo Name / Work Name>: Short one-liner of the work
    Description:
    <Provide your description in brief>
    Signed-off-by: 
    Multiple file changes involving multiple work should be submitted with multiple commits.

Code of Conduct

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Maintainers

  1. Sriharsha B S
  2. Pankaj Basnal
  3. Abhilash Gopal

About

Azure Compatible Linux Images validations

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Validations for Linux Images on Azure (Vhd Supported)

Use this script/pipeline to check if your custom linux image (Vhd) built works on Azure.

Table of Contents

  1. Motivation
  2. Requirements
    1. Linux / macOS / Windows
    2. Azure Pipelines
    3. Azure Cloud Shell
  3. Installation
  4. Working
    1. Setup
      1. Current Setup
      2. Future Setup
    2. Output
      1. Current Available Output
      2. Future Enhancement
      3. Example
    3. Validations
      1. Current Available Validations
      2. Future Support / Enhancement
  5. Contributing to the Repository
    1. Areas of contribution
    2. Feature Request, Issue and Bug Reporting
    3. Code Optimizations / Enhancements
    4. Microsoft OpenSource code of conduct
  6. Maintainers

Motivation

We wish to help our customers and also the community who are using Azure to use their Linux Virtual Machines with custom images and generalized images with less hassle. Hence the requirement of this pipeline which the customer/community can fork in their repositories and run as part of their regular validations.

This can also be used by Support teams across and outside Microsoft to validate incoming customers' images using Azure Cloud Shell

Requirements

Linux / macOS / Windows

  1. Terraform
    1. Azure Provider
  2. Azure Account
    1. Azure AAD Appliation Id Setup
    2. Currently AAD Application ID and Client Secret is Supported
    3. Ensure that Azure App has contributor access

Azure Pipelines

  1. Ensure that Terraform is available on Azure pipeline
  2. Ensure that relevant pipeline variables are set

Azure Cloud Shell

All requirements are met. Terraform is already installed by default.

Installation

  1. Ensure that Requirements is met
  2. clone the repo using the following command
    git clone https://github.com/Azure/linux-image-validations
  3. Tar the validations folder using the following command
    tar -cvzf validations/* validator.tar.gz
  4. Ensure that validator.tar.gz is present inside an Azure Storage Account.
    https://storage_account.blob.core.windows.net/container/validator.tar.gz
    
  5. Create a file called validate_upload.sh with the following details and place it inside the storage account
    #!/bin/bash -e
    generation=$2
    vhdName=$1
    sudo $(which tar) -xzf validator.tar.gz
    [[ -n"$(uname -a | grep -i $distro)"||-n"$(uname -a | grep -i debian)" ]] && sudo $(which python) validate.py
    [[ -n"$(uname -a | grep -i $redhat)"||-n"$(uname -a | grep -i centos)" ]] && sudo $(which platform_python) validate.py cat logs.json
    # Example of a curl callecho"https://contoso.com/images/$vhdName/validation/$generation"
    curl --location --request POST "https://contoso.com/images/$vhdName/validation/$generation" \
    --header 'Content-Type: application/json' -d @logs.json
    
  6. For folks who wish to run from commandline. Do note that this is to be performed after previous steps are in place.
    1. Deploying Resources (Terraform variables / Environment variables can also be used)
    cd linux-image-validations/azure
    terraform apply
    1. Cleanup of Resources
    cd linux-image-validations/azure
    terraform destroy
    

Working

Terraform is used in setting up of the infrastructure. Python is used to run the scripts inside the Virtual Machine using the Azure Custom Script Extension By doing so will perform the inherent validations such as WALinuxAgent Availability

Setup

Current Setup

  1. Single VM
  2. Single nic support
  3. Testing of Generation 1 and Generation 2 Virtual Machine.
  4. HA Not supported
  5. Input is currently the SAS Uri to the Linux VHD.

Future Setup

  1. High Availability with cluster
  2. Multiple NIC support

Output

Output is currently rendered in JSON We are currently in the Information Gathering wherein most of the details is not validated rather than displayed directly. The output details are currently available in logs.json

Currently Available

System
  1. /proc/cmdline - This is used to check if the VM supports Serial console
  2. Grub configuration - This is used to check if the VM supports Serial console
  3. OS Release and Kernel Version
  4. Disk Usage Report
  5. MBR/EFI Boot
Package Manager
  1. Repo availability - (yum and dnf)

Future Support

  1. Driver details
  2. Cloud-Init details
  3. Instance Metadata Service (IMDS)

Example

JSON Output

Validations

Current Validations Performed

  1. Generation 1 and Generation 2 VM Bootability
  2. WALinuxAgent Availability.
  3. Network Connectivity
  4. Repo Availability (Currently Yum and dnf supported)

Future Validations

  1. Azure Site Recovery
  2. Cloud-Init validation

Linux Distribution Supported

Current

  1. RedHat
  2. CentOS

Future Support

  1. SLES
  2. OpenSUSE
  3. Ubuntu - (Works - E2E testing is required)
  4. Debian - (Works - E2E testing is required)

Contributing

We sincerely welcome contributions from our customers and community. Together we believe that we can make this a better validation system for Linux Images on Azure.

Areas

  1. Documentation
  2. Code Enhancement
  3. Testing and Bug Reports

Issue and Bug Reporting

Issue Template to report Bugs and bugs are tracked on issues tab. This can also be used to propose new feature request. Please turn the feature-request flag

[Issue Occurrence - Optional]
Short one-liner issue statement
[Environment]
1. Linux / Windows / OS X
2. Azure Pipelines
3. CloudShell
[Description]
Provide Detailed Description explaining the issue statement
Add Screenshots / Snippets / Error messages if available
[Steps to Reproduce]
[Severity]

Code Enhancement

  1. naming convention for terraform scripts - snake_case for variables
  2. PEP-8 for Python is followed
  3. Commit Message format.
    <Repo Name / Work Name>: Short one-liner of the work
    Description:
    <Provide your description in brief>
    Signed-off-by: 
    Multiple file changes involving multiple work should be submitted with multiple commits.

Code of Conduct

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Maintainers

  1. Sriharsha B S
  2. Pankaj Basnal
  3. Abhilash Gopal

About

Azure Compatible Linux Images validations

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages