<!--

    Copyright (c) 2005, 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<p><a id="task-cluster-resource-create" name="task-cluster-resource-create"></a><a id="GHCLU00040" name="GHCLU00040"></a></p>

<h4><a id="sthref48" name="sthref48"></a><a id="sthref49" name="sthref49"></a>To Create a Resource for a Cluster</h4>
<a name="BEGIN" id="BEGIN"></a>
<ol>
<li>
<p>In the navigation tree, expand the Clusters node.</p>
</li>
<li>
<p>Under the expanded Clusters node, select the node for the cluster.</p>
<p>The General Information page for the cluster opens.</p>
</li>
<li>
<p>On the General Information page, click the Resources tab.</p>
<p>The Resources page for the cluster opens.</p>
</li>
<li>
<p>From the New pull-down menu, select the type of the resource to create.</p>
<p>The page for creating a resource of the selected type opens.</p>
</li>
<li>
<p>On the page for creating a resource of the selected type, make the required changes and save your changes.</p>
<p>For details, see the online help for the page for creating a resource of the selected type.</p>

<hr>
<p><b>Note:</b></p>
<p>When you create the resource, ensure that you specify the cluster as a target.</p>

<hr>

</li>
</ol>
<a id="sthref50" name="sthref50"></a>
<h5>See Also</h5>
<ul>
<li>
<p><a href="task-create-cluster.html">To Create a Cluster</a></p>
</li>
<li>
<p><a href="task-delete-cluster.html">To Delete a Cluster</a></p>
</li>
<li>
<p><a href="task-availabilityservice.html">To Configure Availability Settings for a Cluster</a></p>
</li>
<li>
<p><a href="task-start-cluster.html">To Start a Cluster</a></p>
</li>
<li>
<p><a href="task-stop-cluster.html">To Stop a Cluster</a></p>
</li>
<li>
<p><a href="task-modify-cluster-config.html">To Modify the Configuration of a Cluster</a></p>
</li>
<li>
<p><a href="task-cluster-app-deploy.html">To Deploy an Application to a Cluster</a></p>
</li>
<li>
<p><a href="task-cluster-app-list.html">To List Applications That Are Deployed to a Cluster</a></p>
</li>
<li>
<p><a href="task-cluster-app-undeploy.html">To Undeploy Applications From a Cluster</a></p>
</li>
<li>
<p><a href="task-cluster-app-remove.html">To Remove Applications From a Cluster</a></p>
</li>
<li>
<p><a href="task-cluster-app-edit.html">To Edit an Application That Is Deployed to a Cluster</a></p>
</li>
<li>
<p><a href="task-cluster-app-enable-disable.html">To Enable or Disable an Application That Is Deployed to a Cluster</a></p>
</li>
<li>
<p><a href="task-cluster-app-lb-enable-disable.html">To Enable or Disable Load Balancing for an Application That Is Deployed to a Cluster</a></p>
</li>
<li>
<p><a href="task-cluster-resource-display.html">To List Resources for a Cluster</a></p>
</li>
<li>
<p><a href="task-cluster-resource-enable-disable.html">To Enable or Disable a Resource Globally</a></p>
</li>
<li>
<p><a href="task-cluster-resource-edit.html">To Edit a Resource for a Cluster</a></p>
</li>
<li>
<p><a href="task-upgrade-components.html">To Upgrade Components Without Loss of Service</a></p>
</li>
</ul>


<small>Copyright &#169; 2005, 2017, Oracle and/or its affiliates. All rights reserved. <a href="docinfo.html">Legal Notices</a></small>
