Files
komodo/docs/sync-resources.html
T
2024-08-16 18:39:30 -04:00

59 lines
44 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sync-resources" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.4.0">
<title data-rh="true">Sync Resources | Monitor</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://docs.monitor.dev/img/monitor-lizard.png"><meta data-rh="true" name="twitter:image" content="https://docs.monitor.dev/img/monitor-lizard.png"><meta data-rh="true" property="og:url" content="https://docs.monitor.dev/docs/sync-resources"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Sync Resources | Monitor"><meta data-rh="true" name="description" content="Monitor is able to create, update, delete, and deploy resources declared in TOML files by diffing them against the existing resources,"><meta data-rh="true" property="og:description" content="Monitor is able to create, update, delete, and deploy resources declared in TOML files by diffing them against the existing resources,"><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://docs.monitor.dev/docs/sync-resources"><link data-rh="true" rel="alternate" href="https://docs.monitor.dev/docs/sync-resources" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.monitor.dev/docs/sync-resources" hreflang="x-default"><link rel="stylesheet" href="/assets/css/styles.e113b30e.css">
<script src="/assets/js/runtime~main.d09bb5a2.js" defer="defer"></script>
<script src="/assets/js/main.e85d907d.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo512.png" alt="monitor lizard" class="themedComponent_mlkZ themedComponent--light_NVdE" width="34px"><img src="/img/logo512.png" alt="monitor lizard" class="themedComponent_mlkZ themedComponent--dark_xIcU" width="34px"></div><b class="navbar__title text--truncate">Monitor</b></a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/intro">docs</a></div><div class="navbar__items navbar__items--right"><a href="https://docs.rs/monitor_client/latest/monitor_client/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">docs.rs<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://github.com/mbecker20/monitor" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">github<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/intro">What is Monitor?</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/resources">Resources</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/core-setup">Monitor Core Setup</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/connecting-servers">Connecting Servers</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/build-images">Build Images</a><button aria-label="Expand sidebar category &#x27;Build Images&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/deploy-containers">Deploy Containers</a><button aria-label="Expand sidebar category &#x27;Deploy Containers&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" href="/docs/sync-resources">Sync Resources</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/webhooks">Configuring Webhooks</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/permissioning">Permissioning Resources</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/version-upgrades">Version Upgrades</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/api">API</a></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Sync Resources</span><meta itemprop="position" content="1"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><h1>Sync Resources</h1>
<p>Monitor is able to create, update, delete, and deploy resources declared in TOML files by diffing them against the existing resources,
and apply updates based on the diffs. Push the files to a remote git repo and create a <code>ResourceSync</code> pointing to the repo,
and the core backend will poll for any updates (you can also manually trigger an update poll / execution in the UI).</p>
<p>File detection is additive and recursive, so you can spread out your resource declarations across any number of files
and use any nesting of folders to organize resources inside a root folder. Additionally, you can create multiple <code>ResourceSyncs</code>
and each sync will be handled independently. This allows different syncs to manage resources on a &quot;per-project&quot; basis.</p>
<p>The UI will display the computed sync actions and only execute them upon manual confirmation.
Or the sync execution git webhook may be configured on the git repo to
automatically execute syncs upon pushes to the configured branch.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="example-declarations">Example Declarations<a class="hash-link" aria-label="Direct link to Example Declarations" title="Direct link to Example Declarations" href="/docs/sync-resources#example-declarations"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="server">Server<a class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" href="/docs/sync-resources#server"></a></h3>
<ul>
<li><a href="https://docs.rs/monitor_client/latest/monitor_client/entities/server/struct.ServerConfig.html" target="_blank" rel="noopener noreferrer">Server config schema</a></li>
</ul>
<div class="language-toml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-toml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">[[server]] # Declare a new server</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">name = &quot;server-01&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">description = &quot;the main mogh server&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tags = [&quot;monitor&quot;]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.address = &quot;http://localhost:8120&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.region = &quot;AshburnDc1&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.enabled = true # default: false</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="builder-and-build">Builder and build<a class="hash-link" aria-label="Direct link to Builder and build" title="Direct link to Builder and build" href="/docs/sync-resources#builder-and-build"></a></h3>
<ul>
<li><a href="https://docs.rs/monitor_client/latest/monitor_client/entities/builder/struct.BuilderConfig.html" target="_blank" rel="noopener noreferrer">Builder config schema</a></li>
<li><a href="https://docs.rs/monitor_client/latest/monitor_client/entities/build/struct.BuildConfig.html" target="_blank" rel="noopener noreferrer">Build config schema</a></li>
</ul>
<div class="language-toml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-toml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">[[builder]] # Declare a builder</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">name = &quot;builder-01&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tags = []</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.type = &quot;Aws&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.params.region = &quot;us-east-2&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.params.ami_id = &quot;ami-0e9bd154667944680&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># These things come from your specific setup</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.params.subnet_id = &quot;subnet-xxxxxxxxxxxxxxxxxx&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.params.key_pair_name = &quot;xxxxxxxx&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.params.assign_public_ip = true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.params.use_public_ip = true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.params.security_group_ids = [</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> &quot;sg-xxxxxxxxxxxxxxxxxx&quot;,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> &quot;sg-xxxxxxxxxxxxxxxxxx&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">##</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[[build]]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">name = &quot;test_logger&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">description = &quot;Logs randomly at INFO, WARN, ERROR levels to test logging setups&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tags = [&quot;test&quot;]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.builder_id = &quot;builder-01&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.repo = &quot;mbecker20/test_logger&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.branch = &quot;master&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.git_account = &quot;mbecker20&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.image_registry.type = &quot;Standard&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.image_registry.params.domain = &quot;github.com&quot; # or your custom domain</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.image_registry.params.account = &quot;your_username&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.image_registry.params.organization = &quot;your_organization&quot; # optinoal</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Set docker labels</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.labels = &quot;&quot;&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">org.opencontainers.image.source = https://github.com/mbecker20/test_logger</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">org.opencontainers.image.description = Logs randomly at INFO, WARN, ERROR levels to test logging setups</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">org.opencontainers.image.licenses = GPL-3.0&quot;&quot;&quot;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="deployments">Deployments<a class="hash-link" aria-label="Direct link to Deployments" title="Direct link to Deployments" href="/docs/sync-resources#deployments"></a></h3>
<ul>
<li><a href="https://docs.rs/monitor_client/latest/monitor_client/entities/deployment/struct.DeploymentConfig.html" target="_blank" rel="noopener noreferrer">Deployment config schema</a></li>
</ul>
<div class="language-toml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-toml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">[[variable]] # Declare variables</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">name = &quot;OTLP_ENDPOINT&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">value = &quot;http://localhost:4317&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">##</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[[deployment]] # Declare a deployment</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">name = &quot;test-logger-01&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">description = &quot;test logger deployment 1&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tags = [&quot;test&quot;]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># sync will deploy the container: </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># - if it is not running.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># - has relevant config updates.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># - the attached build has new version.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">deploy = true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.server_id = &quot;server-01&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.image.type = &quot;Build&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.image.params.build = &quot;test_logger&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># set the volumes / bind mounts</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.volumes = &quot;&quot;&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">/data/logs = /etc/logs</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">/data/config = /etc/config&quot;&quot;&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Set the environment variables</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.environment = &quot;&quot;&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">OTLP_ENDPOINT = [[OTLP_ENDPOINT]] # interpolate variables into the envs. (they also support comments using &#x27;#&#x27;)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">VARIABLE_1 = value_1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">VARIABLE_2 = value_2&quot;&quot;&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Set Docker labels</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.labels = &quot;deployment.type = logger&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">##</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[[deployment]]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">name = &quot;test-logger-02&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">description = &quot;test logger deployment 2&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tags = [&quot;test&quot;]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">deploy = true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Create a dependency on test-logger-01. This deployment will only be deployed after test-logger-01 is deployed.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Additionally, any sync deploy of test-logger-01 will also trigger sync deploy of this deployment.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">after = [&quot;test-logger-01&quot;]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.server_id = &quot;server-01&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.image.type = &quot;Build&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.image.params.build = &quot;test_logger&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.volumes = &quot;&quot;&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">/data/logs = /etc/logs</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">/data/config = /etc/config&quot;&quot;&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.environment = &quot;&quot;&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">VARIABLE_1 = value_1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">VARIABLE_2 = value_2&quot;&quot;&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Set Docker labels</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.labels = &quot;deployment.type = logger&quot;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="stack">Stack<a class="hash-link" aria-label="Direct link to Stack" title="Direct link to Stack" href="/docs/sync-resources#stack"></a></h3>
<ul>
<li><a href="https://docs.rs/monitor_client/latest/monitor_client/entities/stack/struct.StackConfig.html" target="_blank" rel="noopener noreferrer">Stack config schema</a></li>
</ul>
<div class="language-toml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-toml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">[[stack]]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">name = &quot;test-stack&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">description = &quot;stack test&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">deploy = true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">after = [&quot;test-logger-01&quot;] # Stacks can depend on deployments, and vice versa.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tags = [&quot;test&quot;]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.server_id = &quot;monitor-01&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.file_paths = [&quot;mongo.yaml&quot;, &quot;redis.yaml&quot;]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.git_provider = &quot;git.mogh.tech&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.git_account = &quot;mbecker20&quot; # clone private repo by specifying account</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.repo = &quot;mbecker20/stack_test&quot;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="procedure">Procedure<a class="hash-link" aria-label="Direct link to Procedure" title="Direct link to Procedure" href="/docs/sync-resources#procedure"></a></h3>
<ul>
<li><a href="https://docs.rs/monitor_client/latest/monitor_client/entities/procedure/struct.ProcedureConfig.html" target="_blank" rel="noopener noreferrer">Procedure config schema</a></li>
</ul>
<div class="language-toml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-toml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">[[procedure]]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">name = &quot;test-procedure&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">description = &quot;Do some things in a specific order&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tags = [&quot;test&quot;]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Each stage will be executed one after the other (in sequence)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[[procedure.config.stage]]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">name = &quot;Build stuff&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">enabled = true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># The executions within a stage will be run in parallel. The stage completes when all executions finish.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">executions = [</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> { execution.type = &quot;RunBuild&quot;, execution.params.build = &quot;test_logger&quot;, enabled = true },</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> { execution.type = &quot;PullRepo&quot;, execution.params.repo = &quot;monitor-periphery&quot;, enabled = true },</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[[procedure.config.stage]]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">name = &quot;Deploy test logger 1&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">enabled = true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">executions = [</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> { execution.type = &quot;Deploy&quot;, execution.params.deployment = &quot;test-logger-01&quot;, enabled = true }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[[procedure.config.stage]]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">name = &quot;Deploy test logger 2&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">enabled = true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">executions = [</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> { execution.type = &quot;Deploy&quot;, execution.params.deployment = &quot;test-logger-02&quot;, enabled = true }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">]</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="repo">Repo<a class="hash-link" aria-label="Direct link to Repo" title="Direct link to Repo" href="/docs/sync-resources#repo"></a></h3>
<ul>
<li><a href="https://docs.rs/monitor_client/latest/monitor_client/entities/repo/struct.RepoConfig.html" target="_blank" rel="noopener noreferrer">Repo config schema</a></li>
</ul>
<div class="language-toml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-toml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">[[repo]]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">name = &quot;monitor-periphery&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">description = &quot;Builds new versions of the periphery binary. Requires Rust installed on the host.&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tags = [&quot;monitor&quot;]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.server_id = &quot;server-01&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.git_provider = &quot;git.mogh.tech&quot; # use an alternate git provider (default is github.com)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.git_account = &quot;mbecker20&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.repo = &quot;mbecker20/monitor&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Run an action after the repo is pulled</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.on_pull.path = &quot;.&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config.on_pull.command = &quot;/root/.cargo/bin/cargo build -p monitor_periphery --release &amp;&amp; cp ./target/release/periphery /root/periphery&quot;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="user-group">User Group:<a class="hash-link" aria-label="Direct link to User Group:" title="Direct link to User Group:" href="/docs/sync-resources#user-group"></a></h3>
<ul>
<li><a href="https://docs.rs/monitor_client/latest/monitor_client/entities/toml/struct.UserGroupToml.html" target="_blank" rel="noopener noreferrer">UserGroup schema</a></li>
</ul>
<div class="language-toml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-toml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">[[user_group]]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">name = &quot;groupo&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">users = [&quot;mbecker20&quot;, &quot;karamvirsingh98&quot;]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Attach base level of Execute on all builds</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">all.Build = &quot;Execute&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">all.Alerter = &quot;Write&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">permissions = [</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> # Attach permissions to specific resources by name</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> { target.type = &quot;Repo&quot;, target.id = &quot;monitor-periphery&quot;, level = &quot;Execute&quot; },</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> # Attach permissions to many resources with name matching regex (this uses &#x27;^(.+)-(.+)$&#x27; as regex expression)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> { target.type = &quot;Server&quot;, target.id = &quot;\\^(.+)-(.+)$\\&quot;, level = &quot;Read&quot; },</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> { target.type = &quot;Deployment&quot;, target.id = &quot;\\^immich\\&quot;, level = &quot;Execute&quot; },</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">]</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/sync-resources.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/deploy-containers/lifetime-management"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Container Management</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/webhooks"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Configuring Webhooks</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a class="table-of-contents__link toc-highlight" href="/docs/sync-resources#example-declarations">Example Declarations</a><ul><li><a class="table-of-contents__link toc-highlight" href="/docs/sync-resources#server">Server</a></li><li><a class="table-of-contents__link toc-highlight" href="/docs/sync-resources#builder-and-build">Builder and build</a></li><li><a class="table-of-contents__link toc-highlight" href="/docs/sync-resources#deployments">Deployments</a></li><li><a class="table-of-contents__link toc-highlight" href="/docs/sync-resources#stack">Stack</a></li><li><a class="table-of-contents__link toc-highlight" href="/docs/sync-resources#procedure">Procedure</a></li><li><a class="table-of-contents__link toc-highlight" href="/docs/sync-resources#repo">Repo</a></li><li><a class="table-of-contents__link toc-highlight" href="/docs/sync-resources#user-group">User Group:</a></li></ul></li></ul></div></div></div></div></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="footer__copyright">Built with Docusaurus</div></div></div></footer></div>
</body>
</html>