Abstract language to describe network deployments?












5















Is there any more or less standard/spec that is, vendor neutral, for network configuration language? Say, a VPC with networks and virtual machines would become an XML or JSON file.



Something like,



<deployment>
<vpc name="Test">
<appliances>
<vm id="1" />
</appliances>
</vpc>
</deployment>









share|improve this question























  • No, not really. The problem is that not every vendor supports everything, and they all do it differently. This has been a goal for a long time, but it has proved to be very difficult. In any case, VPCs and VMs are off-topic here.

    – Ron Maupin
    11 hours ago











  • Do you want to document the network or use this as a data source to automate network configuration?

    – JFL
    9 hours ago











  • @JFL ideally, both

    – J. Doe
    9 hours ago
















5















Is there any more or less standard/spec that is, vendor neutral, for network configuration language? Say, a VPC with networks and virtual machines would become an XML or JSON file.



Something like,



<deployment>
<vpc name="Test">
<appliances>
<vm id="1" />
</appliances>
</vpc>
</deployment>









share|improve this question























  • No, not really. The problem is that not every vendor supports everything, and they all do it differently. This has been a goal for a long time, but it has proved to be very difficult. In any case, VPCs and VMs are off-topic here.

    – Ron Maupin
    11 hours ago











  • Do you want to document the network or use this as a data source to automate network configuration?

    – JFL
    9 hours ago











  • @JFL ideally, both

    – J. Doe
    9 hours ago














5












5








5








Is there any more or less standard/spec that is, vendor neutral, for network configuration language? Say, a VPC with networks and virtual machines would become an XML or JSON file.



Something like,



<deployment>
<vpc name="Test">
<appliances>
<vm id="1" />
</appliances>
</vpc>
</deployment>









share|improve this question














Is there any more or less standard/spec that is, vendor neutral, for network configuration language? Say, a VPC with networks and virtual machines would become an XML or JSON file.



Something like,



<deployment>
<vpc name="Test">
<appliances>
<vm id="1" />
</appliances>
</vpc>
</deployment>






network architecture






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked 13 hours ago









J. DoeJ. Doe

1312




1312













  • No, not really. The problem is that not every vendor supports everything, and they all do it differently. This has been a goal for a long time, but it has proved to be very difficult. In any case, VPCs and VMs are off-topic here.

    – Ron Maupin
    11 hours ago











  • Do you want to document the network or use this as a data source to automate network configuration?

    – JFL
    9 hours ago











  • @JFL ideally, both

    – J. Doe
    9 hours ago



















  • No, not really. The problem is that not every vendor supports everything, and they all do it differently. This has been a goal for a long time, but it has proved to be very difficult. In any case, VPCs and VMs are off-topic here.

    – Ron Maupin
    11 hours ago











  • Do you want to document the network or use this as a data source to automate network configuration?

    – JFL
    9 hours ago











  • @JFL ideally, both

    – J. Doe
    9 hours ago

















No, not really. The problem is that not every vendor supports everything, and they all do it differently. This has been a goal for a long time, but it has proved to be very difficult. In any case, VPCs and VMs are off-topic here.

– Ron Maupin
11 hours ago





No, not really. The problem is that not every vendor supports everything, and they all do it differently. This has been a goal for a long time, but it has proved to be very difficult. In any case, VPCs and VMs are off-topic here.

– Ron Maupin
11 hours ago













Do you want to document the network or use this as a data source to automate network configuration?

– JFL
9 hours ago





Do you want to document the network or use this as a data source to automate network configuration?

– JFL
9 hours ago













@JFL ideally, both

– J. Doe
9 hours ago





@JFL ideally, both

– J. Doe
9 hours ago










4 Answers
4






active

oldest

votes


















8














YANG is the answer here. To quote from RFC8345, which defines YANG:




This document defines an abstract (generic, or base) YANG data
model for network/service topologies and inventories. The data
model serves as a base model that is augmented with
technology-specific details in other, more specific topology and
inventory data models.




Protocols like NETCONF can use YANG for representations of network configurations.






