Orchestrations v1 Templates

The following sample JSON file illustrates the high-level structure of an orchestration. For templates for individual object types, see Orchestration Templates for Each Object Type.

The orchestration templates provided here might not illustrate the use of all the attributes of each object. For a complete list of attributes and their description, see Attributes in Orchestrations v1. To get started with building an orchestration, see Building Your First Orchestration v1.

{
  "description": "someDescriptionHere",
  "name": "/Compute-identity_domain/user/name",
  "relationships: [see Relationships Between Object Plans],
  "oplans": [
    {
      "label": "someText",
      "obj_type": "objectType", (see Object Types in an Orchestration)
      "ha_policy: "policy", (see About High-Availability Policies in an Orchestration)
      "objects": [
        {
          attributes (see Attributes in Orchestrations v1)
        }
      ]
    },
    {
      "label": "someText",
      "obj_type": "objectType", (see Object Types in an Orchestration)
      "objects": [
        {
          attributes (see Attributes in Orchestrations v1)
        }
      ]
    },
    .
    . up to 10 oplans
    .
  ]
}

Template for Top-Level Attributes of an Orchestration

Top-level attributes contain the name and description of an orchestration, along with other information such as the relationship between objects defined in the orchestration, start and stop times for the orchestration, and the list of objects in the orchestration.

 {
   "name": "/Compute-acme/joe.jonathan@example.com/myOrchestration",
   "description": "sample orchestration",
   "relationships": [],
   "schedule": {"start_time": "2015-06-21T12:00:00Z"},
   "oplans": [
     {
     <Define your oplans here. See Orchestration Template for oplans.>
     }
   ]
 }

Orchestration Template for oplans

An object plan, or oplan, is a top-level orchestration attribute. Within an object plan, you can specify various object types and define one or more object for each object type.

{
  <Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>

  "oplans": [

    {
      "label": "My orchestration",
      "obj_type": "orchestration",
      "objects": [
        <Define your objects here. See Orchestration Templates for Each Object Type.>
      ]
    }
  ]

}

Orchestration Template for integrations/osscontainer

Use this object type if you want to create a container in your associated Oracle Cloud Infrastructure Object Storage Classic account.

{
<Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>
  "oplans": [

    {
      "label": "My-OSS-Container",
      "obj_type": "integrations/osscontainer",

      "objects": [
        {
          "account": "/Compute-acme/cloud_storage",
          "container": "Container_1",
          "delete_remote": false
        }
                
      ]
    }
<Define other objects here. See Orchestration Templates for Each Object Type.>
  ]
<Define other oplans here. See Orchestration Template for oplans.>
}

Orchestration Template for ip/reservation

Use this object type if you want to reserve permanent IP addresses in the shared network to attach with your instances. For more information, see About Public IP Addresses.

To associate an IP reservation with an instance that’s defined in the same orchestration, you must specify a relationship between the ip/reservation and the launchplan object plans.

{
<Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>
  "oplans": [

    {
      "label": "My IP reservations",
      "obj_type": "ip/reservation",

      "objects": [
        {
          "name": "/Compute-acme/joe.jonathan@example.com/ipres1",
          "parentpool": "/oracle/public/ippool",
          "permanent": true
        },
        {
          "name": "/Compute-acme/joe.jonathan@example.com/ipres2",
          "parentpool": "/oracle/public/ippool",
          "permanent": true
        }
        <Define other IP reservations here.>
      ]
    }
<Define other objects here. See Orchestration Templates for Each Object Type.>
  ]
<Define other oplans here. See Orchestration Template for oplans.>
}

Orchestration Template for launchplan

Use this object type if you want to define one or more instances. In an orchestration, instance is an attribute of the launchplan object type.

{
<Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>
  "oplans": [

    {
      "label": "My instances",
      "obj_type": "launchplan",

      "objects": [
        {
          "instances": [
            {
              <Define your instance here. See Orchestration Template for Instances.>
            }
			<Define other instances here.>
          ]
        }
      ]
    }
<Define other objects here. See Orchestration Templates for Each Object Type.>
  ]
<Define other oplans here. See Orchestration Template for oplans.>
}

Orchestration Template for Instances

In an orchestration, instance is an attribute of the launchplan object type. If any of the objects referred to in instance attributes are defined in the same orchestration as the instance, you must specify a relationship between each such object and the instance launch plan. For more information, see Relationships Between Object Plans.

