[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"doc-seo-154208-105":3,"detail-sidebar-cat-0-en-105":81,"doc-detail-154208-en":130},{"code":4,"msg":5,"data":6},0,"ok",{"site_id":7,"language":8,"slug":9,"title":10,"keywords":11,"description":12,"schema_data":13,"social_meta":74,"head_meta":76,"extra_data":78,"updated_unix":80},105,"en","charon-declarative-provisioning-and-deployment","Charon - Declarative Provisioning and Deployment","","Charon is introduced as a tool that automates provisioning and deployment of networks of machines from declarative specifications. Building on NixOS’s purely functional configuration management, Charon specifications fully describe the desired configuration of “logical” machines, including required software packages, services, and physical characteristics. From these specifications, it provisions cloud resources such as Amazon EC2 instances, builds and deploys packages, activates services, and supports reliable upgrades and reproduction of configurations.",{"@graph":14,"@context":73},[15,34,56],{"@type":16,"itemListElement":17},"BreadcrumbList",[18,23,27,31],{"item":19,"name":20,"@type":21,"position":22},"https://docshare.wps.com","Home","ListItem",1,{"item":24,"name":25,"@type":21,"position":26},"https://docshare.wps.com/document/","Document",2,{"item":28,"name":29,"@type":21,"position":30},"https://docshare.wps.com/document/technology/","Technology",3,{"item":32,"name":10,"@type":21,"position":33},"https://docshare.wps.com/document/charon-declarative-provisioning-and-deployment/154208/",4,{"url":32,"name":10,"@type":35,"image":36,"author":41,"headline":10,"publisher":44,"fileFormat":47,"inLanguage":8,"description":12,"dateModified":48,"datePublished":49,"encodingFormat":47,"isAccessibleForFree":50,"interactionStatistic":51},"DigitalDocument",{"url":37,"@type":38,"width":39,"height":40},"https://docshare.wps.com/thumbnails/charon-declarative-provisioning-and-deployment/154208.png","ImageObject",300,407,{"name":42,"@type":43},"Asher","Person",{"url":19,"name":45,"@type":46},"DocShare","Organization","application/pdf","2026-10-09","2026-08-28",true,{"@type":52,"interactionType":53,"userInteractionCount":55},"InteractionCounter",{"@type":54},"ViewAction",9,{"@type":57,"mainEntity":58},"FAQPage",[59,65,69],{"name":60,"@type":61,"acceptedAnswer":62},"What problem does Charon address in cloud deployments?","Question",{"text":63,"@type":64},"Charon automates both provisioning of cloud resources and deployment of software to match a desired system configuration, removing the need for manual, error-prone steps.","Answer",{"name":66,"@type":61,"acceptedAnswer":67},"How does the declarative model benefit upgrades and reproduction?",{"text":68,"@type":64},"Since specifications fully determine the resulting configuration (except mutable state like database contents), a fresh deployment and an upgrade yield the same machine setup, enabling reliable upgrade and reproduction.",{"name":70,"@type":61,"acceptedAnswer":71},"What role do NixOS and Nix play in Charon?",{"text":72,"@type":64},"Charon builds on NixOS, which relies on Nix’s purely functional package management, enabling coexistence of versions, atomic upgrades, rollback capability, and complete dependency specifications.","https://schema.org",{"og:url":32,"og:type":75,"og:title":10,"og:site_name":45,"og:description":12},"article",{"robots":77,"canonical":32},"index,follow",{"doc_id":79,"site_id":7},154208,1787889561,{"code":4,"msg":82,"data":83},"success",[84,88,92,96,101,105,110,115,119,122,126],{"id":22,"doc_module":4,"doc_module_name":25,"category_name":85,"show_sort_weight":86,"slug":87},"Story & Novel",90,"story-novel",{"id":26,"doc_module":4,"doc_module_name":25,"category_name":89,"show_sort_weight":90,"slug":91},"Literature",80,"literature",{"id":33,"doc_module":4,"doc_module_name":25,"category_name":93,"show_sort_weight":94,"slug":95},"Exam",70,"exam",{"id":97,"doc_module":4,"doc_module_name":25,"category_name":98,"show_sort_weight":99,"slug":100},5,"Comic",60,"comic",{"id":102,"doc_module":4,"doc_module_name":25,"category_name":29,"show_sort_weight":103,"slug":104},6,50,"technology",{"id":106,"doc_module":4,"doc_module_name":25,"category_name":107,"show_sort_weight":108,"slug":109},7,"Healthcare",40,"healthcare",{"id":111,"doc_module":4,"doc_module_name":25,"category_name":112,"show_sort_weight":113,"slug":114},8,"Research & Report",30,"research-report",{"id":55,"doc_module":4,"doc_module_name":25,"category_name":116,"show_sort_weight":117,"slug":118},"Religion & Spirituality",20,"religion-spirituality",{"id":117,"doc_module":4,"doc_module_name":25,"category_name":120,"show_sort_weight":117,"slug":121},"World Cup","world-cup",{"id":123,"doc_module":4,"doc_module_name":25,"category_name":124,"show_sort_weight":123,"slug":125},10,"Lifestyle","lifestyle",{"id":127,"doc_module":4,"doc_module_name":25,"category_name":128,"show_sort_weight":97,"slug":129},19,"General","general",{"code":4,"msg":82,"data":131},{"doc_id":79,"user_id":132,"nickname":42,"user_avatar":133,"doc_module":4,"category_id":102,"category_name":29,"doc_title":10,"doc_description":12,"doc_content":134,"file_id":135,"file_url":136,"file_type":137,"file_size":138,"view_count":55,"is_deleted":4,"is_public":22,"is_downloadable":22,"audit_status":22,"page_count":33,"language":139,"language_code":8,"site_id":7,"html_lang":8,"table_of_contents":140,"faqs":141,"seo_title":142,"seo_description":12,"update_tm":80,"read_time":123},687197207639,"https://ap-avatar.wpscdn.com/davatar_a8503ba1806abce46bf441b54a3ca4cd","Charon: Declarative Provisioning and Deployment  \nEelco Dolstra, Rob Vermaas, and Shea Levy  \nLogicBlox, Inc., Atlanta, GA, USA, feelco.dolstra, rob.vermaas, [shea.levy](shea.levyg@logicblox.com)[g](shea.levyg@logicblox.com)[@logicblox.com](shea.levyg@logicblox.com)  \nAbstract—We introduce Charon, a tool for automated provisioning and deployment of networks of machines from declarative speciﬁcations. Building upon NixOS, a Linux distribution with a purely functional conﬁguration management model, Charon speciﬁcations completely describe the desired conﬁguration of sets of “logical” machines, including all software packages and services that need to be present on those machines, as well as their desired “physical” characteristics. Given such speciﬁcations, Charon will provision cloud resources (such as Amazon EC2 instances) as required, build and deploy packages, and activate services. We argue why declarativity and integrated provisioning and conﬁguration management are important properties, and describe our experience with Charon.  \nI. INTRODUCTION  \nAn essential part of the software life cycle is to deploy software to its target environment. In a cloud-based, infrastructureas-a-service setting, this also involves provisioning the cloud resources that constitute the target environment. These actions should be automated: given a speciﬁcation of the desired system conﬁguration, a deployment tool should automatically create the required cloud resources and deploy the necessary software packages and conﬁguration ﬁles.  \nIn this paper we present Charon 1 , a tool for automated provisioning and deployment of machines. Charon has several important characteristics:  \n􀀏 It is declarative: it provisions and deploys sets of machines from speciﬁcations that state the desired conﬁguration of each machine. Charon then ﬁgures out the actions necessary to realise that conﬁguration. Thus (with the exception of mutable state such as database contents) there is no difference between doing a new deployment or doing an upgrade of an existing deployment: the resulting machine conﬁgurations will be the same, allowing deployments to be upgraded or reproduced reliably. This is in contrast to cloud deployment tools with imperative conﬁguration models, e.g. Juju [1], where users conﬁgure a deployment by executing a sequence of stateful commands (e.g. juju deploy mysql) . In such systems, the conﬁguration is the result of a set of (possibly untracked) actions by administrators, making it hard to reproduce a conﬁguration. (See [2] for a discussion of the perils of statefulness.)  \nCharon builds upon NixOS [2], a Linux distribution that isin turn based on Nix [3], a package manager that builds and stores packages in a purely functional manner. Concretely this means that multiple versions of packages can coexist on a system, that packages can be upgraded or rolled back  \n1 Available under the LGPLv3 license at [https://github.com/NixOS/charon/](https://github.com/NixOS/charon/) .  \natomically, that dependency speciﬁcations can be guaranteed to be complete, and so on. NixOS has a declarative, stateless approach to describing the desired conﬁguration of a machine, making it an ideal basis for automated conﬁguration management of sets of machines. It also has desirable properties such as (nearly) atomic upgrades and the ability to roll back to previous conﬁgurations.  \nThere are several prominent conﬁguration management systems with declarative models, such as Cfengine [4], Puppet [5] and Chef [6] . However, the systems they manage still have underlying imperative conﬁguration models, such as conﬁguration ﬁles in /etc that are updated in place by deployment actions. Thus the result of a deployment may still depend on the previous conﬁguration of the system.  \n􀀏 It performs provisioning. The integration of provisioning and conﬁguration management is important, because provisioning affects conﬁguration ﬁles: for instance, if we instantiate an Amazon EC2 machine","cbCaispr5w0ybNTz","https://ap.wps.com/l/cbCaispr5w0ybNTz","pdf",129716,"English","# Introduction\n## Declarative provisioning and reliable upgrades\n## Foundations in NixOS and Nix\n## Comparison with imperative configuration tools\n# Overview\n## Charon deploying NixOS machines","[{\"question\":\"What problem does Charon address in cloud deployments?\",\"answer\":\"Charon automates both provisioning of cloud resources and deployment of software to match a desired system configuration, removing the need for manual, error-prone steps.\"},{\"question\":\"How does the declarative model benefit upgrades and reproduction?\",\"answer\":\"Since specifications fully determine the resulting configuration (except mutable state like database contents), a fresh deployment and an upgrade yield the same machine setup, enabling reliable upgrade and reproduction.\"},{\"question\":\"What role do NixOS and Nix play in Charon?\",\"answer\":\"Charon builds on NixOS, which relies on Nix’s purely functional package management, enabling coexistence of versions, atomic upgrades, rollback capability, and complete dependency specifications.\"}]","Charon - Declarative Provisioning and Deployment | PDF"]