<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
/**
 * 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.
 */
-->

<configuration>
    <property>
        <name>security_enabled</name>
        <value>false</value>
        <description>Hadoop Security</description>
    </property>
    <property>
        <name>kerberos_domain</name>
        <value>EXAMPLE.COM</value>
        <description>Kerberos realm.</description>
    </property>
    <property>
        <name>ignore_groupsusers_create</name>
        <value>false</value>
        <description>Whether to ignore failures on users and group creation</description>
    </property>
    <property>
        <name>smokeuser</name>
        <value>ambari-qa</value>
        <property-type>USER</property-type>
        <description>User executing service checks</description>
    </property>
    <property>
        <name>user_group</name>
        <value>hadoop</value>
        <property-type>GROUP</property-type>
        <description>Hadoop user group.</description>
    </property>
</configuration>