When working with the Azure agent, you have two primary options for extending its capabilities: user-defined capabilities and system capabilities.
User-defined capabilities allow you to create custom extensions that can be used to integrate with external systems, providing a high degree of flexibility.
System capabilities, on the other hand, are built-in extensions that are provided by the Azure agent itself, offering a more limited but still powerful set of features.
User-defined capabilities are ideal for scenarios where you need to integrate with a specific external system or application, while system capabilities are better suited for more general-purpose use cases.
System capabilities are typically more secure and easier to manage than user-defined capabilities, since they are built-in and maintained by the Azure team.
Azure DevOps Agent Capabilities
In Azure DevOps pipelines, agent capabilities play a crucial role in determining which tasks can be executed across different agents.
Azure DevOps agents have specific capabilities that enable or disable certain tasks. These capabilities are fundamental to the execution of tasks in pipelines.
Agents can be configured with custom capabilities, allowing users to define what tasks can be executed on a specific agent.
User-Defined Capabilities
User-defined variables are custom variables that you can define within your pipeline YAML. This can hold configuration values set up for a specific job or stage.
These variables are used to store specific configuration values, and by defining them, you can maintain and manage the configuration values more efficiently. This ensures the correct application during the execution of the pipeline tasks.
You can define custom variables within your pipeline YAML configuration, allowing you to store specific configuration values for a particular job or stage. This makes it easier to manage and maintain your configuration values.
Custom variables are accessible during pipeline execution, just like agent-specific variables. However, unlike agent-specific variables, user-defined variables are defined by you and can be tailored to your specific needs.
Here are some key characteristics of user-defined variables:
System Capabilities
Azure DevOps Agents are capable of running on a variety of operating systems, including Windows, Linux, and macOS. This flexibility allows teams to use their agents on existing infrastructure or in the cloud.
They can also be run on-premises or in the cloud, giving teams the flexibility to choose the deployment method that best fits their needs. Azure DevOps Agents are highly customizable, allowing teams to tailor their agents to meet the specific needs of their projects.
With Azure DevOps Agents, teams can automate a wide range of tasks, including building, testing, and deploying software. This automation can help teams save time and improve the efficiency of their development processes.
Azure DevOps Agents can also integrate with a wide range of third-party tools and services, including GitHub, Bitbucket, and Jenkins. This integration allows teams to leverage the features and functionality of these tools within their Azure DevOps pipelines.
Security and Permissions
Security and Permissions are crucial aspects of Azure Agent, especially when it comes to controlling access and usage of agent pools.
Roles are defined on each agent pool, and membership in these roles governs what operations you can perform on an agent pool. This helps control sharing and use of agents.
In project-level settings, roles are also defined on each project agent pool, and memberships in these roles govern what operations you can perform on an agent pool at the project level.
Here are the roles defined on an agent pool in project settings, along with their purposes:
Pipeline permissions control which YAML pipelines are authorized to use an agent pool. This does not restrict access from Classic pipelines.
You can either allow all pipelines to use the agent pool or lock it down to only allow selected YAML pipelines. If any other YAML pipeline refers to the agent pool, an authorization request gets raised, which must be approved by an agent pool Administrator.
Automation and Configuration
Automation and configuration can be a tedious process, but there's a better way. You can use Azure Automation DSC service to centrally manage and assign your configuration, eliminating the need to worry about supporting infrastructure.
With Azure Automation DSC, you can connect your on-premise servers to the service, upload your configurations, and check that required modules are imported into your automation account. This makes it easy to compile the configurations and assign them to the nodes.
You can visually verify the actual configuration state of your nodes on the portal or configure an alert to trigger if a non-compliant node is detected. This ensures that your servers are always in compliance with your desired configuration.
If you upload an updated version of your configuration, it will be automatically applied to the respective nodes, making it easy to keep your servers up-to-date.
Frequently Asked Questions
What is the difference between agent and agent pool in Azure DevOps?
In Azure DevOps, an agent is a machine that executes tasks, while an agent pool is a collection of agents organized by their capabilities, such as operating system or software configurations. Understanding the difference between agents and agent pools is key to optimizing your Azure DevOps workflow.
Sources
- https://luke.geek.nz/azure/hosted-agents-container-apps-job/
- https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/pools-queues
- https://bobcares.com/blog/azure-devops-agent-capabilities-and-environment-variables/
- https://andrewmatveychuk.com/how-to-run-azure-devops-self-hosted-agents-effectively/
- https://documentation.wazuh.com/current/getting-started/components/wazuh-agent.html
Featured Images: pexels.com