{
<Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>
  "oplans": [
    {
      "label": "My instances",
      "obj_type": "launchplan",
      "objects": [

        {
          "instances": [

            {
              "shape": "oc3",
              "boot_order": [1],
              "label": "vm-1",
              "networking": {
                "eth0": {
                  "seclists": ["/Compute-acme/joe.jonathan@example.com/wlsadmin_seclist"],
                  "nat": "ipreservation:/Compute-acme/joe.jonathan@example.com/ipres1"
                     },
                "eth1" : {
                  "ipnetwork" : "/Compute-acme/joe.jonathan@example.com/ipnet-1",
            			"ip": "192.168.4.2",
			          "vnic": "/Compute-acme/joe.jonathan@example.com/eth1-ipnet1"
                    }
                 },
              "sshkeys": ["/Compute-acme/joe.jonathan@example.com/key1"],
              "storage_attachments": [
                {
                  "index": 1,
                  "volume": "/Compute-acme/joe.jonathan@example.com/boot"
                }
              ]
            }
            <Define other instances here.>
          ]
        }
      ]
    }
<Define other objects here. See Orchestration Templates for Each Object Type.>
  ]
<Define other oplans here. See Orchestration Template for oplans.>
}

Orchestration Template for network/v1/acl

Use this object type if you want to create an access control list (ACL). For more information about using ACLs in IP networks, see Configuring IP Networks.

{
<Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>
  "oplans": [

        {
            "label": "ACL1-for-vnicset1",
            "obj_type": "network/v1/acl",
            "objects": [
                {
                  "name": "/Compute-acme/joe.jonathan@example.com/acl_1",
                  "enabledFlag": true
                }
                 <Define other ACLs here.>
		       ]
         }
<Define other objects here. See Orchestration Templates for Each Object Type.>
  ]
<Define other oplans here. See Orchestration Template for oplans.>
}

Orchestration Template for network/v1/ipaddressprefixset

Use this object type if you want to create IP address prefix set to use as a source or destination in a security rule. For more information about using IP address prefix sets in IP networks, see Configuring IP Networks.

{
<Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>
  "oplans": [

        {
            "label": "IPaddress-prefix-set-1",
            "obj_type": "network/v1/ipaddressprefixset",
            "objects": [
                {
                  "name": "/Compute-acme/joe.jonathan@example.com/ext_ip_addresses",
                  "ipAddressPrefixes": ["203.0.113.0/30", "192.51.100.1/24"]
                 }
                 <Define other IP address prefix sets here.>
		       ]
         }
<Define other objects here. See Orchestration Templates for Each Object Type.>
  ]
<Define other oplans here. See Orchestration Template for oplans.>
}

Orchestration Template for network/v1/ipassociation

Use this object type if you want to create an IP association between an IP reservation and a vNIC in an IP network. For more information about IP associations in IP networks, see Configuring IP Networks.

{
<Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>
  "oplans": [

        {
            "label": "IP-Association-for-vnic1-on-instance1",
            "obj_type": "network/v1/ipassociation",
            "objects": [
                {
                  "name": "/Compute-acme/joe.jonathan@example.com/IP-association-vnic1",
                  "ipAddressReservation": "/Compute-acme/joe.jonathan@example.com/IPres-for-instance1-vnic1",
				        "vnic": "/Compute-acme/joe.jonathan@example.com/instance1-vnic1"
                 }
                 <Define other IP associations here.>
		       ]
         }
<Define other objects here. See Orchestration Templates for Each Object Type.>
  ]
<Define other oplans here. See Orchestration Template for oplans.>
}

Orchestration Template for network/v1/ipnetwork

Use this object type if you want to create IP networks. For more information about setting up and using IP networks, see Configuring IP Networks.

{
<Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>
  "oplans": [

        {
            "label": "ipnet1",
            "obj_type": "network/v1/ipnetwork",
            "objects": [
                {
                    "name": "/Compute-acme/joe.jonathan@example.com/ipnet1",
                    "ipAddressPrefix": "192.168.3.0/24",
                    "ipNetworkExchange": "/Compute-acme/joe.jonathan@example.com/ipnetworkexchange1",
                    "description": "IP network with IP network exchange"
                 }
                 <Define other IP networks here.>
		       ]
         }
<Define other objects here. See Orchestration Templates for Each Object Type.>
  ]
<Define other oplans here. See Orchestration Template for oplans.>
}

Orchestration Template for network/v1/ipnetworkexchange

Use this object type if you want to create IP network exchanges. For more information about setting up and using IP networks and IP network exchanges, see Configuring IP Networks.

{
<Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>
  "oplans": [

        {
              "label": "ipnetworkexchange",
              "obj_type": "network/v1/ipnetworkexchange",
		    	    "objects": [
		             {
                    "name": "/Compute-acme/joe.jonathan@example.com/ipnetworkexchange1"
		        		  }
		            <Define other IP network exchanges here.>
               ]
          }
<Define other objects here. See Orchestration Templates for Each Object Type.>
  ]
<Define other oplans here. See Orchestration Template for oplans.>
}

Orchestration Template for network/v1/ipreservation

Use this object type if you want to create an IP reservation for IP networks. For more information about IP networks, see Configuring IP Networks.

