<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Getting started | XOAP Docs</title>
	<atom:link href="https://dev.xoap.io/docs-category/getting-started/feed/" rel="self" type="application/rss+xml" />
	<link>https://dev.xoap.io/docs-category/getting-started/</link>
	<description>Platform for IT infrastructure and workplace automation</description>
	<lastBuildDate>Thu, 19 Feb 2026 11:37:17 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://dev.xoap.io/wp-content/uploads/2023/11/cropped-favicon-32x32.png</url>
	<title>Getting started | XOAP Docs</title>
	<link>https://dev.xoap.io/docs-category/getting-started/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Standardizing on premises OS images</title>
		<link>https://dev.xoap.io/docs/standardizing-on-premises-os-images/</link>
					<comments>https://dev.xoap.io/docs/standardizing-on-premises-os-images/#respond</comments>
		
		<dc:creator><![CDATA[Stella]]></dc:creator>
		<pubDate>Wed, 11 Feb 2026 10:02:25 +0000</pubDate>
				<guid isPermaLink="false">https://dev.xoap.io/?post_type=docs&#038;p=29358</guid>

					<description><![CDATA[<p>Overview This guide walks you through the&#160;end‑to‑end process of standardizing on-premises operating system images with XOAP.&#160;The goal is to help you build&#160;repeatable, compliant, and provider‑agnostic base images&#160;that can be used consistently across on-premises deployments on either VMware vSphere, Nutanix or XenServer.&#160; What Are Standardized on-premises OS Images?&#160; Standardized Cloud OS Images are&#160;centrally defined, versioned, and [&#8230;]</p>
<p>The post <a href="https://dev.xoap.io/docs/standardizing-on-premises-os-images/">Standardizing on premises OS images</a> appeared first on <a href="https://dev.xoap.io">XOAP</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-3 wp-block-group-is-layout-flex">
<h2 class="wp-block-heading overview-flow" style="font-size:38px">Overview </h2>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>This guide walks you through the&nbsp;<strong>end‑to‑end process of standardizing on-premises operating system images with XOAP.&nbsp;</strong>The goal is to help you build&nbsp;<strong>repeatable, compliant, and provider‑agnostic base images</strong>&nbsp;that can be used consistently across on-premises deployments on either VMware vSphere, Nutanix or XenServer.&nbsp;</p>
</blockquote>



<figure class="wp-block-image size-full"><img decoding="async" src="https://dev.xoap.io/wp-content/uploads/2026/02/connect-azure-tenant-image-management-xoap.svg" alt="" class="wp-image-29435"/></figure>



<h3 class="wp-block-heading" style="font-size:28px">What Are Standardized on-premises OS Images?&nbsp;</h3>



<p>Standardized Cloud OS Images are&nbsp;<strong>centrally defined, versioned, and automated operating system images&nbsp;that:&nbsp;</strong></p>



<ul class="wp-block-list">
<li>Follow a common baseline (security, hardening, tooling)&nbsp;</li>



<li>Are built in a reproducible way&nbsp;</li>



<li>Can be reused across multiple environments and providers&nbsp;</li>



<li>Serve as the foundation for higher‑level automation (platform management)&nbsp;</li>
</ul>



<p>XOAP acts as the&nbsp;<strong>control plane</strong>&nbsp;that defines&nbsp;what&nbsp;an image should look like and&nbsp;how&nbsp;it is built, while the actual build execution happens inside the target environment.&nbsp;</p>



<h3 class="wp-block-heading" style="font-size:28px">What is the difference between images being created in the cloud and on-premises</h3>



<p>Creating images in the cloud and on-premises follows the same high-level goal—producing a reusable, standardized machine image—but differs significantly in implementation details.&nbsp;&nbsp;</p>



<p>In on-premises environments, image creation typically relies on full OS installers and requires an explicit&nbsp;<strong>autounattend.xml</strong>&nbsp;for Windows to automate setup steps such as disk partitioning, locale, users, and initial configuration; additional scripts are needed to configure&nbsp;<strong>WinRM</strong>, open or adjust the&nbsp;<strong>Windows Firewall</strong>, and install the appropriate&nbsp;<strong>hypervisor tools</strong>&nbsp;(for example, VMware Tools or XenServer guest tools) to ensure manageability and performance.&nbsp;&nbsp;</p>



<p>In cloud environments, many of these steps are partially abstracted by the platform through metadata services and pre-configured base images, but customization scripts are still required to align with enterprise standards. </p>



<p>For&nbsp;<strong>Linux</strong>, both cloud and on-premises image builds require unattended installation mechanisms (for example&nbsp;<strong>Kickstart,&nbsp;Preseed</strong>, or&nbsp;<strong>Cloud-Init</strong>) along with post-install scripts to configure SSH access, firewall rules, networking, time synchronization, and to install the relevant hypervisor or cloud-agent packages, ensuring the image integrates cleanly with the target runtime platform.&nbsp;</p>



<h3 class="wp-block-heading" style="font-size:28px">High‑Level Architecture – How It Works&nbsp;</h3>



<p>At a high level, the process looks like this:&nbsp;</p>



<ol class="wp-block-list">
<li>XOAP defines operating systems, builders, and image definitions&nbsp;</li>



<li>An on‑premises&nbsp;<strong>Connector</strong>&nbsp;executes builds locally&nbsp;</li>



<li>Images are created using native provider tooling&nbsp;</li>



<li>Results are tracked, versioned, and reused&nbsp;</li>
</ol>



<p>Key design principles:&nbsp;</p>



<ul class="wp-block-list">
<li><strong>No public inbound access required</strong>&nbsp;for XOAP&nbsp;</li>



<li><strong>Least</strong><strong>‑</strong><strong>privilege access</strong>&nbsp;using native identity concepts&nbsp;</li>



<li><strong>Separation of control plane and execution plane</strong>&nbsp;</li>
</ul>



<h3 class="wp-block-heading" style="font-size:28px">Short Overview of the End‑to‑End Flow&nbsp;</h3>



<ul class="wp-block-list">
<li>Prepare prerequisites&nbsp;</li>



<li>Deploy a Connector&nbsp;</li>



<li>Add an on-premises Connection&nbsp;</li>



<li>Add and manage Operating Systems&nbsp;</li>



<li>Configure Builders&nbsp;</li>



<li>Create Image Definitions&nbsp;</li>



<li>Run Image Builds&nbsp;</li>



<li>Validate the created images&nbsp;</li>



<li>Troubleshoot if required&nbsp;</li>



<li>Next steps and extensions&nbsp;</li>
</ul>



<h2 class="wp-block-heading prerequisites-on-premises" style="font-size:38px">Prerequisites</h2>



<p>Before you start, ensure the following prerequisites are met:&nbsp;</p>



<h3 class="wp-block-heading" style="font-size:28px">General</h3>



<ul class="wp-block-list">
<li>An active XOAP Workspace&nbsp;</li>



<li>Access to at least one supported on-premises virtualization platform&nbsp;</li>



<li>Permissions to create images and identities in the target environment (solution specific)&nbsp;</li>



<li>An Linux or Windows VM, to install the XOAP Connector which acts a s a proxy&nbsp;</li>



<li>If a proxy is used for internet connection, proxy credentials are needed for the Connector&nbsp;</li>



<li>Connector has access to the created images with required ports (WinRM 8595, 8596)&nbsp;</li>



<li>An ISO on the datastore of the desired platform&nbsp;</li>



<li>The SHA256 hash of the iso&nbsp;</li>
</ul>



<h3 class="wp-block-heading tabs-title" style="font-size:28px">Cloud‑Specific&nbsp;</h3>



<h4 class="wp-block-heading tab" style="font-size:28px">vSphere&nbsp;&nbsp;</h4>



<pre class="wp-block-code"><code>Required privileges at vCenter level (minimum set): 

    •   Datastore 
    •   Allocate space 
    •   Browse datastore 
    •   Low level file operations 
    •   Network 
    •   Assign network 
    •   Resource 
    •   Assign virtual machine to resource pool 
    •   Virtual Machine → Inventory 
    •   Create new 
    •   Register 
    •   Remove 
    •   Virtual Machine → Configuration 
    •   Add new disk 
    •   Add or remove device 
    •   Change CPU count 
    •   Change memory 
    •   Settings 
    •   Virtual Machine → Interaction 
    •   Power on 
    •   Power off 
    •   Reset 
    •   Virtual Machine → Provisioning 
    •   Allow disk access 
    •   Allow read-only disk access 
    •   vApp 
    •   Import 

Best practices: 
    •   Create a dedicated vCenter role for Packer/XOAP 
    •   Assign the role at Datacenter or Folder level 
    •   Use a service account, not a personal user </code></pre>



<h4 class="wp-block-heading tab" style="font-size:28px">Nutanix&nbsp;</h4>



<pre class="wp-block-code"><code>Required roles / permissions: 
    •   Ability to create, update, and delete VMs 
    •   Image upload and management permissions 
    •   Network assignment permissions 
    •   Disk attach/detach permissions 

Recommended built-in roles: 
    •   Infrastructure Admin (broad, easiest) 
    •   Or a custom role with: 
    •   VM Create / Delete 
    •   Image Create / Update 
    •   Network View / Attach 

Best practices: 
    •   Use a service account in Prism Central 
    •   Scope permissions to a specific project if possible</code></pre>



<h4 class="wp-block-heading tab" style="font-size:28px">XenServer</h4>



<pre class="wp-block-code"><code>Required permissions: 
    •   Pool‑admin or equivalent custom role with: 
    •   VM create / destroy 
    •   Attach / detach disks 
    •   Power operations 
    •   ISO SR access 

Key requirements: 
    •   Access to an ISO SR containing the installation media 
    •   Permission to create templates or base VMs 

Best practices: 
    •   Use a dedicated automation user
    •   Avoid using the built‑in root account </code></pre>



<h3 class="wp-block-heading" style="font-size:28px">Connector Deployment Flow&nbsp;</h3>



<p>For most scenarios, XOAP uses a&nbsp;<strong>Connector</strong>&nbsp;that runs inside the target environment.&nbsp;</p>



<h3 class="wp-block-heading" style="font-size:28px">Create an API Key&nbsp;</h3>



<p>Text</p>



<h3 class="wp-block-heading" style="font-size:28px">Note your Workspace ID&nbsp;</h3>



<p>Text</p>



<h3 class="wp-block-heading" style="font-size:28px">Install Connector on Windows&nbsp;</h3>



<ul class="wp-block-list">
<li>Deploy the Connector VM or service in the target environment&nbsp;</li>



<li>Outbound‑only communication to XOAP (api.dev.xoap.io) via 443&nbsp;</li>



<li>No inbound firewall rules required&nbsp;</li>
</ul>



<h3 class="wp-block-heading" style="font-size:28px">Install Connector on Linux&nbsp;</h3>



<ul class="wp-block-list">
<li>Deploy the Connector VM or service in the target environment&nbsp;</li>



<li>Outbound‑only communication to XOAP (api.dev.xoap.io) via 443&nbsp;</li>



<li>No inbound firewall rules required&nbsp;</li>
</ul>



<h3 class="wp-block-heading" style="font-size:28px">Verify Registration&nbsp;</h3>



<p>Text</p>



<h2 class="wp-block-heading connection-on-premises" style="font-size:38px">Add a Connection&nbsp;</h2>



<p>The&nbsp;<strong>Connection</strong>&nbsp;represents the logical link between XOAP and a target environment.&nbsp;</p>



<p>Steps:</p>



<ul class="wp-block-list">
<li>Navigate to&nbsp;<strong>Connections</strong>&nbsp;in XOAP&nbsp;</li>



<li>Select the target provider (Nutanix, vSphere or XenServer&nbsp;</li>



<li>Insert necessary Connection information&nbsp;</li>



<li>Assign the Connector that should be used for communication&nbsp;</li>



<li>Save the connection&nbsp;</li>
</ul>



<h3 class="wp-block-heading tabs-title" style="font-size:28px">Add connection Cloud-specific&nbsp;</h3>



<h4 class="wp-block-heading tab" style="font-size:28px">Nutanix</h4>



<p>Text</p>



<h4 class="wp-block-heading tab" style="font-size:28px">vSphere</h4>



<p>Text</p>



<h4 class="wp-block-heading tab" style="font-size:28px">XenServer</h4>



<p>Text</p>



<p>At this stage, no workloads are executed yet—you are only defining&nbsp;<em>where</em>&nbsp;builds will later run.&nbsp;</p>



<h2 class="wp-block-heading os-on-premises" style="font-size:38px">Add Operating Systems&nbsp;</h2>



<p>Operating Systems define&nbsp;<strong>what base OS versions are supported</strong>&nbsp;for image creation. On-premises operating systems are generic for all types of on-premises hypervisors.&nbsp;</p>



<p>Examples:&nbsp;</p>



<ul class="wp-block-list">
<li>Windows 11 Enterprise&nbsp;</li>



<li>Windows Server 2025&nbsp;</li>



<li>Ubuntu LTS&nbsp;</li>



<li>RHEL&nbsp;</li>
</ul>



<h2 class="wp-block-heading builder-configuration-on-premises" style="font-size:38px">Add Builder Configuration&nbsp;</h2>



<p>Builders define&nbsp;<strong>how</strong>&nbsp;an image is created.&nbsp;</p>



<p>A Builder configuration typically includes:&nbsp;</p>



<ul class="wp-block-list">
<li>Target platform (Nutanix, vSphere or XenServer.)&nbsp;</li>



<li>CPU and RAM configuration&nbsp;</li>



<li>Networking and storage configuration&nbsp;</li>



<li>Temporary build resources&nbsp;</li>
</ul>



<p>Builders abstract provider differences while keeping builds transparent and auditable.&nbsp;</p>



<h3 class="wp-block-heading tabs-title" style="font-size:28px">Add a builder configuration Cloud specific</h3>



<h4 class="wp-block-heading tab" style="font-size:28px">Nutanix</h4>



<p>Text</p>



<h4 class="wp-block-heading tab" style="font-size:28px">vSphere</h4>



<p>Text</p>



<h4 class="wp-block-heading tab" style="font-size:28px">XenServer</h4>



<p>Text</p>



<h2 class="wp-block-heading image-definition-on-premises" style="font-size:38px">Add Image Definition&nbsp;</h2>



<p>An&nbsp;<strong>Image Definition</strong>&nbsp;ties everything together.&nbsp;</p>



<p>It references:&nbsp;</p>



<ul class="wp-block-list">
<li>Platform&nbsp;</li>



<li>Builder Configuration&nbsp;</li>



<li>Operating System&nbsp;</li>



<li>Provisioning steps (scripts, actions, hardening), we call it&nbsp;<strong>Provisioner Role.</strong>&nbsp;</li>
</ul>



<h3 class="wp-block-heading" style="font-size:28px">Run Image Definition&nbsp;</h3>



<p>Once defined, you can start an image build:&nbsp;</p>



<ol class="wp-block-list">
<li>Select the Image Definition&nbsp;</li>



<li>Trigger a run manually or via schedule&nbsp;</li>



<li>XOAP hands off execution to the Connector&nbsp;</li>



<li>Build progress and logs are tracked centrally&nbsp;</li>
</ol>



<p>Each run results in a&nbsp;<strong>new, versioned image artifact</strong>.&nbsp;</p>



<h3 class="wp-block-heading" style="font-size:28px">Summary&nbsp;</h3>



<p>By following this flow, you establish a&nbsp;<strong>clean, auditable, and scalable image pipeline</strong>:&nbsp;</p>



<ul class="wp-block-list">
<li>One control plane (XOAP)&nbsp;</li>



<li>Multiple execution environments&nbsp;</li>



<li>Consistent OS baselines&nbsp;</li>



<li>Cloud and on‑prem parity&nbsp;</li>
</ul>



<p>This forms the foundation for enterprise‑grade automation and compliance‑driven infrastructure.&nbsp;</p>



<h2 class="wp-block-heading next-steps" style="font-size:38px">Next steps</h2>



<p>Once your first standardized image is working, typical next steps include:&nbsp;</p>



<div class="wp-block-group is-layout-constrained wp-block-group-is-layout-constrained">
<div class="wp-block-group is-layout-constrained wp-block-group-is-layout-constrained">
<h3 class="wp-block-heading verify-next-steps" style="font-size:28px">Verify the Created Image&nbsp;</h3>
</div>



<p>After a successful build:&nbsp;</p>



<ul class="wp-block-list">
<li>Validate the image&nbsp;</li>



<li>Confirm naming and version metadata&nbsp;</li>
</ul>



<p>XOAP keeps a record of:&nbsp;</p>



<ul class="wp-block-list">
<li>Logs&nbsp;</li>



<li>Resulting image IDs&nbsp;</li>
</ul>



<h3 class="wp-block-heading tabs-title" style="font-size:28px">Validate Image Definition Cloud Specific</h3>



<h4 class="wp-block-heading tab" style="font-size:28px">Nutanix</h4>



<p>Text</p>



<h4 class="wp-block-heading tab" style="font-size:28px">vSphere</h4>



<p>Text</p>



<h4 class="wp-block-heading tab" style="font-size:28px">XenServer</h4>



<p>Text</p>
</div>



<h3 class="wp-block-heading troubleshooting-next-steps" style="font-size:28px">Troubleshooting&nbsp;</h3>



<p>If a build fails:&nbsp;</p>



<ul class="wp-block-list">
<li>Review build logs in XOAP&nbsp;</li>



<li>Check Connector health and permissions&nbsp;</li>



<li>Validate cloud quotas and limits&nbsp;</li>



<li>Confirm network reachability inside the target environment&nbsp;</li>
</ul>



<p>Most issues are related to:&nbsp;</p>



<ul class="wp-block-list">
<li>Missing permissions&nbsp;</li>



<li>Network misconfiguration or port restrictions&nbsp;</li>



<li>Provider‑side quota limits&nbsp;</li>
</ul>



<h3 class="wp-block-heading scripts-next-steps" style="font-size:28px">Add Your Own Scripts, Applications and Configurations&nbsp;</h3>



<ul class="wp-block-list">
<li>Extend provisioners with custom scripts&nbsp;</li>



<li>Integrate security baselines&nbsp;</li>



<li>Install enterprise tooling&nbsp;</li>
</ul>



<p>Check our repo at&nbsp;<a href="https://dev.xoap.io/image-management-templates" target="_blank" rel="noreferrer noopener">https://dev.xoap.io/image-management-templates</a>&nbsp;</p>



<h3 class="wp-block-heading roles-next-steps" style="font-size:28px">Reuse existing Roles in the cloud&nbsp;</h3>



<ul class="wp-block-list">
<li>Apply the same provisioning roles to cloud images&nbsp;</li>



<li>Achieve consistency across hybrid environments&nbsp;</li>
</ul>



<h3 class="wp-block-heading automation-next-steps" style="font-size:28px">Build Higher‑Level Automation&nbsp;</h3>



<ul class="wp-block-list">
<li>Application packaging&nbsp;</li>



<li>Stacks and roles&nbsp;</li>



<li>Continuous image updates&nbsp;</li>
</ul>
</div>



<p></p>
<p>The post <a href="https://dev.xoap.io/docs/standardizing-on-premises-os-images/">Standardizing on premises OS images</a> appeared first on <a href="https://dev.xoap.io">XOAP</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dev.xoap.io/docs/standardizing-on-premises-os-images/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Prerequisites</title>
		<link>https://dev.xoap.io/docs/prerequisites/</link>
					<comments>https://dev.xoap.io/docs/prerequisites/#respond</comments>
		
		<dc:creator><![CDATA[Stella]]></dc:creator>
		<pubDate>Tue, 20 Jan 2026 14:07:47 +0000</pubDate>
				<guid isPermaLink="false">https://dev.xoap.io/?post_type=docs&#038;p=29006</guid>

					<description><![CDATA[<p>Image Management To get started with Image Management, there is only one prerequisite: a working connection to your environment. Configure your connection by navigating to Connections, then clicking the Add new connection button in the upper-right corner. In the slide-out panel, select the connection Type and Provider. Fill in the remaining required information and click [&#8230;]</p>
<p>The post <a href="https://dev.xoap.io/docs/prerequisites/">Prerequisites</a> appeared first on <a href="https://dev.xoap.io">XOAP</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-4 wp-block-group-is-layout-flex">
<h2 class="wp-block-heading" style="font-size:38px">Image Management</h2>



<p>To get started with Image Management, there is only one prerequisite: a working connection to your environment. Configure your connection by navigating to <strong>Connections</strong>, then clicking the <strong>Add new connection</strong> button in the upper-right corner.</p>



<p>In the slide-out panel, select the connection <strong>Type</strong> and <strong>Provider</strong>. Fill in the remaining required information and click <strong>Confirm</strong> to save your connection.</p>



<p>If you need assistance with configuring your access credentials, please refer to the <a href="https://dev.xoap.io/docs/connect-your-infrastructure/" target="_blank" rel="noreferrer noopener">Connect your infrastructure documentation</a>.</p>



<p>In the following sections, you will find more information about the required permissions for your infrastructure. Please note that these are the <strong>minimum permissions</strong> needed to create <strong>Image Definitions</strong>.</p>



<p>If you plan to use the same connection for <strong>Scripted Actions</strong>, the required permissions may vary depending on the specific use case.</p>



<h3 class="wp-block-heading" style="font-size:28px">AWS</h3>



<p>To create a customized image, a <strong>default VPC must be available</strong> in the AWS account you&#8217;re using.</p>



<p>Additionally, you need to assign appropriate <strong>IAM permissions</strong> to the user specified in the connection. At a minimum, the following permissions are required:</p>



<pre class="wp-block-code"><code>#Codeblock

{
  "Version": "2012-10-17",
  "Statement": &#91;
    {
      "Effect": "Allow",
      "Action": &#91;
        "ec2:AttachVolume",
        "ec2:AuthorizeSecurityGroupIngress",
        "ec2:CopyImage",
        "ec2:CreateImage",
        "ec2:CreateKeyPair",
        "ec2:CreateSecurityGroup",
        "ec2:CreateSnapshot",
        "ec2:CreateTags",
        "ec2:CreateVolume",
        "ec2:DeleteKeyPair",
        "ec2:DeleteSecurityGroup",
        "ec2:DeleteSnapshot",
        "ec2:DeleteVolume",
        "ec2:DeregisterImage",
        "ec2:DescribeImageAttribute",
        "ec2:DescribeImages",
        "ec2:DescribeInstances",
        "ec2:DescribeInstanceStatus",
        "ec2:DescribeRegions",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSnapshots",
        "ec2:DescribeSubnets",
        "ec2:DescribeTags",
        "ec2:DescribeVolumes",
        "ec2:DetachVolume",
        "ec2:GetPasswordData",
        "ec2:ModifyImageAttribute",
        "ec2:ModifyInstanceAttribute",
        "ec2:ModifySnapshotAttribute",
        "ec2:RegisterImage",
        "ec2:RunInstances",
        "ec2:StopInstances",
        "ec2:TerminateInstances"
      ],
      "Resource": "*"
    }
  ]
}

#EndOfCodeblock</code></pre>



<p>Read more about the required permissions <a href="https://developer.hashicorp.com/packer/integrations/hashicorp/amazon" target="_blank" rel="noreferrer noopener">here</a>.</p>



<h3 class="wp-block-heading" style="font-size:28px">Azure</h3>



<p>To create images on Azure, ensure the following prerequisite is met: you must create a <strong>Service Principal</strong> with Contributor role access to your Azure subscription. Use the Azure CLI to generate the Service Principal.</p>



<h4 class="wp-block-heading" style="font-size:21px">Command format</h4>



<pre class="wp-block-code"><code>#Codeblock
az ad sp create-for-rbac \
  --name &#91;ServicePrincipalName] \
  --role Contributor \
  --scopes /subscriptions/&#91;SubscriptionId] \
  --years 1
#EndOfCodeblock</code></pre>



<h4 class="wp-block-heading" style="font-size:21px">Command example</h4>



<pre class="wp-block-code"><code>#Codeblock

az ad sp create-for-rbac \
  --name xoap-image-principal \
  --role Contributor \
  --scopes /subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
  --years 1

#EndOfCodeblock</code></pre>



<h4 class="wp-block-heading" style="font-size:21px">Command output</h4>



<pre class="wp-block-code"><code>#Codeblock

{
  "appId": "&#91;ClientId (Guid)]",
  "displayName": "xoap-image-principal",
  "name": "http://xoap-image-principal",
  "password": "&#91;ClientSecret]",
  "tenant": "&#91;TenantId (Guid)]"
}

#EndOfCodeblock</code></pre>



<p>Using this output, you can now configure your connection in XOAP:</p>



<ul class="wp-block-list">
<li><strong>Subscription ID:</strong> xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</li>



<li><strong>Tenant ID: </strong>[TenantId (GUID)]</li>



<li><strong>Client ID: </strong>[appId]</li>



<li><strong>Client Secret: </strong>[password]</li>
</ul>



<p>Read more about the required permissions <a href="https://developer.hashicorp.com/packer/integrations/hashicorp/azure" target="_blank" rel="noreferrer noopener">here</a>.</p>



<h3 class="wp-block-heading" style="font-size:28px">Google</h3>



<p>The file you&#8217;re required to upload is a<strong> Google Cloud Service Account key file</strong> in <strong>JSON</strong> format. You can generate and <strong>download</strong> it like this:</p>



<ol class="wp-block-list">
<li>Open <strong>Google Cloud Console</strong>: <a href="https://console.cloud.google.com/iam-admin/serviceaccounts" target="_blank" rel="noreferrer noopener">https://console.cloud.google.com/iam-admin/serviceaccounts</a>.</li>



<li>Select your <strong>project</strong> from the top-left dropdown.</li>



<li>Create or select a service account: If you don’t have one yet, click <strong>&#8220;Create Service Account&#8221;</strong> under <strong>&#8220;IAM&amp;Admin&#8221;</strong> menu. Give it a name and optional description.</li>



<li>Assign the required roles (see below for full list).</li>



<li>After creating or selecting a service account:
<ul class="wp-block-list">
<li>Click the ⋮ (three dots) next to the service account name<strong> </strong>→ <strong>Manage Keys</strong></li>



<li>Under the <strong>&#8220;Keys&#8221;</strong> section, click Add Key → <strong>Create new key</strong></li>



<li>Choose <strong>JSON</strong>, then click <strong>Create</strong></li>
</ul>
</li>



<li>The file will download automatically – this is the file you need to upload into XOAP to authenticate with Google Cloud.</li>
</ol>



<h4 class="wp-block-heading" style="font-size:21px">Required IAM Roles for Packer to build Images</h4>



<p>To allow the service account to build custom images with Packer, you need to assign at least these roles:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td class="has-text-align-left" data-align="left"><strong>Role Name</strong></td><td class="has-text-align-left" data-align="left"><strong>Role ID</strong></td><td class="has-text-align-left" data-align="left"><strong>Purpose</strong></td></tr><tr><td class="has-text-align-left" data-align="left"><strong>Compute Instance Admin (v1)</strong></td><td class="has-text-align-left" data-align="left">roles/compute.instanceAdmin.v1</td><td class="has-text-align-left" data-align="left">Required to create, configure, and delete instances, disks, and snapshots</td></tr><tr><td class="has-text-align-left" data-align="left"><strong>Service Account User</strong></td><td class="has-text-align-left" data-align="left">roles/iam.serviceAccountUser</td><td class="has-text-align-left" data-align="left">Allows using the service account to launch instances</td></tr><tr><td class="has-text-align-left" data-align="left"><strong>Storage Admin (optional)</strong></td><td class="has-text-align-left" data-align="left">roles/storage.admin</td><td class="has-text-align-left" data-align="left">Required if storing images or artifacts in Cloud Storage</td></tr><tr><td class="has-text-align-left" data-align="left"><strong>IAP Tunnel Resource Accessor (optional)</strong></td><td class="has-text-align-left" data-align="left">roles/iap.tunnelResourceAccessor</td><td class="has-text-align-left" data-align="left">Needed only if using IAP to tunnel SSH</td></tr><tr><td class="has-text-align-left" data-align="left"><strong>Compute Network User (Shared VPC only)</strong></td><td class="has-text-align-left" data-align="left">roles/compute.networkUser</td><td class="has-text-align-left" data-align="left">Required if you&#8217;re using a Shared VPC network</td></tr></tbody></table></figure>



<p>Read more about the required permissions <a href="https://developer.hashicorp.com/packer/integrations/hashicorp/googlecompute" target="_blank" rel="noreferrer noopener">here</a>.</p>



<h3 class="wp-block-heading" style="font-size:28px">vSphere</h3>



<p>To integrate XOAP with <strong>VMware vSphere</strong> for image builds, create a <strong>custom vSphere role</strong> that includes only the privileges required for XOAP to perform its operations. Assign this role to a dedicated service account to ensure XOAP has least-privilege access to the vSphere infrastructure.</p>



<h4 class="wp-block-heading" style="font-size:21px">Required privileges</h4>



<p>Clone the default <strong>Read-Only</strong> vSphere role and add the following privileges:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td class="has-text-align-left" data-align="left"><strong>Category</strong></td><td><strong>Privilege</strong></td><td><strong>Reference</strong></td></tr><tr><td class="has-text-align-left" data-align="left">Content Library</td><td>Add library item</td><td>ContentLibrary.AddLibraryItem</td></tr><tr><td class="has-text-align-left" data-align="left">Content Library</td><td>Update Library Item</td><td>ContentLibrary.UpdateLibraryItem</td></tr><tr><td class="has-text-align-left" data-align="left">Cryptographic Operations</td><td>Direct Access (Required for cache upload.)</td><td>Cryptographer.Access</td></tr><tr><td class="has-text-align-left" data-align="left">Cryptographic Operations</td><td>Encrypt (Required for vTPM.)</td><td>Cryptographer.Encrypt</td></tr><tr><td class="has-text-align-left" data-align="left">Datastore</td><td>Allocate space</td><td>Datastore.AllocateSpace</td></tr><tr><td class="has-text-align-left" data-align="left">Datastore</td><td>Browse datastore</td><td>Datastore.Browse</td></tr><tr><td class="has-text-align-left" data-align="left">Datastore</td><td>Low level file operations</td><td>Datastore.FileManagement</td></tr><tr><td class="has-text-align-left" data-align="left">Host</td><td>Configuration &gt; System Management</td><td>Host.Config.SystemManagement</td></tr><tr><td class="has-text-align-left" data-align="left">Network</td><td>Assign network</td><td>Network.Assign</td></tr><tr><td class="has-text-align-left" data-align="left">Resource</td><td>Assign virtual machine to resource pool</td><td>Resource.AssignVMToPool</td></tr><tr><td class="has-text-align-left" data-align="left">vApp</td><td>Export</td><td>vApp.Export</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Configuration &gt; Add new disk</td><td>VirtualMachine.Config.AddNewDisk</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Configuration &gt; Add or remove device</td><td>VirtualMachine.Config.AddRemoveDevice</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Configuration &gt; Advanced configuration</td><td>VirtualMachine.Config.AdvancedConfig</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Configuration &gt; Change CPU count</td><td>VirtualMachine.Config.CPUCount</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Configuration &gt; Change memory</td><td>VirtualMachine.Config.Memory</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Configuration &gt; Change settings</td><td>VirtualMachine.Config.Settings</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Configuration &gt; Change Resource</td><td>VirtualMachine.Config.Resource</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Configuration &gt; Modify device settings</td><td>VirtualMachine.Config.EditDevice</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Configuration &gt; Set annotation</td><td>VirtualMachine.Config.Annotation</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Edit Inventory &gt; Create from existing</td><td>VirtualMachine.Inventory.CreateFromExisting</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Edit Inventory &gt; Create new</td><td>VirtualMachine.Inventory.Create</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Edit Inventory &gt; Remove</td><td>VirtualMachine.Inventory.Delete</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Interaction &gt; Configure CD media</td><td>VirtualMachine.Interact.SetCDMedia</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Interaction &gt; Configure floppy media</td><td>VirtualMachine.Interact.SetFloppyMedia</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Interaction &gt; Connect devices</td><td>VirtualMachine.Interact.DeviceConnection</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Interaction &gt; Inject USB HID scan codes</td><td>VirtualMachine.Interact.PutUsbScanCodes</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Interaction &gt; Power off</td><td>VirtualMachine.Interact.PowerOff</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Interaction &gt; Power on</td><td>VirtualMachine.Interact.PowerOn</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Provisioning &gt; Create template from virtual machine</td><td>VirtualMachine.Provisioning.CreateTemplateFromVM</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Provisioning &gt; Mark as template</td><td>VirtualMachine.Provisioning.MarkAsTemplate</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>Provisioning &gt; Mark as virtual machine</td><td>VirtualMachine.Provisioning.MarkAsVM</td></tr><tr><td class="has-text-align-left" data-align="left">Virtual Machine</td><td>State &gt; Create snapshot</td><td>VirtualMachine.State.CreateSnapshot</td></tr></tbody></table></figure>



<h2 class="wp-block-heading" style="font-size:38px">Configuration Management</h2>



<h3 class="wp-block-heading" style="font-size:28px">PowerShell</h3>



<p>All nodes that will be used to author or receive configurations are running <strong>WMF version 5.1 or later</strong>. Authoring nodes that are used to write configurations locally need to have internet connectivity to download new DSC-related resources.</p>



<h3 class="wp-block-heading" style="font-size:28px">Remote management</h3>



<p>WS-Management (WS-MAN) traffic is permitted on the network. It will be enabled by default on nodes that have <strong>PowerShell version 5</strong> installed, but you must ensure it’s not being blocked by firewalls or other network elements. Read further for more information.</p>



<h3 class="wp-block-heading" style="font-size:28px">Communication with our backend</h3>



<p>In order to communicate with our backend, the following ports need to be open: <strong>https://api.dev.xoap.io</strong> on port <strong>443</strong>. </p>



<h3 class="wp-block-heading" style="font-size:28px">Proxy configuration for nodes</h3>



<p>To force PowerShell DSC nodes to use a proxy server to communicate with the cloud-hosted backend, some adjustments to the node configuration must be made before registering the node. DSC does not communicate in a user context and therefore uses the SYSTEM context.</p>



<p>For DSC to connect successfully and register the node, adjust the following lines inside the machine.config in your <strong>.NET installation directory</strong>.</p>



<p>You should find the file in these locations:</p>



<pre class="wp-block-code"><code>32-bit
**%windir%\Microsoft.NET\Framework\&#91;version]\config\machine.config**
64-bit
**%windir%\Microsoft.NET\Framework64\&#91;version]\config\machine.config**
&#91;version] should be equal to v1.0.3705, v1.1.4322, v2.0.50727 or v4.0.30319. v3.0 and v3.5 just contain additional assemblies to v2.0.50727 so there should be no config\machine.config. v4.5.x and v4.6.x are stored inside v4.0.30319.
Then add the following lines:
&lt;defaultProxy&gt;  &lt;proxy autoDetect="false" bypassonlocal="false" proxyaddress="http://127.0.0.1:8888" /&gt; &lt;/defaultProxy&gt;&lt;/system.net&gt;
</code></pre>



<h3 class="wp-block-heading" style="font-size:28px">Firewalls</h3>



<p>SSL decryption can get you into trouble when clients inside your corporate network try to communicate with the cloud backend.</p>



<h3 class="wp-block-heading" style="font-size:28px">DEP</h3>



<p>We’ve seen some Virus Scanners with DEP enabled to prevent users from logging into the cloud backend successfully.</p>



<h3 class="wp-block-heading" style="font-size:28px">TLS</h3>



<p>Enable <strong>TLS 1.2 </strong>wherever possible. Not doing so will keep Configurations Management from working successfully.</p>



<p>Set it via PowerShell:</p>



<pre class="wp-block-code"><code>Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWordSet-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWordSet-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v2.0.50727' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord&#91;System.Net.ServicePointManager]::SecurityProtocol = &#91;System.Net.SecurityProtocolType]::Tls12</code></pre>



<h2 class="wp-block-heading" style="font-size:38px">Application Management</h2>



<p>To use Application Management you need to have network access to <strong>api.dev.xoap.io</strong> over port <strong>443</strong> and custom packages must be provided as a <strong>ZIP</strong> archive prior to upload.</p>



<p>Within your XOAP workspace, you can already find a wide selection of:</p>



<ul class="wp-block-list">
<li>Applications</li>



<li>Application Groups</li>



<li>Application Roles</li>
</ul>



<p>This means you&#8217;re ready to begin installing applications immediately.</p>



<h3 class="wp-block-heading" style="font-size:28px">Creating packages</h3>



<p>XOAP’s Application Management supports PSADT packages in both v3 and v4 formats. Our current Package Wizard supports package creation in v3 format. If you plan to create your own application packages, we recommend installing it on your packaging machine. The easiest way to do this is directly from your XOAP Workspace. </p>



<ol class="wp-block-list">
<li>Navigate to Application Management → <strong>Application Roles</strong></li>



<li>Locate the Role: <strong>PSADT Packaging Baseline</strong></li>



<li>Open the three-dot menu next to the role and choose <strong>Copy installation command</strong></li>



<li>On the machine where you want to install the wizard, <strong>open PowerShell as Administrator</strong>. Paste and execute the copied command.</li>
</ol>



<p>Alternatively, you can download the installation script or copy the installation command, copy it manually to the target system, and then run it through PowerShell as Administrator.</p>



<p>Once completed, the Package Wizard will be fully installed and configured. You can find the shortcut on your desktop.</p>



<h2 class="wp-block-heading" style="font-size:38px">Platform Management</h2>



<p>There are no deployed agents required to use Platform Management — the logic runs directly on XOAP’s <strong>cloud runners</strong> or through your <strong>established infrastructure </strong>connections.</p>



<p>Within the Scripted Actions library, you can already find a selection of:</p>



<ul class="wp-block-list">
<li>Template scripts: pre-built scripts for common tasks (like AVD management or Azure automation)</li>



<li>Resources: a library where your custom scripts are stored</li>
</ul>



<p>This means you can start automating immediately using existing templates.</p>



<h3 class="wp-block-heading" style="font-size:28px">Supported formats</h3>



<p>Platform Management supports standard <strong>PowerShell (.ps1)</strong>, <strong>Azure CLI</strong>, <strong>Google CLI </strong>and <strong>AWS CLI </strong>scripts. The only prerequisite for using your own automation is that the script file must be uploaded to the <strong>Resources</strong> area or imported directly during action creation.</p>



<h3 class="wp-block-heading" style="font-size:28px">Establishing connections</h3>



<p>To execute any script, the platform requires <strong>a valid Connection</strong> to your infrastructure. It is recommended setting up your Connections to cloud providers (Azure, AWS, Google) or on-premises systems (VMware, Nutanix) before creating complex workflows.</p>



<p>You can easily set this up from your XOAP workspace:</p>



<ul class="wp-block-list">
<li>Navigate to <strong>Connections</strong> (in the main menu)</li>



<li>Click <strong>+ New connection</strong></li>



<li>Select your <strong>provider</strong> (Azure, AWS, Google, or other) and follow the authentication prompts</li>
</ul>



<p><strong>Note:</strong> The Scripted Action wizard also allows you to add a new connection during the <strong>Target</strong> selection step.</p>
</div>
<p>The post <a href="https://dev.xoap.io/docs/prerequisites/">Prerequisites</a> appeared first on <a href="https://dev.xoap.io">XOAP</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dev.xoap.io/docs/prerequisites/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Create an account</title>
		<link>https://dev.xoap.io/docs/create-an-account/</link>
		
		<dc:creator><![CDATA[Stella]]></dc:creator>
		<pubDate>Fri, 22 Aug 2025 12:11:13 +0000</pubDate>
				<guid isPermaLink="false">https://dev.xoap.io/?post_type=docs&#038;p=25189</guid>

					<description><![CDATA[<p>Welcome to XOAP! This guide will help you set up your account, create your first Workspace and manage your subscription if you need more features. Create a free account Please open the link in the same browser you used to create your account. Subscribe for unlimited features (optional) Want more features or extended capacity? Upgrade [&#8230;]</p>
<p>The post <a href="https://dev.xoap.io/docs/create-an-account/">Create an account</a> appeared first on <a href="https://dev.xoap.io">XOAP</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-5 wp-block-group-is-layout-flex">
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>Welcome to XOAP! This guide will help you set up your account, create your first Workspace and manage your subscription if you need more features.</em></p>
</blockquote>



<h2 class="wp-block-heading" style="font-size:38px"><strong>Create a free account</strong></h2>



<ul class="wp-block-list">
<li>Go to the <a href="https://auth.dev.xoap.io/auth/realms/my.dev.xoap.io/protocol/openid-connect/registrations?client_id=portal&amp;response_type=code&amp;scope=openid%20email&amp;redirect_uri=https://my.dev.xoap.io&amp;kc_locale=en&amp;_ga=2.2244016.1075353051.1730106383-2092130983.1728977514" target="_blank" rel="noreferrer noopener">registration page</a> and fill in your details (no credit card required to start).</li>



<li>Click <strong>Create an account</strong>.</li>



<li>Check your email inbox and verify your email address to activate your free Workspace.</li>
</ul>



<p><em>Please open the link in the same browser you used to create your account.</em></p>



<ul class="wp-block-list">
<li>You&#8217;ll briefly see a loading screen.</li>



<li>Then, click <strong>Go to Workspace</strong> to access your new Workspace. Alternatively, click <strong>Back to Dashboard</strong> to manage other settings.</li>
</ul>



<h2 class="wp-block-heading" style="font-size:38px"><strong>Subscribe for unlimited features (optional)</strong></h2>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Want more features or extended capacity? Upgrade your plan anytime.</p>
</blockquote>



<ul class="wp-block-list">
<li>If you&#8217;re currently in your Workspace, click <strong>Back to my.XOAP.io</strong> in the lower left corner. If not, proceed to the next step.</li>



<li>From the Workspace Overview, click your Workspace name.</li>



<li>Click <strong>Upgrade Plan</strong>.</li>



<li>Select the modules you need and adjust the number of units based on your usage.</li>



<li>Click <strong>Next</strong> to continue.</li>



<li>Enter (or update) your payment method and billing details.</li>



<li>Click <strong>Next</strong> to continue.</li>



<li>Review your plan and confirm by clicking<strong> Upgrade free plan Workspace</strong>.</li>



<li>Your Workspace status will now show as <strong>Active</strong> with upgraded access.</li>
</ul>



<p><em>We offer tailored deals for MSPs, as well as public sector and education organizations. <a href="https://dev.xoap.io/contact/">Contact us here</a> for a custom quote.</em></p>
</div>



<p></p>
<p>The post <a href="https://dev.xoap.io/docs/create-an-account/">Create an account</a> appeared first on <a href="https://dev.xoap.io">XOAP</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Invite team members</title>
		<link>https://dev.xoap.io/docs/invite-team-members/</link>
					<comments>https://dev.xoap.io/docs/invite-team-members/#respond</comments>
		
		<dc:creator><![CDATA[Stella]]></dc:creator>
		<pubDate>Fri, 22 Aug 2025 12:14:29 +0000</pubDate>
				<guid isPermaLink="false">https://dev.xoap.io/?post_type=docs&#038;p=25192</guid>

					<description><![CDATA[<p>Need to work with others? You can easily invite teammates to your Workspace. If you’re running multiple projects or teams, you can also create extra Workspaces. Invite users to your Workspace New users will receive an email to register and join the Workspace. Existing users will get a link to access the Workspace directly. Add [&#8230;]</p>
<p>The post <a href="https://dev.xoap.io/docs/invite-team-members/">Invite team members</a> appeared first on <a href="https://dev.xoap.io">XOAP</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-6 wp-block-group-is-layout-flex">
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Need to work with others? You can easily invite teammates to your Workspace. If you’re running multiple projects or teams, you can also create extra Workspaces.</p>
</blockquote>



<h2 class="wp-block-heading" style="font-size:38px"><strong>Invite users to your Workspace</strong></h2>



<ul class="wp-block-list">
<li>If you&#8217;re currently in your Workspace, click <strong>Back to my.XOAP.io</strong> in the lower left corner. If not, proceed to the next step.</li>



<li>Click on the <strong>name of your Workspace</strong>.</li>



<li>Go to the <strong>Users</strong> tab.</li>



<li>Click <strong>Add user</strong>.</li>



<li>Assign the user to specific modules or to all modules. Optionally, you can grant admin rights.</li>



<li>Click <strong>Send invite</strong>.</li>
</ul>



<p><strong>New users</strong> will receive an email to register and join the Workspace.</p>



<p><strong>Existing users</strong> will get a link to access the Workspace directly.</p>



<h2 class="wp-block-heading" style="font-size:38px"><strong>Add an additional Workspace</strong></h2>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Need a separate space for another project or team? You can create extra Workspaces – just note this is a paid feature.</p>
</blockquote>



<ul class="wp-block-list">
<li>If you&#8217;re currently in your Workspace, click <strong>Back to my.XOAP.io</strong> in the lower left corner. If not, proceed to the next step.</li>



<li>On the Workspaces page, click <strong>Add Workspace</strong>.</li>



<li>Give your new Workspace a name.</li>



<li>Select the modules you want to include, then click <strong>Next</strong>.</li>



<li>Enter your payment and billing information, then click <strong>Next</strong>.</li>



<li>Review your setup and click <strong>Confirm</strong>.</li>



<li>Once created, you can access your new Workspace using its Workspace URL.</li>
</ul>
</div>



<p></p>
<p>The post <a href="https://dev.xoap.io/docs/invite-team-members/">Invite team members</a> appeared first on <a href="https://dev.xoap.io">XOAP</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dev.xoap.io/docs/invite-team-members/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Connect your infrastructure</title>
		<link>https://dev.xoap.io/docs/connect-your-infrastructure/</link>
					<comments>https://dev.xoap.io/docs/connect-your-infrastructure/#respond</comments>
		
		<dc:creator><![CDATA[Stella]]></dc:creator>
		<pubDate>Fri, 22 Aug 2025 12:17:48 +0000</pubDate>
				<guid isPermaLink="false">https://dev.xoap.io/?post_type=docs&#038;p=25203</guid>

					<description><![CDATA[<p>Connecting your cloud infrastructure is the first step to building automations in XOAP. This guide covers how to add a new connection to AWS, Azure or Google Cloud. If you want to use XOAP only to deliver configurations or install applications on your systems, this step is not mandatory. You can manage your on-prem or [&#8230;]</p>
<p>The post <a href="https://dev.xoap.io/docs/connect-your-infrastructure/">Connect your infrastructure</a> appeared first on <a href="https://dev.xoap.io">XOAP</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-7 wp-block-group-is-layout-flex" style="min-height:20px">
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Connecting your cloud infrastructure is the first step to building automations in XOAP. This guide covers how to add a new connection to AWS, Azure or Google Cloud.</p>



<p>If you want to <strong>use XOAP only to deliver configurations or install applications on your systems, this step is not mandatory</strong>. You can manage your on-prem or cloud systems even without connecting XOAP to your cloud infrastructure.</p>
</blockquote>



<h2 class="wp-block-heading" style="font-size:38px"><strong>How to add a Connection</strong></h2>



<ul class="wp-block-list">
<li>Go to the <strong>Connections</strong>.</li>



<li>Click the <strong>+ New Connection</strong> button in the top-right corner.</li>



<li>You can select from the following available connection types: AWS, Azure, Google Cloud (more details below).</li>



<li>Select your chosen provider and configure other necessary settings accordingly.</li>



<li>When you&#8217;re done, click <strong>Confirm</strong>.</li>
</ul>



<h3 class="wp-block-heading" style="font-size:38px"><strong>Supported cloud providers</strong></h3>



<h4 class="wp-block-heading" style="font-size:28px"><strong>AWS</strong></h4>



<p>You can choose from three connection types:</p>



<ul class="wp-block-list">
<li>AWS – Access Key</li>



<li>AWS – Assume Role</li>



<li>AWS – Assume Role (Cross-Account)</li>
</ul>



<p>All AWS connection details are securely stored in a vault tied to your Workspace.</p>



<p><strong>Learn more about setting up AWS – Access Key permissions:</strong></p>



<ul class="wp-block-list">
<li><a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html">Managing access keys for IAM users</a></li>



<li><a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html">Introduction to AWS IAM</a></li>



<li><a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html">IAM tutorial: Delegate access across AWS accounts using IAM roles</a></li>



<li><a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html">IAM identifiers and ARN format</a></li>
</ul>



<p><strong>Learn more about AWS – Assume Role permissions:</strong></p>



<ul class="wp-block-list">
<li><a href="https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html">STS API Reference: AssumeRole</a></li>
</ul>



<p><strong>Learn more about AWS – Assume Role (Cross-Account) with External ID:</strong></p>



<ul class="wp-block-list">
<li><a href="https://aws.amazon.com/blogs/security/how-to-use-external-id-when-granting-access-to-your-aws-resources/">How to use External ID when granting access to your AWS resources (AWS Security Blog)</a></li>



<li><a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html">IAM Trust Policies: Using conditions with sts: ExternalId</a></li>
</ul>



<h2 class="wp-block-heading" style="font-size:28px"><strong>Microsoft Azure</strong></h2>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>XOAP supports connecting to Azure using Service Principals, providing secure access to your Azure subscriptions. To set this up, the following information is required:&nbsp;</p>
</blockquote>



<ul class="wp-block-list">
<li><strong>Name</strong>: a custom name for the connection as it will appear in your application (e.g., XOAP-Azure-Prod).</li>



<li><strong>Client ID</strong>: the Application (client) ID of your Azure AD application (also known as a Service Principal).</li>



<li><strong>Client Secret</strong>: the client secret you create under the “Certificates &amp; secrets” section in the App Registration. Note that the value is shown only once at the time of creation.</li>



<li><strong>Subscription ID</strong>: a unique GUID representing the Azure subscription where your resources are located.</li>



<li><strong>Tenant ID</strong>: the Directory (tenant) ID of your Azure Active Directory instance.</li>
</ul>



<p>As with AWS, all Azure credentials are stored securely in your Workspace vault.</p>



<p>For <strong>detailed guidance on configuring your XOAP connection and retrieving the necessary information</strong>, please refer to the following resources:</p>



<ul class="wp-block-list">
<li><a href="https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app">Register an application in Microsoft Entra ID</a></li>



<li><a href="https://learn.microsoft.com/en-us/entra/identity-platform/howto-create-service-principal-portal">Register a Microsoft Entra app &amp; create a client secret</a></li>



<li><a href="https://learn.microsoft.com/en-us/azure/azure-portal/get-subscription-tenant-id">Subscription &amp; Tenant ID</a></li>
</ul>



<h2 class="wp-block-heading" style="font-size:28px"><strong>Google Cloud</strong></h2>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>To connect XOAP to Google Cloud, you need a Service Account with sufficient permissions and a downloaded JSON key file.</p>
</blockquote>



<ul class="wp-block-list">
<li><strong>Name</strong>: a custom name for identifying the connection (e.g., XOAP-GCP-Prod).</li>



<li><strong>Project ID</strong>: the unique identifier of your Google Cloud project.</li>



<li><strong>File</strong>: the Service Account JSON key file that contains authentication credentials.</li>
</ul>



<p>Make sure the service account has the required roles (e.g., Viewer, Editor, or a custom role depending on your needs).</p>



<p>As with AWS and Azure, all Google credentials are stored securely in your Workspace vault.</p>



<p>For <strong>more information on configuring your XOAP connection and retrieving the required details</strong>, please refer to the following links:</p>



<ul class="wp-block-list">
<li><a href="https://support.google.com/googleapi/answer/7014113?hl=en">Find your Project ID</a></li>



<li><a href="https://cloud.google.com/iam/docs/keys-create-delete">How to generate the Service Account JSON key file</a></li>
</ul>
</div>
<p>The post <a href="https://dev.xoap.io/docs/connect-your-infrastructure/">Connect your infrastructure</a> appeared first on <a href="https://dev.xoap.io">XOAP</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dev.xoap.io/docs/connect-your-infrastructure/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Connect your managed system</title>
		<link>https://dev.xoap.io/docs/connect-your-managed-system/</link>
					<comments>https://dev.xoap.io/docs/connect-your-managed-system/#respond</comments>
		
		<dc:creator><![CDATA[Stella]]></dc:creator>
		<pubDate>Fri, 22 Aug 2025 12:17:59 +0000</pubDate>
				<guid isPermaLink="false">https://dev.xoap.io/?post_type=docs&#038;p=25208</guid>

					<description><![CDATA[<p>Quickly learn how to connect your managed system to XOAP. It only takes a few clicks. Locate the XOAP unassigned configuration group and from the action menu select Copy registration command or Download registration script. Note: Both do the same and can be integrated into any existing delivery process (GPO, deployment solution, image build and [&#8230;]</p>
<p>The post <a href="https://dev.xoap.io/docs/connect-your-managed-system/">Connect your managed system</a> appeared first on <a href="https://dev.xoap.io">XOAP</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-8 wp-block-group-is-layout-flex" style="min-height:20px">
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Quickly learn how to connect your managed system to XOAP. It only takes a few clicks.</p>
</blockquote>



<p>Locate the<strong> XOAP unassigned</strong> configuration group and from the action menu select <strong>Copy registration command</strong> or <strong>Download registration script</strong>.</p>



<p><strong>Note:</strong> Both do the same and can be integrated into any existing delivery process (GPO, deployment solution, image build and more).</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="568" src="https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-1-1024x568.png" alt="XOAP unassigned configuration group" class="wp-image-25215" srcset="https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-1-1024x568.png 1024w, https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-1-300x166.png 300w, https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-1-768x426.png 768w, https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-1-1536x852.png 1536w, https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-1-18x10.png 18w, https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-1.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>To connect the system manually and test the connection, go to your target system, open PowerShell as Administrator, paste the command and run it.</p>



<p>Once completed, your machine will appear under the <strong>Nodes</strong> section. Click on <strong>Details</strong> to view system information.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="568" src="https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-2-1024x568.png" alt="Note details for XOAP unassigned" class="wp-image-25217" srcset="https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-2-1024x568.png 1024w, https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-2-300x166.png 300w, https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-2-768x426.png 768w, https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-2-1536x852.png 1536w, https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-2-18x10.png 18w, https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-2.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="568" src="https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-3-1024x568.png" alt="System info" class="wp-image-25218" srcset="https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-3-1024x568.png 1024w, https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-3-300x166.png 300w, https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-3-768x426.png 768w, https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-3-1536x852.png 1536w, https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-3-18x10.png 18w, https://dev.xoap.io/wp-content/uploads/2025/08/connect-managed-system-3.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>Note:</strong> This action (XOAP_unassigned) does not change anything in your system, it only connects it to XOAP. </p>
</div>
<p>The post <a href="https://dev.xoap.io/docs/connect-your-managed-system/">Connect your managed system</a> appeared first on <a href="https://dev.xoap.io">XOAP</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dev.xoap.io/docs/connect-your-managed-system/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
