type=page
status=published
title=create-node-ssh
next=create-password-alias.html
prev=create-node-dcom.html
~~~~~~

= create-node-ssh

[[create-node-ssh-1]][[GSRFM00048]][[create-node-ssh]]

== create-node-ssh

Creates a node that is enabled for communication over SSH

[[sthref463]]

=== Synopsis

[source]
----
asadmin [asadmin-options] create-node-ssh [--help]
--nodehost node-host
[--installdir as-install-parent] [--nodedir node-dir]
[--sshport ssh-port] [--sshuser ssh-user]
[--sshkeyfile ssh-keyfile]
[--force={false|true}]
[--install={false|true}] [--archive archive]
node-name
----

[[sthref464]]

=== Description

The `create-node-ssh` subcommand creates a node that is enabled for
communication over secure shell (SSH).

A node represents a host on which the {productName} software is
installed. A node must exist for every host on which {productName}
instances reside.

The domain administration server (DAS) contacts an SSH node's host
through the SSH connector to manage {productName} instances that
reside on the node. However, the DAS does not use the SSH connector to
contact the host where the DAS is running because the DAS can run all
`asadmin` subcommands locally.

By default, the subcommand fails and the node is not created if the DAS
cannot contact the node's host through SSH. To force the node to be
created in the DAS configuration even if the host cannot be contacted
through SSH, set the `--force` option to `true`.

This subcommand is supported in remote mode only.

[[sthref465]]

=== Options

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--nodehost`::
  The name of the host that the node represents. The name of the host
  must be specified. Otherwise, an error occurs.
`--installdir`::
  The full path to the parent of the base installation directory of the
  {productName} software on the host, for example,
  `/export/glassfish7/`. The default is the parent of the default base
  installation directory of the {productName} software for the DAS.
  This default is useful only if {productName} is installed in the
  same location on all hosts.
`--nodedir`::
  The path to the directory that is to contain {productName}
  instances that are created on the node. The default is
  as-install``/nodes``, where as-install is the base installation
  directory of the {productName} software on the host. If a relative
  path is specified, the path is relative to the as-install directory.
`--sshport`::
  The port to use for SSH connections to this node's host. The default
  is 22. If the `--nodehost` option is set to ``localhost-``domain, the
  `--sshport` option is ignored.
`--sshuser`::
  The user on this node's host that is to run the process for connecting
  to the host through SSH. The default is the user that is running the
  DAS process. To ensure that the DAS can read this user's SSH private
  key file, specify the user that is running the DAS process. If the
  `--nodehost` option is set to ``localhost-``domain, the `--sshuser`
  option is ignored.
`--sshkeyfile`::
  The absolute path to the SSH private key file for user that the
  `--sshuser` option specifies. This file is used for authentication to
  the `sshd` daemon on the node's host.
+
[NOTE]
====
{productName} also supports password authentication through the
`AS_ADMIN_SSHPASSWORD` entry in the password file. The password file
is specified in the `--paswordfile` option of the
link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility.
====
+
If the SSH private key file is protected by a passphrase, the password
  file must contain the `AS_ADMIN_SSHKEYPASSPHRASE` entry. +
  The path to the key file must be reachable by the DAS and the key file
  must be readable by the DAS. +
  The default is the a key file in the user's `.ssh` directory. If
  multiple key files are found, the subcommand uses the following order
  of preference:

  1.  `id_rsa`
  2.  `id_dsa`
  3.  `identity`

`--force`::
  Specifies whether the node is created in the DAS configuration even if
  validation of the node's parameters fails. To validate a node's
  parameters, the DAS must be able to contact the node's host through
  SSH. Possible values are as follows:

  `false`;;
    The node is not created if validation of the node's parameters fails
    (default).
  `true`;;
    The node is created even if validation of the node's parameters
    fails.

`--install`::
  Specifies whether the subcommand shall install the {productName}
  software on the host that the node represents. +
  Possible values are as follows:

  `false`;;
    The subcommand shall not install the {productName} software on
    the host (default).
  `true`;;
    The subcommand shall install the {productName} software on the
    host.

`--archive`::
  The absolute path to the archive file of the {productName}
  software that is to be installed. If this option is omitted and the
  `--install` is `true`, the subcommand creates a ZIP archive of the
  {productName} software from the installation where this subcommand
  is run. The archive does not contain the `domains` directory or the
  `nodes` directory.

[[sthref466]]

=== Operands

node-name::
  The name of the node. +
  The name must meet the following requirements:

  * The name may contain only ASCII characters.
  * The name must start with a letter, a number, or an underscore.
  * The name may contain only the following characters:
  ** Lowercase letters
  ** Uppercase letters
  ** Numbers
  ** Hyphen
  ** Period
  ** Underscore
  * The name must be unique in the domain and must not be the name of
  another node, a cluster, a named configuration, or a {productName}
  instance.
  * The name must not be `domain`, `server`, or any other keyword that
  is reserved by {productName}.

[[sthref467]]

=== Examples

[[GSRFM513]][[sthref468]]

==== Example 1   Creating a Node

This example creates the node `adc` for the host `adc.example.com`. By
default, the parent of the base installation directory of the
{productName} software is `/export/glassfish7`.

[source]
----
asadmin> create-node-ssh
--nodehost adc.example.com
--installdir /export/glassfish7 adc

Command create-node-ssh executed successfully.
----

[[GSRFM514]][[sthref469]]

==== Example 2   Forcing the Creation of a Node

This example forces the creation of node `eg1` for the host
`eghost.example.com`. The node is created despite the failure of the DAS
to contact the host `eghost.example.com` to validate the node's
parameters.

[source]
----
asadmin> create-node-ssh --force --nodehost eghost.example.com eg1
Warning: some parameters appear to be invalid.
Could not connect to host eghost.example.com using SSH.
There was a problem while connecting to eghost.example.com:22
eghost.example.com
Continuing with node creation due to use of --force.

Command create-node-ssh executed successfully.
----

[[sthref470]]

=== Exit Status

0::
  command executed successfully
1::
  error in executing the command

[[sthref471]]

=== See Also

link:asadmin.html#asadmin-1m[`asadmin`(1M)]

link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
link:install-node.html#install-node-1[`install-node`(1)],
link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
link:ping-node-ssh.html#ping-node-ssh-1[`ping-node-ssh`(1)],
link:setup-ssh.html#setup-ssh-1[`setup-ssh`(1)],
link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)],
link:update-node-ssh001.html#update-node-ssh-1[`update-node-ssh`(1)]


