Host creation is one of the most complex commands in the hammer's foreman plugin. The majority of its parameters is obvious but there are some that need further explanation as their values differ with the type of a compute resource.
Warning:
Output of hammer host create -h
may
vary with the Foreman server used and plugins installed.
Sample help output for hammer-cli-foreman 0.2.0
and
Foreman 1.8
follows:
$ hammer host create -h Usage: hammer host create [OPTIONS] Options: --architecture ARCHITECTURE_NAME Architecture name --architecture-id ARCHITECTURE_ID --ask-root-password ASK_ROOT_PW One of true/false, yes/no, 1/0. --build BUILD One of true/false, yes/no, 1/0. Default: "true" --comment COMMENT Additional information about this host --compute-attributes COMPUTE_ATTRS Compute resource attributes. Comma-separated list of key=value. --compute-profile COMPUTE_PROFILE_NAME Name to search by --compute-profile-id COMPUTE_PROFILE_ID --compute-resource COMPUTE_RESOURCE_NAME Compute resource name --compute-resource-id COMPUTE_RESOURCE_ID --domain DOMAIN_NAME Domain name --domain-id DOMAIN_ID Numerical ID or domain name --enabled ENABLED One of true/false, yes/no, 1/0. Default: "true" --environment ENVIRONMENT_NAME Environment name --environment-id ENVIRONMENT_ID --hostgroup HOSTGROUP_NAME Hostgroup name --hostgroup-id HOSTGROUP_ID --hostgroup-title HOSTGROUP_TITLE Hostgroup title --image IMAGE_NAME Name to search by --image-id IMAGE_ID --interface INTERFACE Interface parameters. Comma-separated list of key=value. Can be specified multiple times. --ip IP not required if using a subnet with DHCP proxy --location LOCATION_NAME Location name --location-id LOCATION_ID --mac MAC required for managed host that is bare metal, not required if it’s a virtual machine --managed MANAGED One of true/false, yes/no, 1/0. Default: "true" --medium MEDIUM_NAME Medium name --medium-id MEDIUM_ID --model MODEL_NAME Model name --model-id MODEL_ID --name NAME --operatingsystem OPERATINGSYSTEM_TITLE Operating system title --operatingsystem-id OPERATINGSYSTEM_ID --organization ORGANIZATION_NAME Organization name --organization-id ORGANIZATION_ID --owner OWNER_LOGIN Login of the owner --owner-id OWNER_ID ID of the owner --owner-type OWNER_TYPE Host’s owner type --parameters PARAMS Host parameters. Comma-separated list of key=value. --partition-table PARTITION_TABLE_NAME Partition table name --partition-table-id PARTITION_TABLE_ID --progress-report-id PROGRESS_REPORT_ID UUID to track orchestration tasks status, GET /api/orchestration/:UUID/tasks --provision-method METHOD One of 'build', 'image' --puppet-ca-proxy PUPPET_CA_PROXY_NAME --puppet-ca-proxy-id PUPPET_CA_PROXY_ID --puppet-class-ids PUPPET_CLASS_IDS Comma separated list of values. --puppet-classes PUPPET_CLASS_NAMES Comma separated list of values. --puppet-proxy PUPPET_PROXY_NAME --puppet-proxy-id PUPPET_PROXY_ID --realm REALM_NAME Name to search by --realm-id REALM_ID Numerical ID or realm name --root-password ROOT_PW required if host is managed and value is not inherited from host group or default password in settings --subnet SUBNET_NAME Subnet name --subnet-id SUBNET_ID --volume VOLUME Volume parameters Comma-separated list of key=value. Can be specified multiple times. -h, --help print help
An example command for creating a host with 2 volumes (5GB raw + 10 GB qcow2) using a default network interface on a libvirt provider can look like this: <code>bash hammer host create --hostgroup=my_hostgroup # most of the settings is done in the hostgroup --compute-resource=libvirt # set the libvirt provider --compute-attributes="cpus=2" # specify the provider specific options, see the list below --interface="primary=true,compute_type=network,compute_network=default" # add a network interface, can be passed multiple times --volume="capacity=5G" # add a volume, can be passed multiple times --volume="capacity=10G,format_type=qcow2" # add another volume with different size and type --name="test-host" </code>
Please note that volumes, interfaces and compute attributes differ significantly across compute resource types. See the list of all possible option keys below.
Please note that managed hosts need to have one primary interface. Always
set primary=true
for one of your interfaces.
Available keys for --interface
:
```
mac
ip
type # One of
interface, bmc, bond
name
subnet_id
domain_id
identifier
managed #
true/false
primary # true/false, each managed hosts needs to have one
primary interface.
provision # true/false
virtual # true/false
tag # VLAN tag, this attribute has precedence over the subnet VLAN ID. Only for virtual interfaces. attached_to # Identifier of the interface to which this interface belongs, e.g. eth1.
mode # One of balance-rr, active-backup, balance-xor, broadcast, 802.3ad, balance-tlb, balance-alb attached_devices # Identifiers of slave interfaces, e.g. [eth1,eth2]. bond_options
provider # always IPMI username password ```
Available keys for
--compute-attributes
:
<code>
flavor_id # select
one of available flavours
image_id # select one of available
images
availability_zone
security_group_ids
managed_ip
</code>
Available keys for
--compute-attributes
:
<code>
machine_type # one of
available flavors
image_id
network
external_ip
</code>
Available keys for --compute-attributes
:
<code>
cpus
# number of CPUs
memory # string, amount of memory, value in
bytes
start # Must be a 1 or 0, whether to start the machine or
not
</code>
Available keys for --interface
:
<code>
compute_type
# one of [bridge, network]
compute_network / compute_bridge # name of
interface according to type
compute_model # one of
[virtio, rtl8139, ne2k_pci, pcnet, e1000]
</code>
Available keys for --volume
:
<code>
pool_name # list
of available storage pools
capacity # string value, eg. 10G
format_type
# one of [raw, qcow2]
</code>
Available keys for
--compute-attributes
:
<code>
flavor_ref
image_ref
tenant_id
security_groups
network
</code>
Available keys for
--compute-attributes
:
<code>
cluster
template #
hardware profile to use
cores # int value, number of cores
memory
# amount of memory, int value in bytes
start # Must be a 1 or 0,
whether to start the machine or not
</code>
Available keys for --interface
:
<code>
compute_name
# eg. eth0
compute_network # select one of available networks for a
cluster
</code>
Available keys for --volume
:
<code>
size_gb #
volume size in GB, integer value
storage_domain # select one of available
storage domains
bootable # boolean, only one volume can be
bootable
</code>
Available keys for
--compute-attributes
:
<code>
flavor_id
image_id
</code>
Available keys for --compute-attributes
:
<code>
cpus
# cpu count
corespersocket # number of cores per socket
# (applicable to hardware versions < 10 only)
memory_mb #
integer number
cluster # cluster id from VMware
path
# path to folder
guest_id # guest OS id form
VMware
scsi_controller_type # id of the controller from
VMware
hardware_version # hardware version id from VMware
start
# Boolean, expressed as 0 or 1, whether to start the machine or
not
</code>
Available keys for --interface
:
<code>
compute_type
# Type of the network adapter, for example one of:
#
VirtualVmxnet
# VirtualVmxnet2
#
VirtualVmxnet3
# VirtualE1000
#
VirtualE1000e
# VirtualPCNet32
# See
documentation center for your version of vSphere to find
# more details about available adapter types:
# www.vmware.com/support/pubs/
compute_network
# network id from VMware
</code>
Available keys for --volume
:
<code>
datastore #
datastore id from VMware
name
size_gb # integer number
thin #
true/false
eager_zero # true/false
</code>