========================
Installation preparation
========================

Download the installers
========================

Download the installers and copy them to the corresponding servers.

::

  RPM_CDN="https://820451f3d8380952ce65-4cc6343b423784e82fd202bb87cf87cf.ssl.cf1.rackcdn.com"
  curl -O $RPM_CDN/aen-server-4.1.2-Linux-x86_64.sh
  curl -O $RPM_CDN/aen-gateway-4.1.2-Linux-x86_64.sh
  curl -O $RPM_CDN/aen-compute-4.1.2-Linux-x86_64.sh

NOTE: The current ``$RPM_CDN`` server will be confirmed in an email provided by 
your priority support representative.

Record IP addresses, domain names, accounts, passwords
======================================================

AEN is very sensitive to the IP address or domain name used to
connect to the Server and Gateway components. If users will be using the
domain name, you should install the components using the domain name
instead of the IP addresses. The authentication system requires the
proper hostnames when authenticating users between the services.

Fill in the domain names or IP addresses of the components below and
record the user name and auto-generated password for the administrative user 
account in the box below after installing the AEN Server component.


+-----------------+--------------------+--------------------+
| Component       | Name or IP address |Port Number         |
+=================+====================+====================+
| AEN Server      |                    |                    |
+-----------------+--------------------+--------------------+
| AEN Gateway     |                    |                    |
+-----------------+--------------------+--------------------+
| AEN Compute     |                    |                    |
+-----------------+--------------------+--------------------+
| AEN_SRVC_GRP    |                    |       N/A          |
+-----------------+--------------------+--------------------+
| AEN_SRVC_ACCT   |                    |       N/A          |
+-----------------+--------------------+--------------------+
| Password        |                    |       N/A          |
+-----------------+--------------------+--------------------+

NOTE: These IP entries or DNS entries are referred to as ``<AEN_SERVER_IP>`` 
or ``<AEN_SERVER_FQDN>``, particularly in examples of shell commands. 
Consider actually assigning those values to environment variables with similar 
names.

NOTE: ``AEN_SRVC_ACCT`` is also know as the AEN Functional ID (or NFI). 
This is the Linux account that runs all AEN services. The default name for 
this account in the setup script is ``wakari``, though current best practice 
is to use ``aen-admin`` as the account name. The password to 
be recorded here is generated during the install procedure and goes to the 
``AEN_SRVC_ACCT`` ``/NFI/wakari/aen-admin`` user. 
 
NOTE: If you have more than one AEN Compute Node, record the name or IP 
address of each.
 
Setup variables
===============

AEN Server address
-------------------

Define an environment variable for the AEN Server address (FQDN or IP)::

    export AEN_SERVER=<AEN_SERVER_IP>  # <from table above>

Note that the address (FQDN or IP) specified for the AEN server must be
resolvable by your intended AEN users' web clients. You may verify your
hostname as follows::

    echo $AEN_SERVER

.. _`aen-functional-id`:

AEN Functional ID
------------------

AEN must be installed and executed by a Linux account called the AEN Service
Account. The username of the AEN Service Account is called the AEN Functional
ID (NFI). The AEN Service Account is created during AEN installation if it does
not exist and is used to run all AEN services.

The default NFI username is ``wakari``. Current best practices suggests using 
``aen_admin``. Set the environment variable ``AEN_SRVC_ACCT`` *before* installation::

    export AEN_SRVC_ACCT="aen_admin"

This name will then be the username of the AEN Service Account and the username
of the AEN Admin account.

When upgrading AEN, set the NFI to the NFI of the current installation.

AEN Functional Group
---------------------

The name of the AEN Functional Group (NFG) is often set to "wakari" or
"aen_admin" but may be given any name. This Linux group includes the AEN Service
Account, so all files and directories that have the owner NFI also have the
group NFG.

When upgrading AEN, set the NFG to the NFG of the current installation.

Set the AEN Functional Group with this command **before** installation, 
either using "wakari" or replacing it with your chosen name::

    export AEN_SRVC_GRP="aen_admin"

AEN install sudo command
------------------------

During AEN installation, the installers perform various operations that
require root level privileges. By default the installers use the
``sudo`` command to perform these operations. Set the following
environment variable ***before*** installation to override the default
``sudo`` command to perform root level operations or no command at all
when the user running the installers has root privileges and the
``sudo`` command is not needed or available: ``AEN_SUDO_INSTALL_CMD``

Examples::

    export AEN_SUDO_INSTALL_CMD=""
    export AEN_SUDO_INSTALL_CMD="sudo2"

AEN sudo command
-----------------

By default the AEN services uses ``sudo -u`` to perform operations on
behalf of other users. Such operations include ``mkdir``, ``chmod``,
``cp`` and ``mv``. Set the following environment variable before
installation to override the default ``sudo`` command when sudo is not
available on the system: ``AEN_SUDO_CMD``.

Note, AEN must have the ability to perform operations on behalf of other
users. This environment variable cannot be set to an empty string or
null. The ``AEN_SUDO_CMD`` must support the ``-u`` command line
parameter similar to the ``sudo`` command.

Example::

    export AEN_SUDO_CMD="sudo2"

The optional environmental variable ``AEN_SUDO_SH`` is another way to customize
AEN sudo operations. When AEN executes any sudo command it will include the
value of ``AEN_SUDO_SH`` if it is set.

For example, if your username is "jsmith" and these values are set::

    AEN_SUDO_CMD=sudo
    OWNER=jsmith
    AEN_SUDO_SH=sudologger
    PROJECT_HOME=/projects/jsmith/myproj

Then AEN will resolve this command::

    $AEN_SUDO_CMD -u ${OWNER} $AEN_SUDO_SH rm -rf $PROJECT_HOME

To this command::

    sudo -u jsmith sudologger rm -rf /projects/jsmith/myproj

In this case the ``sudologger`` utility could be a pass through utility that
logs all sudo usage and then executes the remaining parameters.

NOTE: You must perform the entire procedure before closing the terminal 
to ensure all variable exports persists.

Note on Post-Install Customization
-----------------------------------

Review the :doc:`post-installation documentation <customization>` 
for additional information on sudo configuration options.

While root/sudo privileges are required during installation, root/sudo
privileges are not required during normal operations after install, if
user accounts are managed outside the software (for example, via LDAP).
However root/sudo privileges are required to start the services, thus in
the service config files there may still need to be a ``AEN_SUDO_CMD``
entry.

Next Steps
==========

See the next steps needed for full AEN install below:

.. toctree::
   :maxdepth: 1

   install-server
   install-gateway
   install-compute
   
The following optional install procedures may need to be performed, 
depending on how you set up your data center:

.. toctree::
   :maxdepth: 1
   
   option-config
   customization
   ldap
   ssl
   sso
   
Additional post-install information:

.. toctree::
   :maxdepth: 1
   
   installation_update
   uninstall
   release
