<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>

<!-- 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.
-->
<section id="hyperv-host-add">
  <title>Adding a Hyper-V Host</title>
  <orderedlist>
    <listitem>
      <para>Before adding a host to the &PRODUCT; configuration, ensure that you install Hyper-V on
        the host.</para>
      <warning>
        <para>Be sure you have performed the additional &PRODUCT;-specific configuration steps
          described in the Hyper-V installation section.</para>
      </warning>
      <para/>
    </listitem>
    <listitem>
      <para>If you have not already done so, install Hyper-V on the host. You will need to know
        which version of the hypervisor software version is supported by &PRODUCT; and what
        additional configuration is required to ensure the host will work with &PRODUCT;. For more
        information, see the Prerequisites section in the Installation Guide.</para>
    </listitem>
    <listitem>
      <para>Log in to the &PRODUCT; UI as administrator.</para>
    </listitem>
    <listitem>
      <para>In the left navigation, choose Infrastructure. In Zones, click View More, then click the
        zone in which you want to add the host.</para>
    </listitem>
    <listitem>
      <para>Click the Compute tab. In the Clusters node, click View All.</para>
    </listitem>
    <listitem>
      <para>Click the cluster where you want to add the host.</para>
    </listitem>
    <listitem>
      <para>Click View Hosts.</para>
    </listitem>
    <listitem>
      <para>Click Add Host.</para>
    </listitem>
    <listitem>
      <para>Provide the following information.</para>
      <itemizedlist>
        <listitem>
          <para><emphasis role="bold">Host Name</emphasis>: The DNS name or IP address of the host.
          </para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Username</emphasis>: Username of the domain user you created.
            Specify domain name in the path. For example, domain 1\ admin.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Password</emphasis>: This is the password for the user named
            above.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Host Tags</emphasis> (Optional): Any labels that you use to
            categorize hosts for ease of maintenance. For example, you can set to the cloud's HA tag
            (set in the ha.tag global configuration parameter) if you want this host to be used only
            for VMs with the "high availability" feature enabled. For more information, see
            HA-Enabled Virtual Machines as well as HA for Hosts.</para>
        </listitem>
      </itemizedlist>
      <para>There may be a slight delay while the host is provisioned. It should automatically
        display in the UI. </para>
    </listitem>
    <listitem>
      <para>Repeat for additional hosts. </para>
    </listitem>
  </orderedlist>
</section>
