> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xloud.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Advanced Configuration

> Per-service config file editor with syntax validation and Git version control

## Overview

When the [Configuration](/deployment/configuration) forms do not expose a specific setting, Advanced Configuration provides a full code editor for individual service configuration files. It supports YAML, INI, and Jinja2 templates with syntax validation and auto-formatting. Integrated Git version control tracks every change.

<Note>
  **Prerequisites**

  * [Configuration](/deployment/configuration) completed with base settings saved
  * Services selected for deployment
  * Understanding of the specific service configuration options being modified
</Note>

***

## Editor Layout

Log in to **XDeploy** (`https://xdeploy.<your-domain>`) on the deployment node using administrative access.

Navigate to **Advanced Configuration** in the left sidebar. The editor interface is organized into three panels.

<CardGroup cols={3}>
  <Card title="Service Tree" icon="folder" color="#197560">
    Searchable tree of all services organized by category: compute, network, storage, identity, and orchestration. Click a service to browse its configuration files.
  </Card>

  <Card title="Code Editor" icon="terminal" color="#197560">
    Full text editor for YAML, INI, and Jinja2 files. Includes syntax validation, auto-formatting, file preview, multi-tab support, and a cursor position status bar.
  </Card>

  <Card title="File Browser" icon="file-text" color="#197560">
    Lists configuration files for the selected service. Toolbar actions include New File, Upload, Download, and Delete.
  </Card>
</CardGroup>

***

## Editing Configuration Files

<Steps titleSize="h3">
  <Step title="Select a service" icon="search">
    Use the Service Tree on the left to browse or search for the service you want to configure. Services are organized by category:

    | Category          | Services                                                    |
    | ----------------- | ----------------------------------------------------------- |
    | **Compute**       | Xloud Compute (nova), Libvirt, Scheduler                    |
    | **Network**       | Xloud Networking (neutron), L3 Agent, DHCP Agent, OVS Agent |
    | **Storage**       | Xloud Block Storage (cinder), Backup                        |
    | **Identity**      | Xloud Identity (keystone)                                   |
    | **Orchestration** | Xloud Orchestration (heat)                                  |
    | **Dashboard**     | Xloud Dashboard                                             |
    | **Monitoring**    | Prometheus, Grafana                                         |

    Click a service name to load its configuration files in the File Browser panel.
  </Step>

  <Step title="Open a configuration file" icon="file-text">
    Select a file from the File Browser to open it in the Code Editor. The editor provides:

    * **Syntax highlighting** for YAML, INI, and Jinja2 formats
    * **Validation** that flags syntax errors before saving
    * **Auto-formatting** to normalize indentation and spacing
    * **Multi-tab editing** to work on multiple files simultaneously
  </Step>

  <Step title="Modify and save" icon="save">
    Make your changes in the editor. The validation engine checks for syntax errors in real time. Click **Save** to persist the changes to the configuration directory.

    <Check>The file is saved to the configuration override directory and will be applied during the next deployment or reconfiguration.</Check>
  </Step>
</Steps>

<Tip>
  Use the **Preview** button to view the final rendered configuration before saving. This is especially useful for Jinja2 templates where the rendered output may differ from the source template.
</Tip>

***

## Git Integration

Advanced Configuration includes built-in version control for tracking configuration changes. Every modification is trackable, reversible, and auditable.

<Steps titleSize="h3">
  <Step title="Initialize the repository" icon="folder">
    Click **Initialize Git** to create a version control repository in the configuration directory. This is a one-time operation.
  </Step>

  <Step title="Track changes" icon="eye">
    After initialization, the editor tracks all file modifications. Use **View Diff** to see pending changes before committing them.
  </Step>

  <Step title="Commit changes" icon="save">
    Commit your changes with a descriptive message. The commit history provides a complete audit trail of who changed what and when.
  </Step>

  <Step title="Branch for experiments" icon="copy">
    Create a branch before making experimental changes (e.g., `test-nova-tuning`). If something breaks during testing, switch back to the main branch to restore the working configuration instantly.
  </Step>
</Steps>

Additional Git operations available in the toolbar:

| Operation          | Description                                          |
| ------------------ | ---------------------------------------------------- |
| **Pull**           | Fetch and merge changes from a remote repository     |
| **Push**           | Push local commits to a remote repository            |
| **Branch**         | Create, switch, or delete branches                   |
| **Resolve Issues** | Handle merge conflicts when branch histories diverge |

<Tip>
  Create a branch before making experimental changes. If something breaks, switch back to the main branch to restore working configuration immediately.
</Tip>

***

## How Config Overrides Work

The deployment automation supports per-service configuration overrides. Dropping a configuration file into the service-specific override directory merges your custom settings into the deployed configuration on the next **Reconfigure** operation.

<Tree>
  <Tree.Folder name="etc" defaultOpen>
    <Tree.Folder name="xavs" defaultOpen>
      <Tree.Folder name="config" defaultOpen>
        <Tree.Folder name="nova" defaultOpen>
          <Tree.File name="nova.conf" />
        </Tree.Folder>

        <Tree.Folder name="neutron" defaultOpen>
          <Tree.File name="neutron.conf" />

          <Tree.File name="ml2_conf.ini" />
        </Tree.Folder>

        <Tree.Folder name="horizon">
          <Tree.File name="local_settings.py" />
        </Tree.Folder>

        <Tree.Folder name="cinder">
          <Tree.File name="cinder.conf" />
        </Tree.Folder>
      </Tree.Folder>
    </Tree.Folder>
  </Tree.Folder>
</Tree>

<Info>
  Override files do not replace the entire service configuration. They are **merged** with the base configuration generated by the deployment automation. Only the specific keys you define in your override file are changed --- all other settings retain their default values.
</Info>

<Warning>
  After modifying configuration overrides, you must run a **Reconfigure** operation from the [Operations](/deployment/operations) tool for changes to take effect. Editing files here does not automatically apply changes to running services.
</Warning>

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Operations" icon="play" href="/deployment/operations" color="#197560">
    Deploy or reconfigure services to apply your configuration changes
  </Card>

  <Card title="Configuration" icon="settings" href="/deployment/configuration" color="#197560">
    Return to the guided configuration forms for common deployment settings
  </Card>
</CardGroup>