share|improve this answer































    1














    Ansible can be used to build (part of) a network as code.
    It uses YAML syntax and can read JSON.



    There's existing ansible roles for major vendor's equipment's, and you can build your own roles.



    But existing roles are not always up to date and writing, and maintaining, your own can be time consuming.






    share|improve this answer































      1














      For AWS VPCs specifically, you can use CloudFormation to generate a "configuration" file, which can be used to recreate the VPC and all the related components. I believe it's in JSON format.



      For networks in general, there is no such thing. Figure out how to do it, and you can retire comfortably.






      share|improve this answer































        0














        Hashicorp's Terraform has a vendor-neutral (but not -agnostic) configuration language. AWS VPCs look like:



        resource "aws_vpc" "Test" {
        cidr_block = "10.0.0.0/16"
        instance_tenancy = "dedicated"

        tags = {
        Name = "Test"
        }
        }





        share|improve this answer








        New contributor




        Jacob Krall is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.




















          Your Answer








          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "496"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          noCode: true, onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fnetworkengineering.stackexchange.com%2fquestions%2f56638%2fabstract-language-to-describe-network-deployments%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          4 Answers
          4






          active

          oldest

          votes








          4 Answers
          4






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          8














          YANG is the answer here. To quote from RFC8345, which defines YANG:




          This document defines an abstract (generic, or base) YANG data
          model for network/service topologies and inventories. The data
          model serves as a base model that is augmented with
          technology-specific details in other, more specific topology and
          inventory data models.




          Protocols like NETCONF can use YANG for representations of network configurations.






          share|improve this answer




























            8














            YANG is the answer here. To quote from RFC8345, which defines YANG:




            This document defines an abstract (generic, or base) YANG data
            model for network/service topologies and inventories. The data
            model serves as a base model that is augmented with
            technology-specific details in other, more specific topology and
            inventory data models.




            Protocols like NETCONF can use YANG for representations of network configurations.






            share|improve this answer


























              8












              8








              8







              YANG is the answer here. To quote from RFC8345, which defines YANG:




              This document defines an abstract (generic, or base) YANG data
              model for network/service topologies and inventories. The data
              model serves as a base model that is augmented with
              technology-specific details in other, more specific topology and
              inventory data models.




              Protocols like NETCONF can use YANG for representations of network configurations.






              share|improve this answer













              YANG is the answer here. To quote from RFC8345, which defines YANG:




              This document defines an abstract (generic, or base) YANG data
              model for network/service topologies and inventories. The data
              model serves as a base model that is augmented with
              technology-specific details in other, more specific topology and
              inventory data models.




              Protocols like NETCONF can use YANG for representations of network configurations.







              share|improve this answer












              share|improve this answer



              share|improve this answer










              answered 10 hours ago









              Teun VinkTeun Vink

              11.5k53053




              11.5k53053























                  1














                  Ansible can be used to build (part of) a network as code.
                  It uses YAML syntax and can read JSON.



                  There's existing ansible roles for major vendor's equipment's, and you can build your own roles.



                  But existing roles are not always up to date and writing, and maintaining, your own can be time consuming.






                  share|improve this answer




























                    1














                    Ansible can be used to build (part of) a network as code.
                    It uses YAML syntax and can read JSON.



                    There's existing ansible roles for major vendor's equipment's, and you can build your own roles.



                    But existing roles are not always up to date and writing, and maintaining, your own can be time consuming.






                    share|improve this answer


























                      1












                      1








                      1







                      Ansible can be used to build (part of) a network as code.
                      It uses YAML syntax and can read JSON.



                      There's existing ansible roles for major vendor's equipment's, and you can build your own roles.



                      But existing roles are not always up to date and writing, and maintaining, your own can be time consuming.






                      share|improve this answer













                      Ansible can be used to build (part of) a network as code.
                      It uses YAML syntax and can read JSON.



                      There's existing ansible roles for major vendor's equipment's, and you can build your own roles.



                      But existing roles are not always up to date and writing, and maintaining, your own can be time consuming.







                      share|improve this answer












                      share|improve this answer



                      share|improve this answer










                      answered 12 hours ago









                      JFLJFL

                      10.8k11235




                      10.8k11235























                          1














                          For AWS VPCs specifically, you can use CloudFormation to generate a "configuration" file, which can be used to recreate the VPC and all the related components. I believe it's in JSON format.



                          For networks in general, there is no such thing. Figure out how to do it, and you can retire comfortably.






                          share|improve this answer




























                            1














                            For AWS VPCs specifically, you can use CloudFormation to generate a "configuration" file, which can be used to recreate the VPC and all the related components. I believe it's in JSON format.



                            For networks in general, there is no such thing. Figure out how to do it, and you can retire comfortably.






                            share|improve this answer


























                              1












                              1








                              1







                              For AWS VPCs specifically, you can use CloudFormation to generate a "configuration" file, which can be used to recreate the VPC and all the related components. I believe it's in JSON format.



                              For networks in general, there is no such thing. Figure out how to do it, and you can retire comfortably.






                              share|improve this answer













                              For AWS VPCs specifically, you can use CloudFormation to generate a "configuration" file, which can be used to recreate the VPC and all the related components. I believe it's in JSON format.



                              For networks in general, there is no such thing. Figure out how to do it, and you can retire comfortably.







                              share|improve this answer












                              share|improve this answer



                              share|improve this answer










                              answered 10 hours ago









                              Ron TrunkRon Trunk

                              36k33373




                              36k33373























                                  0














                                  Hashicorp's Terraform has a vendor-neutral (but not -agnostic) configuration language. AWS VPCs look like:



                                  resource "aws_vpc" "Test" {
                                  cidr_block = "10.0.0.0/16"
                                  instance_tenancy = "dedicated"

                                  tags = {
                                  Name = "Test"
                                  }
                                  }





                                  share|improve this answer








                                  New contributor




                                  Jacob Krall is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                  Check out our Code of Conduct.

























                                    0














                                    Hashicorp's Terraform has a vendor-neutral (but not -agnostic) configuration language. AWS VPCs look like:



                                    resource "aws_vpc" "Test" {
                                    cidr_block = "10.0.0.0/16"
                                    instance_tenancy = "dedicated"

                                    tags = {
                                    Name = "Test"
                                    }
                                    }





                                    share|improve this answer








                                    New contributor




                                    Jacob Krall is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                    Check out our Code of Conduct.























                                      0












                                      0








                                      0







                                      Hashicorp's Terraform has a vendor-neutral (but not -agnostic) configuration language. AWS VPCs look like:



                                      resource "aws_vpc" "Test" {
                                      cidr_block = "10.0.0.0/16"
                                      instance_tenancy = "dedicated"

                                      tags = {
                                      Name = "Test"
                                      }
                                      }





                                      share|improve this answer








                                      New contributor




                                      Jacob Krall is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                      Check out our Code of Conduct.










                                      Hashicorp's Terraform has a vendor-neutral (but not -agnostic) configuration language. AWS VPCs look like:



                                      resource "aws_vpc" "Test" {
                                      cidr_block = "10.0.0.0/16"
                                      instance_tenancy = "dedicated"

                                      tags = {
                                      Name = "Test"
                                      }
                                      }






                                      share|improve this answer








                                      New contributor




                                      Jacob Krall is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                      Check out our Code of Conduct.









                                      share|improve this answer



                                      share|improve this answer






                                      New contributor




                                      Jacob Krall is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                      Check out our Code of Conduct.









                                      answered 5 hours ago









                                      Jacob KrallJacob Krall

                                      1012




                                      1012




                                      New contributor




                                      Jacob Krall is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                      Check out our Code of Conduct.





                                      New contributor





                                      Jacob Krall is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                      Check out our Code of Conduct.






                                      Jacob Krall is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                      Check out our Code of Conduct.






























                                          draft saved

                                          draft discarded




















































                                          Thanks for contributing an answer to Network Engineering Stack Exchange!


                                          • Please be sure to answer the question. Provide details and share your research!

                                          But avoid



                                          • Asking for help, clarification, or responding to other answers.

                                          • Making statements based on opinion; back them up with references or personal experience.


                                          To learn more, see our tips on writing great answers.




                                          draft saved


                                          draft discarded














                                          StackExchange.ready(
                                          function () {
                                          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fnetworkengineering.stackexchange.com%2fquestions%2f56638%2fabstract-language-to-describe-network-deployments%23new-answer', 'question_page');
                                          }
                                          );

                                          Post as a guest















                                          Required, but never shown





















































                                          Required, but never shown














                                          Required, but never shown












                                          Required, but never shown







                                          Required, but never shown

































                                          Required, but never shown














                                          Required, but never shown












                                          Required, but never shown







                                          Required, but never shown







                                          Popular posts from this blog

                                          How to label and detect the document text images

                                          Tabula Rosettana

                                          Aureus (color)