{
<Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>
  "oplans": [

         {
            "label": "IP-Reservation-for-IP-network",
            "obj_type": "network/v1/ipreservation",
            "objects": [
                {
                  "name": "/Compute-acme/joe.jonathan@example.com/IPres-for-instance1-vnic1",
                  "ipAddressPool": "/oracle/public/public-ippool"
                 }
                 <Define other IP reservations for IP networks here.>
		       ]
         }
<Define other objects here. See Orchestration Templates for Each Object Type.>
  ]
<Define other oplans here. See Orchestration Template for oplans.>
}

Orchestration Template for network/v1/route

Use this object type if you want to create routes to direct traffic across your IP networks. See Configuring IP Networks.

{
<Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>
  "oplans": [

        {
            "label": "route",
            "obj_type": "network/v1/route",
            "objects": [
                {
                    "name": "/Compute-acme/joe.jonathan@example.com/route1",
                    "nextHopVnicSet": "/Compute-acme/joe.jonathan@example.com/vnicset1",
                    "ipAddressPrefix": "203.0.113.0/24",
                    "adminDistance": "0"
                }
             <Define other routes here.>
            ]
        }
<Define other objects here. See Orchestration Templates for Each Object Type.>
  ]
<Define other oplans here. See Orchestration Template for oplans.>
}

Orchestration Template for network/v1/secprotocol

Use this object type if you want to create a security protocol for IP networks. For more information about IP networks, see Configuring IP Networks.

{
<Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>
  "oplans": [

        {
               "label": "Security-protocol-for-IP-networks",
               "obj_type": "network/v1/secprotocol",
               "objects": [
                 {
                    "description": "Security Protocol 1",
                    "dstPortSet": ["20", "155-1100"],
                    "ipProtocol": "tcp",
                    "name": "/Compute-acme/joe.jonathan@example.com/secprotocol_1",
                    "srcPortSet": ["10", "55-100"]
                }
                 <Define other security protocols for IP networks here.>
		       ]
         }
<Define other objects here. See Orchestration Templates for Each Object Type.>
  ]
<Define other oplans here. See Orchestration Template for oplans.>
}

Orchestration Template for network/v1/secrule

Use this object type if you want to create a security rule for IP networks. For more information about IP networks, see Configuring IP Networks.

{
<Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>
  "oplans": [

         {
            "label": "IP-network-secrule-1",
            "obj_type": "network/v1/secrule",
            "objects": [
                       {
                       "acl": "/Compute-acme/joe.jonathan@example.com/acl_1",
                       "description": "Sec Rule 1",
                       "flowDirection": "egress",
                       "name": "/Compute-acme/joe.jonathan@example.com/ipnetSecrule1",
                       "secProtocols": ["/Compute-acme/joe.jonathan@example.com/secprotocol_1"],
                       "srcIpAddressPrefixSets": ["/Compute-acme/joe.jonathan@example.com/ext_ip_address_list_1"]
                       }
                       <Define other security rules for IP networks here.>
                     ]
                }       
          <Define other objects here. See Orchestration Templates for Each Object Type.>
  ]
<Define other oplans here. See Orchestration Template for oplans.>
}

Orchestration Template for network/v1/vnicset

Use this object type if you want to create vNICsets in IP networks. For information about using vNICsets in IP networks, see Configuring IP Networks.

{
<Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>
  "oplans": [

        {
            "label": "vnicset",
            "obj_type": "network/v1/vnicset",
            "objects": [
                {
                    "name": "/Compute-acme/joe.jonathan@example.com/vnicset1",
                    "vnics": ["/Compute-acme/joe.jonathan@example.com/vnic1", 
                              "/Compute-acme/joe.jonathan@example.com/vnic2"]
                }
                <Define other vnicsets here.>
            ]
        }
<Define other objects here. See Orchestration Templates for Each Object Type.>
  ]
<Define other oplans here. See Orchestration Template for oplans.>
}

Orchestration Template for orchestration

Use this object type if you want to use an orchestration to start or stop multiple nested orchestrations. For more information, see About Nested Orchestrations.

{
  <Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>
  "oplans": [

    {
      "label": "My orchestration",
      "obj_type": "orchestration",

      "objects": [
        {
          "name": "/Compute-acme/joe.jonathan@example.com/myInstances"
        },
        {
          "name": "/Compute-acme/joe.jonathan@example.com/myStorageVolumes"
        }
        <Add names of other nested orchestrations here.>
      ]
    }
<Define other objects here. See Orchestration Templates for Each Object Type.>
  ]
<Define other oplans here. See Orchestration Template for oplans.>
}

Orchestration Template for secapplication

Use this object type to define security applications to use in security rules in the shared network. For more information, see About Security Applications.

