#Licensed to the Apache Software Foundation (ASF) under one
#or more contributor license agreements.  See the NOTICE file
#distributed with this work for additional information
#regarding copyright ownership.  The ASF licenses this file
#to you under the Apache License, Version 2.0 (the
#"License"); you may not use this file except in compliance
#with the License.  You may obtain a copy of the License at
#http://www.apache.org/licenses/LICENSE-2.0
#Unless required by applicable law or agreed to in writing,
#software distributed under the License is distributed on an
#"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#KIND, either express or implied.  See the License for the
#specific language governing permissions and limitations
#under the License.
msgid ""
msgstr ""
"Project-Id-Version: 0\n"
"POT-Creation-Date: 2013-02-02T20:11:56\n"
"PO-Revision-Date: 2013-02-02T20:11:56\n"
"Last-Translator: Automatically generated\n"
"Language-Team: None\n"
"MIME-Version: 1.0\n"
"Content-Type: application/x-publican; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#. Tag: title
#, no-c-format
msgid "Add Cluster: vSphere"
msgstr ""

#. Tag: para
#, no-c-format
msgid "Host management for vSphere is done through a combination of vCenter and the &PRODUCT; admin UI. &PRODUCT; requires that all hosts be in a &PRODUCT; cluster, but the cluster may consist of a single host. As an administrator you must decide if you would like to use clusters of one host or of multiple hosts. Clusters of multiple hosts allow for features like live migration. Clusters also require shared storage such as NFS or iSCSI."
msgstr ""

#. Tag: para
#, no-c-format
msgid "For vSphere servers, we recommend creating the cluster of hosts in vCenter and then adding the entire cluster to &PRODUCT;. Follow these requirements:"
msgstr ""

#. Tag: para
#, no-c-format
msgid "Do not put more than 8 hosts in a vSphere cluster"
msgstr ""

#. Tag: para
#, no-c-format
msgid "Make sure the hypervisor hosts do not have any VMs already running before you add them to &PRODUCT;."
msgstr ""

#. Tag: para
#, no-c-format
msgid "To add a vSphere cluster to &PRODUCT;:"
msgstr ""

#. Tag: para
#, no-c-format
msgid "Create the cluster of hosts in vCenter. Follow the vCenter instructions to do this. You will create a cluster that looks something like this in vCenter."
msgstr ""

#. Tag: para
#, no-c-format
msgid "Log in to the UI."
msgstr ""

#. Tag: para
#, no-c-format
msgid "In the left navigation, choose Infrastructure. In Zones, click View More, then click the zone in which you want to add the cluster."
msgstr ""

#. Tag: para
#, no-c-format
msgid "Click the Compute tab, and click View All on Pods. Choose the pod to which you want to add the cluster."
msgstr ""

#. Tag: para
#, no-c-format
msgid "Click View Clusters."
msgstr ""

#. Tag: para
#, no-c-format
msgid "Click Add Cluster."
msgstr ""

#. Tag: para
#, no-c-format
msgid "In Hypervisor, choose VMware."
msgstr ""

#. Tag: para
#, no-c-format
msgid "Provide the following information in the dialog. The fields below make reference to values from vCenter."
msgstr ""

#. Tag: para
#, no-c-format
msgid "Cluster Name. Enter the name of the cluster you created in vCenter. For example, \"cloud.cluster.2.2.1\""
msgstr ""

#. Tag: para
#, no-c-format
msgid "vCenter Host. Enter the hostname or IP address of the vCenter server."
msgstr ""

#. Tag: para
#, no-c-format
msgid "vCenter Username. Enter the username that &PRODUCT; should use to connect to vCenter. This user must have all administrative privileges."
msgstr ""

#. Tag: para
#, no-c-format
msgid "vCenter Password. Enter the password for the user named above"
msgstr ""

#. Tag: para
#, no-c-format
msgid "vCenter Datacenter. Enter the vCenter datacenter that the cluster is in. For example, \"cloud.dc.VM\"."
msgstr ""

#. Tag: para
#, no-c-format
msgid "There might be a slight delay while the cluster is provisioned. It will automatically display in the UI"
msgstr ""