To associate an IP reservation with an instance that’s defined in the same orchestration, you must specify a relationship between the ip/reservation and the launchplan object plans.

{
  <Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>
  "oplans": [

    {
      "label": "My security applications",
      "obj_type": "secapplication",

      "objects": [
        {
          "name": "/Compute-acme/joe.jonathan@example.com/wlsadmin_ssl",
          "dport": 7002,
          "protocol": "tcp"
        }
		<Define other security applications here.>
      ]
    }
<Define other objects here. See Orchestration Templates for Each Object Type.>
  ]
<Define other oplans here. See Orchestration Template for oplans.>
}

Orchestration Template for seciplist

Use this object type to define a set of IP addresses that you want to use as a source in a security rule in the shared network. For more information, see About Security IP Lists.

To use this security IP list in a security rule that’s defined in the same orchestration, you must specify a relationship between these objects.

{
 <Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>
  "oplans": [

    {
      "label": "admin-ip-list",
      "obj_type": "seciplist",

      "objects": [
        {
          "name": "/Compute-acme/joe.jonathan@example.com/admin_ips",
          "secipentries": ["203.0.113.0/30"]
        }
		<Define other security IP lists here.>
      ]
    }
<Define other objects here. See Orchestration Templates for Each Object Type.>
  ]
<Define other oplans here. See Orchestration Template for oplans.>
}

Orchestration Template for seclist

Use this object type to define security lists to group your instances in the shared network. For more information, see About Security Lists.

To use this security list in a security rule that’s defined in the same orchestration, you must specify a relationship between these objects.

{
<Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>
  "oplans": [

    {
      "label": "admin-seclists",
      "obj_type": "seclist",

      "objects": [
        {
          "name": "/Compute-acme/joe.jonathan@example.com/sysadmin_seclist"
        },
        {
          "name": "/Compute-acme/joe.jonathan@example.com/wlsadmin_seclist"
        }
		<Define other security lists here.>
      ]
    }
<Define other objects here. See Orchestration Templates for Each Object Type.>
  ]
<Define other oplans here. See Orchestration Template for oplans.>
}

Orchestration Template for secrule

Use this object type to define security rules that control access to your instances in the shared network. For more information, see About Security Rules.

If this security rule uses security applications, security lists, or security IP lists that are defined in the same orchestration, then you must specify a relationship between these objects.

{
<Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>
  "oplans": [

    {
      "label": "My security rules",
      "obj_type": "secrule",

      "objects": [
        {
          "name": "/Compute-acme/joe.jonathan@example.com/admin_ssh_to_sysadmin_rule",
          "application": "/oracle/public/ssh",
          "src_list": "seciplist:/Compute-acme/joe.jonathan@example.com/admin_ips",
          "dst_list": "seclist:/Compute-acme/joe.jonathan@example.com/sysadmin_seclist",
          "action": "PERMIT"
        },
        {
          "name": "/Compute-acme/joe.jonathan@example.com/dbadmin_ssh_to_db_rule",
          "application": "/oracle/public/ssh",
          "src_list": "seclist:/Compute-acme/joe.jonathan@example.com/dbadmin_seclist",
          "dst_list": "seclist:/Compute-acme/joe.jonathan@example.com/db_seclist",
          "action": "PERMIT"
        }
		<Define other security rules here.>
      ]
    }
<Define other objects here. See Orchestration Templates for Each Object Type.>
  ]
<Define other oplans here. See Orchestration Template for oplans.>
}

Orchestration Template for storage/volume

Use this object type to create storage volumes that you want to attach to your instances. For more information, see About Storage Volumes.

Note:

Don’t define storage volumes and instances in the same orchestration. By keeping storage volumes and instances in separate orchestrations, you can shut down and start the instances when required and yet preserve the attached storage volumes. Note that the recommendation here is to define the storage volumes outside the instance orchestration. To ensure that the storage volumes remain attached after an instance is re-created, you must define the storage attachments within the instance orchestration.

{
<Define the top-level attributes of your orchestration here. See Template for Top-Level Attributes of an Orchestration.>
  "oplans": [

    {
      "label": "My storage volumes",
      "obj_type": "storage/volume",

      "objects": [
        {
          "name": "/Compute-acme/joe.jonathan@example.com/boot",
          "bootable": true,
          "imagelist": "/oracle/public/OL_6.7_UEKR4_x86_64",
          "properties": ["/oracle/public/storage/default"],
          "size": "22548578304"
        },
        {
          "name": "/Compute-acme/joe.jonathan@example.com/data",
          "properties": ["/oracle/public/storage/latency"],
          "size": "32212254720"
        }
        <Define other storage volumes here.>
      ]
    }
<Define other objects here. See Orchestration Templates for Each Object Type.>
  ]
<Define other oplans here. See Orchestration Template for oplans.>
}