mirror of
https://github.com/xcat2/xcat-core.git
synced 2026-05-22 08:42:47 +00:00
Merge tag '2.15.1' into lenovobuild
This commit is contained in:
+12
-2
@@ -22,6 +22,7 @@
|
||||
# Verifies no broken link files in ..../<OS>/<ARCH>/
|
||||
# Verifies there are no multiple, real (non-link) files with the same name
|
||||
# Verifies all real (non-link) files have a link to it
|
||||
# Verifies all files have read permission set for all
|
||||
# VERBOSE=1 - Set to 1 to see more VERBOSE output
|
||||
|
||||
# This script should only be run on RPM based machines
|
||||
@@ -189,6 +190,15 @@ if [[ ${CHECK} -eq 1 ]]; then
|
||||
fi
|
||||
done
|
||||
|
||||
# Find files that have read permission missing for "all"
|
||||
MISSING_PERMISSION=`find $GSA/* -type f -not -perm -444`
|
||||
for file in $MISSING_PERMISSION; do
|
||||
echo "Verify permission for file: "
|
||||
echo " " $(ls -l $file)
|
||||
ERROR=1
|
||||
done
|
||||
|
||||
|
||||
if [[ ${ERROR} -eq 1 ]]; then
|
||||
echo -e "\nErrors found verifying files. Rerun this script with CHECK=0 to skip file verification."
|
||||
exit 1
|
||||
@@ -268,8 +278,8 @@ chgrp -R -h $SYSGRP *
|
||||
chmod -R g+w *
|
||||
|
||||
# Change permission on all repodata files to be readable by all
|
||||
chmod a+r */*/repodata/*.gz
|
||||
chmod a+r */*/repodata/*.bz2
|
||||
chmod a+rx */*/repodata
|
||||
chmod a+r */*/repodata/*
|
||||
|
||||
TARBALL_WORKING_DIR="${XCATCOREDIR}/${DESTDIR}"
|
||||
echo "===> Building the tarball at: ${TARBALL_WORKING_DIR} ..."
|
||||
|
||||
@@ -3,10 +3,9 @@ Configure DHCP
|
||||
|
||||
Add the relevant networks into the DHCP configuration, refer to: :ref:`Setup-dhcp`
|
||||
|
||||
Add the defined nodes into the DHCP configuration, refer to:
|
||||
`XCAT_pLinux_Clusters/#configure-dhcp <http://localhost/fake_todo>`_
|
||||
Add the defined nodes into the DHCP configuration, refer to :doc:`Manually define nodes </guides/admin-guides/manage_clusters/ppc64le/discovery/manually_define>`
|
||||
|
||||
In the large cluster, the size of dhcp lease file "/var/lib/dhcpd/dhcpd.leases" on the DHCP server will grow over time. At around 100MB in size, the DHCP server will take a long time to respond to DHCP requests from clients and cause DHCP timeouts: ::
|
||||
In the large cluster, the size of dhcp lease file ``/var/lib/dhcpd/dhcpd.leases`` on the DHCP server will grow over time. At around 100MB in size, the DHCP server will take a long time to respond to DHCP requests from clients and cause DHCP timeouts: ::
|
||||
|
||||
...
|
||||
Mar 2 01:59:10 c656ems2 dhcpd: DHCPDISCOVER from 00:0a:f7:73:7d:d0 via eth0
|
||||
|
||||
@@ -63,6 +63,16 @@ Suse Linux Enterprise Server
|
||||
libmysqlclient18-*
|
||||
perl-DBD-mysql-*
|
||||
|
||||
* For SLE15, MariaDB is shipped. Using ``zypper``, ensure that the following packages are installed on the management node: ::
|
||||
|
||||
mariadb
|
||||
mariadb-client
|
||||
mariadb-errormessages
|
||||
perl-DBD-mysql
|
||||
libmariadb-devel
|
||||
mariadb-tools
|
||||
libmariadb_plugins
|
||||
|
||||
|
||||
Debian/Ubuntu
|
||||
-------------
|
||||
|
||||
@@ -19,6 +19,11 @@ Start/Stop MySQL/MariaDB service
|
||||
service mysql start
|
||||
service mysql stop
|
||||
|
||||
**[SLE15]** : ::
|
||||
|
||||
systemctl start mariadb
|
||||
systemctl stop mariadb
|
||||
|
||||
|
||||
Basic MySQL/MariaDB commands
|
||||
-----------------------------
|
||||
|
||||
@@ -11,41 +11,41 @@ be adding the information to the database that will tell xCAT which service
|
||||
nodes (SN) will service which compute nodes (CN).
|
||||
|
||||
For this example, we have two service nodes: **sn1** and **sn2**. We will call
|
||||
our Management Node: **mn1**. Note: service nodes are, by convention, in a
|
||||
our Management Node: **mn1**. Service nodes are, by convention, in a
|
||||
group called **service**. Some of the commands in this document will use the
|
||||
group **service** to update all service nodes.
|
||||
|
||||
Note: a Service Node's service node is the Management Node; so a service node
|
||||
must have a direct connection to the management node. The compute nodes do not
|
||||
have to be directly attached to the Management Node, only to their service
|
||||
node. This will all have to be defined in your networks table.
|
||||
.. note:: a Service Node's service node is the Management Node; so a service node
|
||||
must have a direct connection to the management node. The compute nodes do not
|
||||
have to be directly attached to the Management Node, only to their service
|
||||
node. This will all have to be defined in your networks table.
|
||||
|
||||
Add Service Nodes to the nodelist Table
|
||||
---------------------------------------
|
||||
|
||||
Define your service nodes (if not defined already), and by convention we put
|
||||
them in a **service** group. We usually have a group compute for our compute
|
||||
them in a **service** group. We usually have a group **compute** for our compute
|
||||
nodes, to distinguish between the two types of nodes. (If you want to use your
|
||||
own group name for service nodes, rather than service, you need to change some
|
||||
defaults in the xCAT db that use the group name service. For example, in the
|
||||
postscripts table there is by default a group entry for service, with the
|
||||
own group name for service nodes, rather than **service**, you need to change some
|
||||
defaults in the xCAT db that use the group name **service**. For example, in the
|
||||
postscripts table there is by default a group entry for **service**, with the
|
||||
appropriate postscripts to run when installing a service node. Also, the
|
||||
default ``kickstart/autoyast`` template, pkglist, etc that will be used have
|
||||
files names based on the profile name service.) ::
|
||||
files names based on the profile name **service**.) ::
|
||||
|
||||
mkdef sn1,sn2 groups=service,ipmi,all
|
||||
|
||||
Add OS and Hardware Attributes to Service Nodes
|
||||
-----------------------------------------------
|
||||
|
||||
When you ran copycds, it creates several osimage definitions, including some
|
||||
When you ran ``copycds``, it creates several osimage definitions, including some
|
||||
appropriate for SNs. Display the list of osimages and choose one with
|
||||
"service" in the name: ::
|
||||
**service** in the name: ::
|
||||
|
||||
lsdef -t osimage
|
||||
|
||||
For this example, let's assume you chose the stateful osimage definition for
|
||||
rhels 7: rhels7-x86_64-install-service . If you want to modify any of the
|
||||
rhels 7: ``rhels7-x86_64-install-service`` . If you want to modify any of the
|
||||
osimage attributes (e.g. ``kickstart/autoyast`` template, pkglist, etc),
|
||||
make a copy of the osimage definition and also copy to ``/install/custom``
|
||||
any files it points to that you are modifying.
|
||||
@@ -60,19 +60,19 @@ Now set some of the common attributes for the SNs at the group level: ::
|
||||
primarynic=mac \
|
||||
provmethod=rhels7-x86_64-install-service
|
||||
|
||||
Add Service Nodes to the servicenode Table
|
||||
Add Service Nodes to the ``servicenode`` Table
|
||||
------------------------------------------
|
||||
|
||||
An entry must be created in the servicenode table for each service node or the
|
||||
service group. This table describes all the services you would like xcat to
|
||||
An entry must be created in the ``servicenode`` table for each service node or the
|
||||
**service** group. This table describes all the services you would like xcat to
|
||||
setup on the service nodes. (Even if you don't want xCAT to set up any
|
||||
services - unlikely - you must define the service nodes in the servicenode
|
||||
services - unlikely - you must define the service nodes in the ``servicenode``
|
||||
table with at least one attribute set (you can set it to 0), otherwise it will
|
||||
not be recognized as a service node.)
|
||||
|
||||
When the xcatd daemon is started or restarted on the service node, it will
|
||||
When the ``xcatd`` daemon is started or restarted on the service node, it will
|
||||
make sure all of the requested services are configured and started. (To
|
||||
temporarily avoid this when restarting xcatd, use "service xcatd reload"
|
||||
temporarily avoid this when restarting ``xcatd``, use ``service xcatd reload``
|
||||
instead.)
|
||||
|
||||
To set up the minimum recommended services on the service nodes: ::
|
||||
@@ -82,23 +82,21 @@ To set up the minimum recommended services on the service nodes: ::
|
||||
setupnameserver=1 \
|
||||
setupconserver=1
|
||||
|
||||
.. TODO
|
||||
|
||||
See the ``setup*`` attributes in the :doc:`node manpage </guides/admin-guides/references/man7/node.7>` for the services available. (The HTTP server is also started when setupnfs is set.)
|
||||
|
||||
If you are using the setupntp postscript on the compute nodes, you should also
|
||||
set setupntp=1. For clusters with subnetted management networks (i.e. the
|
||||
If you are using the ``setupntp`` postscript on the compute nodes, you should also
|
||||
set ``setupntp=1``. For clusters with subnetted management networks (i.e. the
|
||||
network between the SN and its compute nodes is separate from the network
|
||||
between the MN and the SNs) you might want to also set setupipforward=1.
|
||||
between the MN and the SNs) you might want to also set ``setupipforward=1``.
|
||||
|
||||
.. _add_service_node_postscripts_label:
|
||||
|
||||
Add Service Node Postscripts
|
||||
----------------------------
|
||||
|
||||
By default, xCAT defines the service node group to have the "servicenode"
|
||||
By default, xCAT defines the **service** node group to have the ``servicenode``
|
||||
postscript run when the SNs are installed or diskless booted. This
|
||||
postscript sets up the xcatd credentials and installs the xCAT software on
|
||||
postscript sets up the ``xcatd`` credentials and installs the xCAT software on
|
||||
the service nodes. If you have your own postscript that you want run on the
|
||||
SN during deployment of the SN, put it in ``/install/postscripts`` on the MN
|
||||
and add it to the service node postscripts or postbootscripts. For example: ::
|
||||
@@ -113,7 +111,7 @@ Notes:
|
||||
* Make sure that the servicenode postscript is set to run before the
|
||||
otherpkgs postscript or you will see errors during the service node
|
||||
deployment.
|
||||
* The -p flag automatically adds the specified postscript at the end of the
|
||||
* The ``-p`` flag automatically adds the specified postscript at the end of the
|
||||
comma-separated list of postscripts (or postbootscripts).
|
||||
|
||||
If you are running additional software on the service nodes that need **ODBC**
|
||||
@@ -125,43 +123,42 @@ the xCAT supplied postbootscript called "odbcsetup". ::
|
||||
Assigning Nodes to their Service Nodes
|
||||
--------------------------------------
|
||||
|
||||
The node attributes **servicenode** and **xcatmaster** define which SN
|
||||
services this particular node. The servicenode attribute for a compute node
|
||||
defines which SN the MN should send a command to (e.g. xdsh), and should be
|
||||
The node attributes ``servicenode`` and ``xcatmaster`` define which SN
|
||||
services this particular node. The ``servicenode`` attribute for a compute node
|
||||
defines which SN the MN should send a command to (e.g. ``xdsh``), and should be
|
||||
set to the hostname or IP address of the service node that the management
|
||||
node contacts it by. The xcatmaster attribute of the compute node defines
|
||||
node contacts it by. The ``xcatmaster`` attribute of the compute node defines
|
||||
which SN the compute node should boot from, and should be set to the
|
||||
hostname or IP address of the service node that the compute node contacts it
|
||||
by. Unless you are using service node pools, you must set the xcatmaster
|
||||
by. Unless you are using service node pools, you must set the ``xcatmaster``
|
||||
attribute for a node when using service nodes, even if it contains the same
|
||||
value as the node's servicenode attribute.
|
||||
value as the node's ``servicenode`` attribute.
|
||||
|
||||
Host name resolution must have been setup in advance, with ``/etc/hosts``, DNS
|
||||
or dhcp to ensure that the names put in this table can be resolved on the
|
||||
Management Node, Service nodes, and the compute nodes. It is easiest to have a
|
||||
node group of the compute nodes for each service node. For example, if all the
|
||||
nodes in node group compute1 are serviced by sn1 and all the nodes in node
|
||||
group compute2 are serviced by sn2:
|
||||
nodes in node group **compute1** are serviced by sn1 and all the nodes in node
|
||||
group **compute2** are serviced by sn2:
|
||||
|
||||
::
|
||||
|
||||
chdef -t group compute1 servicenode=sn1 xcatmaster=sn1-c
|
||||
chdef -t group compute2 servicenode=sn2 xcatmaster=sn2-c
|
||||
|
||||
Note: in this example, sn1 and sn2 are the node names of the service nodes
|
||||
(and therefore the hostnames associated with the NICs that the MN talks to).
|
||||
The hostnames sn1-c and sn2-c are associated with the SN NICs that communicate
|
||||
with their compute nodes.
|
||||
.. note:: In this example, sn1 and sn2 are the node names of the service nodes
|
||||
(and therefore the hostnames associated with the NICs that the MN talks to).
|
||||
The hostnames sn1-c and sn2-c are associated with the SN NICs that communicate
|
||||
with their compute nodes.
|
||||
|
||||
Note: if not set, the attribute tftpserver's default value is xcatmaster,
|
||||
but in some releases of xCAT it has not defaulted correctly, so it is safer
|
||||
to set the tftpserver to the value of xcatmaster.
|
||||
.. note:: If not set, the attribute tftpserver's default value is ``xcatmaster``,
|
||||
but in some releases of xCAT it has not defaulted correctly, so it is safer
|
||||
to set the tftpserver to the value of ``xcatmaster``.
|
||||
|
||||
These attributes will allow you to specify which service node should run the
|
||||
conserver (console) and monserver (monitoring) daemon for the nodes in the
|
||||
group specified in the command. In this example, we are having each node's
|
||||
primary SN also act as its conserver and monserver (the most typical setup).
|
||||
::
|
||||
primary SN also act as its conserver and monserver (the most typical setup). ::
|
||||
|
||||
chdef -t group compute1 conserver=sn1 monserver=sn1,sn1-c
|
||||
chdef -t group compute2 conserver=sn2 monserver=sn2,sn2-c
|
||||
@@ -176,22 +173,22 @@ for work-load balancing on the service nodes. But note that the selection of
|
||||
which SN will service which compute node is made at compute node boot time.
|
||||
After that, the selection of the SN for this compute node is fixed until the
|
||||
compute node is rebooted or the compute node is explicitly moved to another SN
|
||||
using the `snmove <http://localhost/fake_todo>`_ command.
|
||||
using the :doc:`snmove </guides/admin-guides/references/man1/snmove.1>` command.
|
||||
|
||||
To use Service Node pools, you need to architect your network such that all of
|
||||
the compute nodes and service nodes in a particular pool are on the same flat
|
||||
network. If you don't want the management node to respond to manage some of
|
||||
the compute nodes, it shouldn't be on that same flat network. The
|
||||
site, dhcpinterfaces attribute should be set such that the SNs' DHCP daemon
|
||||
``site`` table, ``dhcpinterfaces`` attribute should be set such that the SNs' DHCP daemon
|
||||
only listens on the NIC that faces the compute nodes, not the NIC that faces
|
||||
the MN. This avoids some timing issues when the SNs are being deployed (so
|
||||
that they don't respond to each other before they are completely ready). You
|
||||
also need to make sure the `networks <http://localhost/fake_todo>`_ table
|
||||
also need to make sure the :doc:`networks </guides/admin-guides/references/man5/networks.5>` table
|
||||
accurately reflects the physical network structure.
|
||||
|
||||
To define a list of service nodes that support a set of compute nodes, set the
|
||||
servicenode attribute to a comma-delimited list of the service nodes. When
|
||||
running an xCAT command like xdsh or updatenode for compute nodes, the list
|
||||
``servicenode`` attribute to a comma-delimited list of the service nodes. When
|
||||
running an xCAT command like ``xdsh`` or ``updatenode`` for compute nodes, the list
|
||||
will be processed left to right, picking the first service node on the list to
|
||||
run the command. If that service node is not available, then the next service
|
||||
node on the list will be chosen until the command is successful. Errors will
|
||||
@@ -201,10 +198,10 @@ service nodes as we do below.
|
||||
|
||||
When using service node pools, the intent is to have the service node that
|
||||
responds first to the compute node's DHCP request during boot also be the
|
||||
xcatmaster, the tftpserver, and the NFS/http server for that node. Therefore,
|
||||
the xcatmaster and nfsserver attributes for nodes should not be set. When
|
||||
nodeset is run for the compute nodes, the service node interface on the
|
||||
network to the compute nodes should be defined and active, so that nodeset
|
||||
``xcatmaster``, the ``tftpserver``, and the NFS/http server for that node. Therefore,
|
||||
the ``xcatmaster`` and ``nfsserver`` attributes for nodes should not be set. When
|
||||
``nodeset`` is run for the compute nodes, the service node interface on the
|
||||
network to the compute nodes should be defined and active, so that ``nodeset``
|
||||
will default those attribute values to the "node ip facing" interface on that
|
||||
service node.
|
||||
|
||||
@@ -213,30 +210,29 @@ For example: ::
|
||||
chdef -t node compute1 servicenode=sn1,sn2 xcatmaster="" nfsserver=""
|
||||
chdef -t node compute2 servicenode=sn2,sn1 xcatmaster="" nfsserver=""
|
||||
|
||||
You need to set the sharedtftp site attribute to 0 so that the SNs will not
|
||||
automatically mount the ``/tftpboot`` directory from the management node:
|
||||
::
|
||||
You need to set the ``sharedtftp`` site attribute to ``0`` so that the SNs will not
|
||||
automatically mount the ``/tftpboot`` directory from the management node: ::
|
||||
|
||||
chdef -t site clustersite sharedtftp=0
|
||||
|
||||
For stateful (diskful) installs, you will need to use a local ``/install`` directory on each service node. The ``/install/autoinst/node`` files generated by nodeset will contain values specific to that service node for correctly installing the nodes. ::
|
||||
For stateful (diskful) installs, you will need to use a local ``/install`` directory on each service node. The ``/install/autoinst/node`` files generated by ``nodeset`` will contain values specific to that service node for correctly installing the nodes. ::
|
||||
|
||||
chdef -t site clustersite installloc=""
|
||||
|
||||
With this setting, you will need to remember to rsync your ``/install``
|
||||
With this setting, you will need to remember to ``rsync`` your ``/install``
|
||||
directory from the xCAT management node to the service nodes anytime you
|
||||
change your ``/install/postscripts``, custom osimage files, os repositories,
|
||||
or other directories. It is best to exclude the ``/install/autoinst`` directory
|
||||
from this rsync.
|
||||
from this ``rsync``.
|
||||
|
||||
::
|
||||
|
||||
rsync -auv --exclude 'autoinst' /install sn1:/
|
||||
|
||||
Note: If your service nodes are stateless and site.sharedtftp=0, if you reboot
|
||||
any service node when using servicenode pools, any data written to the local
|
||||
``/tftpboot`` directory of that SN is lost. You will need to run nodeset for
|
||||
all of the compute nodes serviced by that SN again.
|
||||
.. note:: If your service nodes are stateless and ``site.sharedtftp=0``, if you reboot
|
||||
any service node when using servicenode pools, any data written to the local
|
||||
``/tftpboot`` directory of that SN is lost. You will need to run ``nodeset`` for
|
||||
all of the compute nodes serviced by that SN again.
|
||||
|
||||
For additional information about service node pool related settings in the
|
||||
networks table, see ref: networks table, see :ref:`setup_networks_table_label`.
|
||||
@@ -246,13 +242,13 @@ Conserver and Monserver and Pools
|
||||
|
||||
The support of conserver and monserver with Service Node Pools is still not
|
||||
supported. You must explicitly assign these functions to a service node using
|
||||
the nodehm.conserver and noderes.monserver attribute as above.
|
||||
the ``nodehm.conserver`` and ``noderes.monserver`` attribute as above.
|
||||
|
||||
Setup Site Table
|
||||
----------------
|
||||
|
||||
If you are not using the NFS-based statelite method of booting your compute
|
||||
nodes, set the installloc attribute to ``/install``. This instructs the
|
||||
nodes, set the ``installloc`` attribute to ``/install``. This instructs the
|
||||
service node to mount ``/install`` from the management node. (If you don't do
|
||||
this, you have to manually sync ``/install`` between the management node and
|
||||
the service nodes.) ::
|
||||
@@ -261,25 +257,25 @@ the service nodes.) ::
|
||||
|
||||
For IPMI controlled nodes, if you want the out-of-band IPMI operations to be
|
||||
done directly from the management node (instead of being sent to the
|
||||
appropriate service node), set site.ipmidispatch=n.
|
||||
appropriate service node), set ``site.ipmidispatch=n``.
|
||||
|
||||
If you want to throttle the rate at which nodes are booted up, you can set the
|
||||
following site attributes:
|
||||
|
||||
|
||||
* syspowerinterval
|
||||
* syspowermaxnodes
|
||||
* powerinterval (system p only)
|
||||
* ``syspowerinterval``
|
||||
* ``syspowermaxnodes``
|
||||
* ``powerinterval`` (system p only)
|
||||
|
||||
See the `site table man page <http://localhost/fack_todo>`_ for details.
|
||||
See the :doc:`site table man page </guides/admin-guides/references/man5/site.5>` for details.
|
||||
|
||||
.. _setup_networks_table_label:
|
||||
|
||||
Setup networks Table
|
||||
--------------------
|
||||
|
||||
All networks in the cluster must be defined in the networks table. When xCAT
|
||||
is installed, it runs makenetworks, which creates an entry in the networks
|
||||
All networks in the cluster must be defined in the ``networks`` table. When xCAT
|
||||
is installed, it runs ``makenetworks``, which creates an entry in the ``networks``
|
||||
table for each of the networks the management node is on. You need to add
|
||||
entries for each network the service nodes use to communicate to the compute
|
||||
nodes.
|
||||
@@ -288,28 +284,27 @@ For example: ::
|
||||
|
||||
mkdef -t network net1 net=10.5.1.0 mask=255.255.255.224 gateway=10.5.1.1
|
||||
|
||||
If you want to set the nodes' xcatmaster as the default gateway for the nodes,
|
||||
the gateway attribute can be set to keyword "<xcatmaster>". In this case, xCAT
|
||||
code will automatically substitute the IP address of the node's xcatmaster for
|
||||
the keyword. Here is an example:
|
||||
::
|
||||
If you want to set the nodes' ``xcatmaster`` as the default gateway for the nodes,
|
||||
the ``gateway`` attribute can be set to keyword ``<xcatmaster>``. In this case, xCAT
|
||||
code will automatically substitute the IP address of the node's ``xcatmaster`` for
|
||||
the keyword. Here is an example: ::
|
||||
|
||||
mkdef -t network net1 net=10.5.1.0 mask=255.255.255.224 gateway=<xcatmaster>
|
||||
|
||||
The ipforward attribute should be enabled on all the xcatmaster nodes that
|
||||
will be acting as default gateways. You can set ipforward to 1 in the
|
||||
servicenode table or add the line "net.ipv4.ip_forward = 1" in file
|
||||
``/etc/sysctl.conf`` and then run "sysctl -p /etc/sysctl.conf" manually to
|
||||
The ``ipforward`` attribute should be enabled on all the ``xcatmaster`` nodes that
|
||||
will be acting as default gateways. You can set ``ipforward`` to ``1`` in the
|
||||
``servicenode`` table or add the line ``net.ipv4.ip_forward = 1`` in file
|
||||
``/etc/sysctl.conf`` and then run ``sysctl -p /etc/sysctl.conf`` manually to
|
||||
enable the ipforwarding.
|
||||
|
||||
Note:If using service node pools, the networks table dhcpserver attribute can
|
||||
be set to any single service node in your pool. The networks tftpserver, and
|
||||
nameserver attributes should be left blank.
|
||||
.. note:: If using service node pools, the ``networks`` table ``dhcpserver`` attribute can
|
||||
be set to any single service node in your pool. The networks ``tftpserver``, and
|
||||
``nameserver`` attributes should be left blank.
|
||||
|
||||
Verify the Tables
|
||||
--------------------
|
||||
|
||||
To verify that the tables are set correctly, run lsdef on the service nodes,
|
||||
To verify that the tables are set correctly, run ``lsdef`` on the service nodes,
|
||||
compute1, compute2: ::
|
||||
|
||||
lsdef service,compute1,compute2
|
||||
@@ -318,22 +313,21 @@ Add additional adapters configuration script (optional)
|
||||
------------------------------------------------------------
|
||||
|
||||
It is possible to have additional adapter interfaces automatically configured
|
||||
when the nodes are booted. XCAT provides sample configuration scripts for
|
||||
when the nodes are booted. xCAT provides sample configuration scripts for
|
||||
ethernet, IB, and HFI adapters. These scripts can be used as-is or they can be
|
||||
modified to suit your particular environment. The ethernet sample is
|
||||
``/install/postscript/configeth``. When you have the configuration script that
|
||||
you want you can add it to the "postscripts" attribute as mentioned above. Make
|
||||
you want you can add it to the ``postscripts`` attribute as mentioned above. Make
|
||||
sure your script is in the ``/install/postscripts`` directory and that it is
|
||||
executable.
|
||||
|
||||
Note: For system p servers, if you plan to have your service node perform the
|
||||
hardware control functions for its compute nodes, it is necessary that the SN
|
||||
ethernet network adapters connected to the HW service VLAN be configured.
|
||||
.. note:: For system p servers, if you plan to have your service node perform the
|
||||
hardware control functions for its compute nodes, it is necessary that the SN
|
||||
ethernet network adapters connected to the HW service VLAN be configured.
|
||||
|
||||
Configuring Secondary Adapters
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
To configure secondary adapters, see `Configuring_Secondary_Adapters
|
||||
<http://localhost/fake_todo>`_
|
||||
To configure secondary adapters, see :doc:`Configure Additional Network Interfaces </guides/admin-guides/manage_clusters/ppc64le/diskless/customize_image/network/cfg_network_adapter>`
|
||||
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ The ``mlnxofed_ib_install`` is a sample script intended to assist with the insta
|
||||
| | || option list. |
|
||||
| | || |
|
||||
| | || If nothing is specified, xCAT passes the the following |
|
||||
| | || ``--without-32bit --with out-fw-update --force`` |
|
||||
| | || ``--without-32bit --without-fw-update --force`` |
|
||||
+---------+------------------+----------------------------------------------------------+
|
||||
|``-i`` | For diskless || The image root path of the diskless image |
|
||||
| | || |
|
||||
|
||||
@@ -6,9 +6,9 @@ In xCAT, the Operation System provisioning over network is heavily relying on th
|
||||
|
||||
#. Tuning MaxRequestWorkers directive
|
||||
|
||||
By default, httpd is configured to use ``prefork`` module for **MPM**, which has a limit of 256 simultaneous requests. If any slow httpd response issue was hit during OS provisioning, you can increase **MaxRequestWorkers** directive for greater performance.
|
||||
By default, httpd is configured to use ``prefork`` module for **MPM**, which has a limit of 256 simultaneous requests. If slow httpd response observed during OS provisioning, you can increase **MaxRequestWorkers** directive for better performance.
|
||||
|
||||
For example, to avoid some nodes provisioning failure when rebooting all nodes in a large hierarchy stateless cluster ( one service node is serving 270 compute nodes ). It is suggested to increased the value from 256 to 1000.
|
||||
For example, to avoid some nodes provisioning failure when rebooting all nodes in a large hierarchy stateless cluster ( one service node is serving 270 compute nodes ), increase the value from 256 to 1000.
|
||||
|
||||
On Red Hat, change (or add) these directives in
|
||||
::
|
||||
@@ -24,9 +24,9 @@ For example, to avoid some nodes provisioning failure when rebooting all nodes i
|
||||
|
||||
#. Having httpd Cache the Files It Is Serving
|
||||
|
||||
Note: this information was contributed by Jonathan Dye and is provided here as an example. The details may have to be changed for distro or apache version.
|
||||
.. note:: this information was contributed by Jonathan Dye and is provided here as an example. The details may have to be changed for distro or apache version.
|
||||
|
||||
This is simplest if you set noderes.nfsserver to a separate apache server, and then you can configure it to reverse proxy and cache. For some reason mod_mem_cache doesn't seem to behave as expected, so you can use mod_disk_cache to achieve a similar result: make a tmpfs on the apache server and configure its mountpoint to be the directory that CacheRoot points to. Also tell it to ignore /install/autoinst since the caching settings are really aggressive. Do a recursive wget to warm the cache and watch the tmpfs fill up. Then do a bunch of kickstart installs. Before this, the apache server on the xcat management node may have been a bottleneck during kickstart installs. After this change, it no longer should be.
|
||||
This is simplest if you set ``noderes.nfsserver`` to a separate apache server, and then you can configure it to reverse proxy and cache. For some reason ``mod_mem_cache`` doesn't seem to behave as expected, so you can use ``mod_disk_cache`` to achieve a similar result: make a ``tmpfs`` on the apache server and configure its mountpoint to be the directory that ``CacheRoot`` points to. Also tell it to ignore ``/install/autoinst`` since the caching settings are really aggressive. Do a recursive ``wget`` to warm the cache and watch the ``tmpfs`` fill up. Then do a bunch of kickstart installs. Before this, the apache server on the xcat management node may have been a bottleneck during kickstart installs. After this change, it no longer should be.
|
||||
|
||||
Here is the apache config file:
|
||||
::
|
||||
|
||||
@@ -217,9 +217,9 @@ It can be used as an example script to access and control xCAT resources. From t
|
||||
./xcatws-test.sh -u root -p cluster -h <FQDN of xCAT MN> -t
|
||||
./xcatws-test.sh -u root -p cluster -h <FQDN of xCAT MN> -c -t
|
||||
|
||||
But for exploration and experimentation, you can make API calls from your browser or by using the **curl** command.
|
||||
But for exploration and experimentation, you can make API calls from your browser or by using the ``curl`` command.
|
||||
|
||||
To make an API call from your browser, use the desired URL from this document. To simplify the test step, all the examples for the resources use 'curl -k' for unsecure http connection and use the 'username+password' to authenticate the user. ::
|
||||
To make an API call from your browser, use the desired URL from this document. To simplify the test step, all the examples for the resources use ``curl -k`` for unsecure http connection and use the 'username+password' to authenticate the user. ::
|
||||
|
||||
curl -X GET -k 'https://myserver/xcatws/nodes?userName=xxx&userPW=xxx&pretty=1'
|
||||
|
||||
@@ -276,5 +276,4 @@ References
|
||||
* General JSON: http://www.json.org/
|
||||
* JSON wrapping: http://search.cpan.org/~makamaka/JSON-2.27/lib/JSON.pm
|
||||
* Apache CGI: http://httpd.apache.org/docs/2.2/howto/cgi.html
|
||||
* Perl CGI: http://perldoc.perl.org/CGI.html
|
||||
|
||||
|
||||
@@ -101,25 +101,25 @@ To support clone, add 'otherpkglist' and 'otherpkgdir' attributes to the image d
|
||||
|
||||
chdef -t osimage -o <osimage-name> otherpkglist=/opt/xcat/share/xcat/install/rh/sysclone.rhels6.x86_64.otherpkgs.pkglist
|
||||
chdef -t osimage -o <osimage-name> -p otherpkgdir=/install/post/otherpkgs/rhels6.4/x86_64
|
||||
updatenode <golden-cilent> -S
|
||||
updatenode <golden-client> -S
|
||||
|
||||
* **[CentOS6.3 and x86_64]**::
|
||||
|
||||
chdef -t osimage -o <osimage-name> otherpkglist=/opt/xcat/share/xcat/install/rh/sysclone.rhels6.x86_64.otherpkgs.pkglist
|
||||
chdef -t osimage -o <osimage-name> -p otherpkgdir=/install/post/otherpkgs/CentOS6.3/x86_64
|
||||
updatenode <golden-cilent> -S
|
||||
updatenode <golden-client> -S
|
||||
|
||||
* **[SLES11.3 and x86_64]**::
|
||||
|
||||
chdef -t osimage -o <osimage-name> otherpkglist=/opt/xcat/share/xcat/install/sles/sysclone.sles11.x86_64.otherpkgs.pkglist
|
||||
chdef -t osimage -o <osimage-name> -p otherpkgdir=/install/post/otherpkgs/SLES11.3/x86_64
|
||||
updatenode <golden-cilent> -S
|
||||
updatenode <golden-client> -S
|
||||
|
||||
* **[RH6.3 and ppc64]**::
|
||||
|
||||
chdef -t osimage -o <osimage-name> otherpkglist=/opt/xcat/share/xcat/install/rh/sysclone.rhels6.ppc64.otherpkgs.pkglist
|
||||
chdef -t osimage -o <osimage-name> -p otherpkgdir=/install/post/otherpkgs/rhels6.3/ppc64
|
||||
updatenode <golden-cilent> -S
|
||||
updatenode <golden-client> -S
|
||||
|
||||
*[Note]: If you install systemimager RPMs on CentOS 6.5 node by above steps, you maybe hit a failure. This is a known issue with CentOS6.5. Refer to known issue section for help.*
|
||||
|
||||
|
||||
+1
-1
@@ -59,7 +59,7 @@ author = u'IBM Corporation'
|
||||
# The short X.Y version.
|
||||
version = '2'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '2.15.0'
|
||||
release = '2.15.1'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
||||
@@ -137,9 +137,9 @@ Add links to refer other web page is a very common way in writing document, it'
|
||||
|
||||
* **Add an External Link**
|
||||
|
||||
Link to an external web page: `google <http://www.goole.com>`_: ::
|
||||
Link to an external web page: `google <http://www.google.com>`_: ::
|
||||
|
||||
`google <http://www.goole.com>`_
|
||||
`google <http://www.google.com>`_
|
||||
|
||||
..
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ The partition file must follow the partitioning syntax of the respective install
|
||||
* Use yast2 autoyast in GUI or CLI mode to customize the installation options and create autoyast file
|
||||
* Use yast2 clone_system to create autoyast configuration file /root/autoinst.xml to clone an existing system
|
||||
|
||||
* Ubuntu: `Preseed documentation <https://www.debian.org/releases/stable/i386/apbs04.html.en#preseed-partman>`_
|
||||
* Ubuntu: `Preseed documentation <https://www.debian.org/releases/stable/i386/apbs04.en.html#preseed-partman>`_
|
||||
|
||||
* For detailed information see the files ``partman-auto-recipe.txt`` and ``partman-auto-raid-recipe.txt`` included in the debian-installer package. Both files are also available from the debian-installer source repository.
|
||||
|
||||
|
||||
+11
-12
@@ -4,7 +4,7 @@ Enable kdump Over Ethernet
|
||||
Overview
|
||||
--------
|
||||
|
||||
kdump is an feature of the Linux kernel that allows the system to be booted from the context of another kernel. This second kernel reserves a small amount of memory and its only purpose is to capture the core dump in the event of a kernel crash. The ability to analyze the core dump helps to determine causes of system failures.
|
||||
``kdump`` is an feature of the Linux kernel that allows the system to be booted from the context of another kernel. This second kernel reserves a small amount of memory and its only purpose is to capture the core dump in the event of a kernel crash. The ability to analyze the core dump helps to determine causes of system failures.
|
||||
|
||||
|
||||
xCAT Interface
|
||||
@@ -22,7 +22,7 @@ The following attributes of an osimage should be modified to enable ``kdump``:
|
||||
Configure the ``pkglist`` file
|
||||
------------------------------
|
||||
|
||||
The ``pkglist`` for the osimage needs to include the appropriate RPMs. The following list of RPMs are provided as a sample, always refer to the Operating System specific documentataion to ensure the required packages are there for ``kdump`` support.
|
||||
The ``pkglist`` for the osimage needs to include the appropriate RPMs. The following list of RPMs are provided as a sample, always refer to the Operating System specific documentation to ensure the required packages are there for ``kdump`` support.
|
||||
|
||||
* **[RHELS]** ::
|
||||
|
||||
@@ -53,7 +53,7 @@ Run ``packimage`` to update the diskless image with the changes.
|
||||
The ``postinstall`` file
|
||||
------------------------
|
||||
|
||||
The kdump will create a new initrd which used in the dumping stage. The ``/tmp`` or ``/var/tmp`` directory will be used as the temporary directory. These 2 directory only are allocated 10M space by default. You need to enlarge it to 200M. Modify the postinstall file to increase ``/tmp`` space.
|
||||
The ``kdump`` will create a new initrd which is used in the dumping stage. The ``/tmp`` or ``/var/tmp`` directory will be used as the temporary directory. These two directories are only allocated 10M space by default. You need to enlarge it to 200M. Modify the postinstall file to increase ``/tmp`` space.
|
||||
|
||||
* **[RHELS]** ::
|
||||
|
||||
@@ -70,7 +70,7 @@ The kdump will create a new initrd which used in the dumping stage. The ``/tmp``
|
||||
The ``dump`` attribute
|
||||
----------------------
|
||||
|
||||
To support kernel dumps, the ``dump`` attribute **must** be set on the osimage definition. If not set, kdump service will not be enabled. The ``dump`` attribute defines the NFS remote path where the crash information is to be stored.
|
||||
To support kernel dumps, the ``dump`` attribute **must** be set in the osimage definition. If not set, ``kdump`` service will not be enabled. The ``dump`` attribute defines the NFS remote path where the crash information is to be stored.
|
||||
|
||||
Use the ``chdef`` command to set a value of the ``dump`` attribute: ::
|
||||
|
||||
@@ -80,7 +80,7 @@ If the NFS server is the Service Node or Management Node, the server can be left
|
||||
|
||||
chdef -t osimage <image name> dump=nfs:///<kdump_path>
|
||||
|
||||
**Note:** Only NFS is currently supported as a storage location. Make sure the NFS remote path(``nfs://<nfs_server_ip>/<kdump_path>``) is exported and it is read-writeable to the node where kdump service is enabled.
|
||||
.. note:: Only NFS is currently supported as a storage location. Make sure the NFS remote path (``nfs://<nfs_server_ip>/<kdump_path>``) is exported and it is read-writeable on the node where ``kdump`` service is enabled.
|
||||
|
||||
|
||||
The ``crashkernelsize`` attribute
|
||||
@@ -102,18 +102,18 @@ For setting specific sizes, use the following example:
|
||||
|
||||
chdef -t osimage <image name> crashkernelsize=<size>@32M
|
||||
|
||||
**Notes**: the value of the ``crashkernelsize`` depends on the total physical memory size on the machine. For more about size, refer to `Appedix`_
|
||||
.. note:: The value of the ``crashkernelsize`` depends on the total physical memory size on the machine. For more about size, refer to `Appedix`_
|
||||
|
||||
If kdump start error like this: ::
|
||||
If ``kdump`` start displays error like this: ::
|
||||
|
||||
Your running kernel is using more than 70% of the amount of space you reserved for kdump, you should consider increasing your crashkernel
|
||||
|
||||
The ``crashkernelsize`` is not large enough, you should change the ``crashkernelsize`` larger until the error message disappear.
|
||||
The ``crashkernelsize`` is not large enough, you should increase the ``crashkernelsize`` until the error message disappears.
|
||||
|
||||
The ``enablekdump`` postscript
|
||||
------------------------------
|
||||
|
||||
xCAT provides a postscript ``enablekdump`` that can be added to the Nodes to automatically start the ``kdump`` service when the node boots. Add to the nodes using the following command: ::
|
||||
xCAT provides a postscript ``enablekdump`` that can be added to the node definition to automatically start the ``kdump`` service when the node boots. ::
|
||||
|
||||
chdef -t node <node range> -p postscripts=enablekdump
|
||||
|
||||
@@ -147,13 +147,13 @@ Once the system has returned from recovering the crash, you can analyze the kern
|
||||
|
||||
#. Locate the recent vmcore dump file.
|
||||
|
||||
#. Locate the kernel file for the crash server. The kernel is under ``/tftpboot/xcat/netboot/<OS name="">/<ARCH>/<profile>/kernel`` on the managenent node.
|
||||
#. Locate the kernel file for the crash server. The kernel is under ``/tftpboot/xcat/netboot/<OS name="">/<ARCH>/<profile>/kernel`` on the management node.
|
||||
|
||||
#. Once you have located a vmcore dump file and kernel file, call ``crash``: ::
|
||||
|
||||
crash <vmcore_dump_file> <kernel_file>
|
||||
|
||||
**Note:** If ``crash`` cannot find any files, make sure you have the ``kernel-debuginfo`` package installed.
|
||||
.. note:: If ``crash`` cannot find any files, make sure you have the ``kernel-debuginfo`` package installed.
|
||||
|
||||
Appedix
|
||||
-------
|
||||
@@ -170,4 +170,3 @@ Appedix
|
||||
|
||||
* http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/s1-kdump-crash.htmlRHELdocument
|
||||
|
||||
* http://www.novell.com/support/kb/doc.php?id=3374462SLESdocument
|
||||
|
||||
+2
-2
@@ -28,7 +28,7 @@ Define Adapters in the nics table
|
||||
|
||||
#. Data NIC ``eth1`` is not install NIC, configure ``eth1`` into ``nics`` table ::
|
||||
|
||||
chdef cn1 nicips.eth1="13.1.89.7" nicnetworks.eth1="net13" nictypes.eth1="Ethernet" nichostnamesuffixes.eth1=-eth2
|
||||
chdef cn1 nicips.eth1="13.1.89.7" nicnetworks.eth1="net13" nictypes.eth1="Ethernet" nichostnamesuffixes.eth1=-eth1
|
||||
|
||||
Update /etc/hosts
|
||||
~~~~~~~~~~~~~~~~~
|
||||
@@ -66,7 +66,7 @@ Configure adapters with static IPs
|
||||
|
||||
updatenode cn1 -P "confignetwork"
|
||||
|
||||
**Notes:** Option "-s" writes the install NIC's information into configuration file for persistence. All other NIC's data defined in ``nics`` table will be written also. Without option "-s", ``confignetwork`` only configures all NIC's data defined in ``nics`` table.
|
||||
.. note:: Option ``-s`` writes the install NIC's information into configuration file for persistence. All other NIC's data defined in ``nics`` table will be written also. Without option ``-s``, ``confignetwork`` only configures all NIC's data defined in ``nics`` table.
|
||||
|
||||
Check result
|
||||
~~~~~~~~~~~~
|
||||
|
||||
+4
@@ -19,3 +19,7 @@ Use ``nicextraparams`` to customize attributes in NIC configuration file. For ex
|
||||
HWADDR=42:f5:0a:05:6a:09
|
||||
MTU=1456
|
||||
|
||||
#. Example to add `nicextraparams` to `bond` interface ::
|
||||
|
||||
chdef cn1 nicextraparams.bond0='BONDING_OPTS="mode=active-backup;abc=100" MTU=6400 XYZ="4800" IOP="mode=1 phase=2"'
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ Examples for xdsh
|
||||
|
||||
- To run the ``ps`` command on node targets node1 and run the remote command with the ``-v`` and ``-t`` flag, enter: ::
|
||||
|
||||
xdsh node1,node2 -o"-v -t" ps =item *
|
||||
xdsh node1,node2 -o "-v -t" ps
|
||||
|
||||
- To execute the commands contained in myfile in the XCAT context on several node targets, with a fanout of 1, enter: ::
|
||||
|
||||
|
||||
+5
-5
@@ -31,7 +31,7 @@ Partitioning disk file(For Ubuntu only)
|
||||
.. include:: ../../../common/deployment/cfg_partition.rst
|
||||
:start-after: BEGIN_Partition_Disk_File_ubuntu_only
|
||||
:end-before: END_Partition_Disk_File_ubuntu_only
|
||||
|
||||
|
||||
Additional preseed configuration file(For Ubuntu only)
|
||||
``````````````````````````````````````````````````````
|
||||
.. include:: ../../../common/deployment/cfg_partition.rst
|
||||
@@ -64,14 +64,14 @@ Associate partition script with osimage
|
||||
:start-after: BEGIN_Partition_Definition_Script_Associate_partition_script_with_osimage_common
|
||||
:end-before: END_Partition_Definition_Script_Associate_partition_script_with_osimage_common
|
||||
|
||||
Partitioning disk script(For Ubuntu only)
|
||||
`````````````````````````````````````````
|
||||
Partitioning disk script (For Ubuntu only)
|
||||
``````````````````````````````````````````
|
||||
.. include:: ../../../common/deployment/cfg_partition.rst
|
||||
:start-after: BEGIN_Partition_Disk_Script_ubuntu_only
|
||||
:end-before: END_Partition_Disk_Script_ubuntu_only
|
||||
|
||||
Additional preseed configuration script(For Ubuntu only)
|
||||
````````````````````````````````````````````````````````
|
||||
Additional preseed configuration script (For Ubuntu only)
|
||||
`````````````````````````````````````````````````````````
|
||||
.. include:: ../../../common/deployment/cfg_partition.rst
|
||||
:start-after: BEGIN_Additional_preseed_configuration_script_ubuntu_only
|
||||
:end-before: END_Additional_preseed_configuration_script_ubuntu_only
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
See :doc:`reventlog manpage </guides/admin-guides/references/man1/reventlog.1>` for more information.
|
||||
|
||||
The ``reventlog`` command can be used to display and clear event log information on the service processor, or Baseboard Management Controller (BMC), of a physical machine.
|
||||
The ``reventlog`` command can be used to display and clear event log information on the service processor, or Baseboard Management Controller (BMC), of a physical machine. OpenBMC based servers need the `IBM OpenBMC tool <http://www.ibm.com/support/customercare/sas/f/lopdiags/scaleOutLCdebugtool.html#OpenBMC>`_ to obtain more detailed logging messages.
|
||||
|
||||
For example, to display all event log entries for node ``cn5``: ::
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ SYNOPSIS
|
||||
|
||||
\ **bmcdiscover**\ [\ **-v | -**\ **-version**\ ]
|
||||
|
||||
\ **bmcdiscover**\ [\ **-**\ **-sn**\ \ *SN_nodename*\ ] [\ **-s**\ \ *scan_method*\ ] [\ **-u**\ \ *bmc_user*\ ] [\ **-p**\ \ *bmc_passwd*\ ] [\ **-z**\ ] [\ **-w**\ ] \ **-**\ **-range**\ \ *ip_ranges*\
|
||||
\ **bmcdiscover**\ \ **-**\ **-range**\ \ *ip_ranges*\ [\ **-**\ **-sn**\ \ *SN_nodename*\ ] [\ **-s**\ \ *scan_method*\ ] [\ **-u**\ \ *bmc_user*\ ] [\ **-p**\ \ *bmc_passwd*\ ] [\ **-z**\ ] [\ **-w**\ ]
|
||||
|
||||
|
||||
***********
|
||||
@@ -35,9 +35,9 @@ The \ **bmcdiscover**\ command will discover Baseboard Management Controllers (
|
||||
|
||||
The command uses \ **nmap**\ to scan active nodes over a specified IP range. The IP range format should be a format that is acceptable by \ **nmap**\ .
|
||||
|
||||
The \ **bmcdiscover**\ command can also obtain some information about the BMC. (Check username/password, IP address source, DHCP/static configuration)
|
||||
\ **Note:**\ The scan method currently supported is \ **nmap**\ .
|
||||
|
||||
Note: The scan method currently support is \ **nmap**\ .
|
||||
\ **Note:**\ Starting on January 1, 2020, some newly shipped systems will require the default BMC password to be changed before they can be managed by xCAT. \ **bmcdiscover**\ will not be able to discover such systems. Run \ */opt/xcat/share/xcat/scripts/BMC_change_password.sh*\ script to change the default password for BMCs in specified range, then rerun \ **bmcdiscover**\ with \ **-p "new bmc password"**\ flag to discover systems with the changed password.
|
||||
|
||||
|
||||
*******
|
||||
@@ -48,13 +48,13 @@ OPTIONS
|
||||
|
||||
\ **-**\ **-range**\
|
||||
|
||||
Specify one or more IP ranges acceptable to \ **nmap**\ . IP range can be hostnames, IP addresses, networks, etc. A single IP address (10.1.2.3), several IPs with commas (10.1.2.3,10.1.2.10), Ip range with "-" (10.1.2.0-100) or an IP range (10.1.2.0/24) can be specified. If the range is very large, the \ **bmcdiscover**\ command may take a long time to return.
|
||||
Specify one or more IP ranges acceptable to \ **nmap**\ . IP range can be hostnames, IP addresses, networks, etc. A single IP address (10.1.2.3), several IPs with commas (10.1.2.3,10.1.2.10), IP range with "-" (10.1.2.0-100) or an IP range (10.1.2.0/24) can be specified. If the range is very large, the \ **bmcdiscover**\ command may take a long time to return.
|
||||
|
||||
|
||||
|
||||
\ **-**\ **-sn**\
|
||||
|
||||
Specify one or more service nodes on which bmcdiscover will run. In hierarchical cluster, the MN may not be able to access the BMC of CN directly, but SN can. With this option, \ **bmcdiscover**\ will be dispatched to the specified SNs. Then, the nodename of the service node that \ **bmcdiscover**\ is running on will be set to the 'servicenode' attribute of the discovered BMC node.
|
||||
Specify one or more service nodes on which \ **bmcdiscover**\ will run. In hierarchical cluster, the MN may not be able to access the BMC of CN directly, but SN can. In that case, \ **bmcdiscover**\ will be dispatched to the specified SNs. Then, the nodename of the service node that \ **bmcdiscover**\ is running on will be set to the 'servicenode' attribute of the discovered BMC node.
|
||||
|
||||
|
||||
|
||||
@@ -76,12 +76,6 @@ OPTIONS
|
||||
|
||||
|
||||
|
||||
\ **-i|-**\ **-bmcip**\
|
||||
|
||||
BMC IP address.
|
||||
|
||||
|
||||
|
||||
\ **-u|-**\ **-bmcuser**\
|
||||
|
||||
BMC user name.
|
||||
@@ -122,7 +116,7 @@ EXAMPLES
|
||||
********
|
||||
|
||||
|
||||
1. To get all responding BMCs from IP range "10.4.23.100-254" and 50.3.15.1-2":
|
||||
1. To get all responding BMCs from IP range "10.4.23.100-254" and "50.3.15.1-2":
|
||||
|
||||
|
||||
.. code-block:: perl
|
||||
|
||||
@@ -29,6 +29,16 @@ DESCRIPTION
|
||||
***********
|
||||
|
||||
|
||||
\ **Note:**\ The command \ **nodechmac**\ has been deprecated. To change the MAC address of the node:
|
||||
|
||||
|
||||
.. code-block:: perl
|
||||
|
||||
makedhcp -d <nodename>
|
||||
chdef -t node -o <nodename> mac=<new-mac>
|
||||
makedhcp <nodename>
|
||||
|
||||
|
||||
The \ **nodechmac**\ command changes the MAC address for provisioned node's network interface.
|
||||
|
||||
You can use this command to keep an existing node configuration. For example, if an existing node has hardware problems, the replacement node can use the old configurations. By using the nodechmac command, the node name and network settings of the old node can be used by the new node.
|
||||
|
||||
@@ -31,7 +31,7 @@ DESCRIPTION
|
||||
|
||||
The \ **nodepurge**\ automatically removes all nodes from the database and any related configurations used by the node.
|
||||
|
||||
After the nodes are removed, the configuration files related to these nodes are automatically updated, including the following files: /etc/hosts, DNS, DHCP. Any kits that are used by the nodes are triggered to automatically update kit configuration and services.
|
||||
After the nodes are removed, the configuration files related to these nodes are automatically updated, including the following files: \ */etc/hosts*\ , DNS, DHCP. Any kits that are used by the nodes are triggered to automatically update kit configuration and services. Any related configuration files from \ */install/autoinst*\ are also removed.
|
||||
|
||||
|
||||
*******
|
||||
@@ -39,17 +39,11 @@ OPTIONS
|
||||
*******
|
||||
|
||||
|
||||
\ **-h|-**\ **-help**\
|
||||
\ **-h|-**\ **-help**\ Display usage message.
|
||||
|
||||
Display usage message.
|
||||
\ **-v|-**\ **-version**\ Command Version
|
||||
|
||||
\ **-v|-**\ **-version**\
|
||||
|
||||
Command Version
|
||||
|
||||
\ *noderange*\
|
||||
|
||||
The nodes to be removed.
|
||||
\ *noderange*\ The nodes to be removed.
|
||||
|
||||
|
||||
************
|
||||
@@ -67,7 +61,7 @@ EXAMPLES
|
||||
********
|
||||
|
||||
|
||||
To remove nodes compute-000 and compute-001, use the following command:
|
||||
To remove nodes compute-000 and compute-001:
|
||||
|
||||
|
||||
.. code-block:: perl
|
||||
|
||||
@@ -45,7 +45,7 @@ DESCRIPTION
|
||||
***********
|
||||
|
||||
|
||||
The rmvm command removes the partitions specified in noderange. If noderange is an CEC, all the partitions associated with that CEC will be removed. Note that removed partitions are automatically removed from the xCAT database. For IVM-managed systems, care must be taken to not remove the VIOS partition, or all the associated partitions will be removed as well.
|
||||
The \ **rmvm**\ command removes the partitions specified in \ *noderange*\ . If \ *noderange*\ is an CEC, all the partitions associated with that CEC will be removed. Note that removed partitions are automatically removed from the xCAT database. For IVM-managed systems, care must be taken to not remove the VIOS partition, or all the associated partitions will be removed as well.
|
||||
|
||||
For DFM-managed (short For Direct FSP Management mode) normal power machines, only partitions can be removed. No options is needed.
|
||||
|
||||
@@ -65,7 +65,11 @@ OPTIONS
|
||||
|
||||
\ **-**\ **-service**\ Remove the service partitions of the specified CECs.
|
||||
|
||||
\ **-p**\ KVM: Purge the existence of the VM from persistent storage. This will erase all storage related to the VM in addition to removing it from the active virtualization configuration. PPC: Remove the specified partition on normal power machine.
|
||||
\ **-p**\
|
||||
|
||||
KVM: Purge the existence of the VM from persistent storage. This will erase all storage related to the VM in addition to removing it from the active virtualization configuration. Storage devices of "raw" or "block" type are not removed.
|
||||
|
||||
PPC: Remove the specified partition on normal power machine.
|
||||
|
||||
\ **-f**\ Force remove the VM, even if the VM appears to be online. This will bring down a live VM if requested.
|
||||
|
||||
|
||||
@@ -83,6 +83,10 @@ OpenBMC specific:
|
||||
|
||||
\ **rspconfig**\ \ *noderange*\ \ **sshcfg**\
|
||||
|
||||
\ **rspconfig**\ \ *noderange*\ \ **thermalmode**\
|
||||
|
||||
\ **rspconfig**\ \ *noderange*\ \ **thermalmode={default|custom|heavy_io|max_base_fan_floor}**\
|
||||
|
||||
\ **rspconfig**\ \ *noderange*\ \ **timesyncmethod**\
|
||||
|
||||
\ **rspconfig**\ \ *noderange*\ \ **timesyncmethod={manual|ntp}**\
|
||||
@@ -521,6 +525,12 @@ OPTIONS
|
||||
|
||||
|
||||
|
||||
\ **thermalmode**\
|
||||
|
||||
Display or set the thermal mode of the system to a setting, depending on your system, adapter, and cable type. After a factory reset of the system, the thermal mode setting is lost and must be reapplied. To choose the correct setting for your system, see https://www.ibm.com/support/knowledgecenter/POWER9/p9ei3/p9ei3_thermal_mode.htm [OpenBMC]
|
||||
|
||||
|
||||
|
||||
\ **timesyncmethod**\
|
||||
|
||||
Set the method for time synchronization on the BMC. [OpenBMC]
|
||||
|
||||
@@ -21,21 +21,15 @@ SYNOPSIS
|
||||
|
||||
\ **xcattest**\ [\ **-?|-h**\ ]
|
||||
|
||||
\ **xcattest**\ [\ **-f**\ \ *configure file*\ ] [\ **-b**\ \ *case bundle list*\ ]
|
||||
\ **xcattest**\ [\ **-f**\ \ *configure file*\ [\ **:System**\ ]] [\ **-l**\ [{\ **caselist|caseinfo|casenum**\ }]] [\ **-r**\ ] [\ **-q**\ ] [\ **-b**\ \ *testcase bundle list*\ ]
|
||||
|
||||
\ **xcattest**\ [\ **-f**\ \ *configure file*\ ] [\ **-t**\ \ *case list*\ ]
|
||||
\ **xcattest**\ [\ **-f**\ \ *configure file*\ [\ **:System**\ ]] [\ **-l**\ [{\ **caselist|caseinfo|casenum**\ }]] [\ **-r**\ ] [\ **-q**\ ] [\ **-t**\ \ *testcase name list*\ ]
|
||||
|
||||
\ **xcattest**\ [\ **-f**\ \ *configure file*\ ] [\ **-c**\ \ *cmd list*\ ]
|
||||
\ **xcattest**\ [\ **-f**\ \ *configure file*\ [\ **:System**\ ]] [\ **-l**\ [{\ **caselist|caseinfo|casenum**\ }]] [\ **-r**\ ] [\ **-q**\ ] [\ **-c**\ \ *testcase command list*\ ]
|
||||
|
||||
\ **xcattest**\ [\ **-b**\ \ *case bundle list*\ ] [\ **-l**\ ]
|
||||
\ **xcattest**\ [\ **-f**\ \ *configure file*\ [\ **:System**\ ]] [\ **-l**\ [{\ **caselist|caseinfo|casenum**\ }]] [\ **-r**\ ] [\ **-q**\ ] [\ **-s**\ \ *testcase filter expression*\ ]
|
||||
|
||||
\ **xcattest**\ [\ **-t**\ \ *case list*\ ] [\ **-l**\ ]
|
||||
|
||||
\ **xcattest**\ [\ **-c**\ \ *cmd list*\ ] [\ **-l**\ ]
|
||||
|
||||
\ **xcattest**\ [\ **-s**\ \ **command**\ ]
|
||||
|
||||
\ **xcattest**\ [\ **-s**\ \ **bundle**\ ]
|
||||
\ **xcattest**\ [\ **-f**\ \ *configure file*\ [\ **:System**\ ]] \ **-l bundleinfo**\
|
||||
|
||||
|
||||
***********
|
||||
@@ -43,9 +37,9 @@ DESCRIPTION
|
||||
***********
|
||||
|
||||
|
||||
The xcattest command runs test cases to verify the xCAT functions, it can be used when you want to verify the xCAT functions for whatever reason, for example, to ensure the code changes you made do not break the existing commands; to run acceptance test for new build you got; to verify the xCAT snapshot build or development build before putting it onto your production system. The xcattest command is part of the xCAT package xCAT-test.
|
||||
The \ **xcattest**\ command runs test cases to verify the xCAT functions. It can be used to ensure the code changes you made do not break the existing commands; to run acceptance test for new build you got; to verify the xCAT snapshot build or development build before putting it onto your production system. The \ **xcattest**\ command is part of the xCAT package \ *xCAT-test*\ .
|
||||
|
||||
The root directory for the xCAT-test package is /opt/xcat/share/xcat/tools/autotest/. All test cases are in the sub directory \ *testcase*\ , indexed by the xCAT command, you can add your own test cases according to the test cases format below. The subdirectory \ *bundle*\ contains all the test cases bundles definition files, you can customize or create any test cases bundle file as required. The testing result information will be written into the subdirectory \ *result*\ , the timestamps are used as the postfixes for all the result files. xCAT-test package ships two configuration files template \ *aix.conf.template*\ and \ *linux.conf.template*\ for AIX and Linux environment, you can use the template files as the start point of making your own configuration file.
|
||||
The root directory for the \ *xCAT-test*\ package is \ */opt/xcat/share/xcat/tools/autotest/*\ . All test cases are in the sub directory \ *testcase*\ , indexed by the xCAT command, you can add your own test cases according to the test cases format below. The subdirectory \ *bundle*\ contains all the test cases bundle definition files, you can customize or create any test cases bundle file as required. The testing result information will be written into the subdirectory \ *result*\ , the timestamps are used as the postfixes for all the result files. \ *xCAT-test*\ package ships two configuration file templates: \ *aix.conf.template*\ and \ *linux.conf.template*\ for AIX and Linux environment, you can use the template files as the starting point of making your own configuration file.
|
||||
|
||||
|
||||
*******
|
||||
@@ -62,37 +56,49 @@ OPTIONS
|
||||
|
||||
\ **-f**\ \ *configure file*\
|
||||
|
||||
Specifies the configuration file with full-path. xCAT supports an example config file: /opt/xcat/share/xcat/tools/autotest/linux.conf.template
|
||||
Specifies the configuration file with full-path. If not specified, an example config file: \ */opt/xcat/share/xcat/tools/autotest/linux.conf.template*\ is used by default. If \ **System**\ tag is used, only \ *[System]*\ section in the configuration file will be used. If \ **System**\ is not used, all other sections of the configuration file will be used, like \ *[Table]*\ , \ *[Object]*\ , etc.
|
||||
|
||||
|
||||
|
||||
\ **-b**\ \ *case bundle list*\
|
||||
\ **-b**\ \ *testcase bundle list*\
|
||||
|
||||
Comma separated list of test cases bundle files, each test cases bundle can contain multiple lines and each line for one test case name. The bundle files should be listed in: /opt/xcat/share/xcat/tools/autotest/bundle.
|
||||
Comma separated list of test case bundle files, each test cases bundle can contain multiple lines and each line for one test case name. The bundle files should be placed in \ */opt/xcat/share/xcat/tools/autotest/bundle*\ .
|
||||
|
||||
|
||||
|
||||
\ **-t**\ \ *cases list*\
|
||||
\ **-t**\ \ *testcase name list*\
|
||||
|
||||
Comma separated list of test cases that will be run.
|
||||
Comma separated list of test cases to run.
|
||||
|
||||
|
||||
|
||||
\ **-c**\ \ *cmd list*\
|
||||
\ **-c**\ \ *testcase command list*\
|
||||
|
||||
Comma separated list of commands which will be tested, i.e., all the test cases under the command sub directory will be run.
|
||||
|
||||
|
||||
|
||||
\ **-l**\
|
||||
\ **-s**\ \ *filter expression*\
|
||||
|
||||
Display the test cases names specified by the flag -b, -t or -c.
|
||||
Run testcases with testcase \ **label**\ attribute matching \ *filter expression*\ . Operators \ **|**\ , \ **+**\ , and \ **-**\ can be used. Expresson \ *"label1+label2-label3|label4|label5"*\ will match testcases that have \ **label**\ attribute matching "label1" and "label2", but not "label3" or testcases that have \ **label**\ attribute matching "label4" or testcases that have \ **label**\ attribute matching "label5"
|
||||
|
||||
|
||||
|
||||
\ **-s**\
|
||||
\ **-l {caselist|caseinfo|casenum|bundleinfo}**\
|
||||
|
||||
Display the bundle files and command with value: bundle or command.
|
||||
Display rather than run the test cases. The \ **caselist**\ is a default and will display a list of testcase names. \ **caseinfo**\ will display testcase names and descriptions. \ **casenum**\ will display the number of testcases. \ **bundleinfo**\ will display testcase bundle names and descriptions.
|
||||
|
||||
|
||||
|
||||
\ **-r**\
|
||||
|
||||
Back up the original environment settings before running test, and restore them after running test.
|
||||
|
||||
|
||||
|
||||
\ **-q**\
|
||||
|
||||
Do not print output of test cases to STDOUT, instead, log output to \ */opt/xcat/share/xcat/tools/autotest/result*\ .
|
||||
|
||||
|
||||
|
||||
@@ -127,6 +133,8 @@ The xCAT-test test cases are in flat text format, the testing framework will par
|
||||
arch:ppc/x86
|
||||
#optional, environment requirements
|
||||
hcp:hmc/mm/bmc/fsp
|
||||
#optional, label
|
||||
label:label1
|
||||
#required, command need to run
|
||||
cmd:comand
|
||||
#optional, check return code of last executed command
|
||||
@@ -185,7 +193,7 @@ EXAMPLES
|
||||
|
||||
4.
|
||||
|
||||
To add a new case to test chvm. In the example, we assume that the min_mem should not be equal to 16 in the lpar profile of computenode. The case name is chvm_custom. It create a test lpar named testnode firstly, that change the min_mem of the lpar to 16 using chvm, then check if min_mem have changed correctly. At last, the testnode be remove to ensure no garbage produced in the cases.
|
||||
To add a new case to test \ **chvm**\ . In the example, we assume that the min_mem should not be equal to 16 in the lpar profile of computenode. The case name is chvm_custom. It create a test lpar named testnode firstly, that change the min_mem of the lpar to 16 using chvm, then check if min_mem have changed correctly. At last, the testnode be remove to ensure no garbage produced in the cases.
|
||||
|
||||
|
||||
.. code-block:: perl
|
||||
@@ -211,6 +219,30 @@ EXAMPLES
|
||||
|
||||
|
||||
|
||||
5.
|
||||
|
||||
To run all test cases that have \ *label:kdump*\ or \ *label:parallel_cmds*\ :
|
||||
|
||||
|
||||
.. code-block:: perl
|
||||
|
||||
xcattest -s kdump|parallel_cmds
|
||||
|
||||
|
||||
|
||||
|
||||
6.
|
||||
|
||||
To display all bundles and their descriptions:
|
||||
|
||||
|
||||
.. code-block:: perl
|
||||
|
||||
xcattest -l bundleinfo
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
****************
|
||||
INLINE FUNCTIONS
|
||||
@@ -219,19 +251,32 @@ INLINE FUNCTIONS
|
||||
|
||||
The xCAT-test testing framework provides some inline functions. The inline functions can be called in test cases as __FUNCTIONNAME(PARAMTERLIST)__ to get some necessary attributes defined in the configuration file. The inline functions can be used in \ *cmd*\ section and the \ *check:output*\ section.
|
||||
|
||||
1. \ **GETNODEATTR(nodename, attribute)**\ To get the value of specified node's attribute
|
||||
|
||||
2. \ **INC(digit)**\ To get value of digit+1.
|
||||
|
||||
For example, to run rscan command against the hardware control point of compute node specified in the configuration file:
|
||||
1.
|
||||
|
||||
\ **GETNODEATTR(nodename, attribute)**\ To get the value of specified node's attribute
|
||||
|
||||
|
||||
|
||||
.. code-block:: perl
|
||||
|
||||
rscan __GETNODEATTR($$CN, hcp)__ -z
|
||||
2.
|
||||
|
||||
\ **INC(digit)**\ To get value of digit+1.
|
||||
|
||||
For example, to run \ **rscan**\ command against the hardware control point of compute node specified in the configuration file:
|
||||
|
||||
|
||||
.. code-block:: perl
|
||||
|
||||
rscan __GETNODEATTR($$CN, hcp)__ -z
|
||||
|
||||
|
||||
|
||||
|
||||
3. \ **GETTABLEVALUE(keyname, key, colname, table)**\ To get the value of column where keyname == key in specified table.
|
||||
3.
|
||||
|
||||
\ **GETTABLEVALUE(keyname, key, colname, table)**\ To get the value of column where keyname == key in specified table.
|
||||
|
||||
|
||||
|
||||
|
||||
*****
|
||||
|
||||
@@ -121,6 +121,8 @@ nics Attributes:
|
||||
<nic1>!<param1=value1 param2=value2>,<nic2>!<param3=value3>, for example, eth0!MTU=1500,ib0!MTU=65520 CONNECTED_MODE=yes.
|
||||
If multiple ip addresses are associated with each NIC:
|
||||
<nic1>!<param1=value1 param2=value2>|<param3=value3>,<nic2>!<param4=value4 param5=value5>|<param6=value6>, for example, eth0!MTU=1500|MTU=1460,ib0!MTU=65520 CONNECTED_MODE=yes.
|
||||
The semicolon separator is needed if there are multiple values for extra parameters:
|
||||
bond0!BONDING_OPTS=lacp_rate=1;miimon=100;mode=802.3ad
|
||||
The xCAT object definition commands support to use nicextraparams.<nicname> as the sub attributes.
|
||||
|
||||
|
||||
|
||||
@@ -191,7 +191,7 @@ vm Attributes:
|
||||
|
||||
\ **othersettings**\
|
||||
|
||||
This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:"vcpupin:'0-15,^8'",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running \ **virsh nodedev-list**\ on the host.
|
||||
This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu mode use either:'cpumode:host-passthrough' or 'cpumode:host-model'. This improves performance on x86 VMs significantly. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:"vcpupin:'0-15,^8'",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running \ **virsh nodedev-list**\ on the host.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -277,7 +277,7 @@ group Attributes:
|
||||
|
||||
\ **dockerflag**\ (vm.othersettings)
|
||||
|
||||
This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:"vcpupin:'0-15,^8'",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running \ **virsh nodedev-list**\ on the host.
|
||||
This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu mode use either:'cpumode:host-passthrough' or 'cpumode:host-model'. This improves performance on x86 VMs significantly. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:"vcpupin:'0-15,^8'",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running \ **virsh nodedev-list**\ on the host.
|
||||
|
||||
|
||||
|
||||
@@ -629,6 +629,8 @@ group Attributes:
|
||||
<nic1>!<param1=value1 param2=value2>,<nic2>!<param3=value3>, for example, eth0!MTU=1500,ib0!MTU=65520 CONNECTED_MODE=yes.
|
||||
If multiple ip addresses are associated with each NIC:
|
||||
<nic1>!<param1=value1 param2=value2>|<param3=value3>,<nic2>!<param4=value4 param5=value5>|<param6=value6>, for example, eth0!MTU=1500|MTU=1460,ib0!MTU=65520 CONNECTED_MODE=yes.
|
||||
The semicolon separator is needed if there are multiple values for extra parameters:
|
||||
bond0!BONDING_OPTS=lacp_rate=1;miimon=100;mode=802.3ad
|
||||
The xCAT object definition commands support to use nicextraparams.<nicname> as the sub attributes.
|
||||
|
||||
|
||||
@@ -1328,7 +1330,7 @@ group Attributes:
|
||||
|
||||
\ **vmothersetting**\ (vm.othersettings)
|
||||
|
||||
This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:"vcpupin:'0-15,^8'",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running \ **virsh nodedev-list**\ on the host.
|
||||
This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu mode use either:'cpumode:host-passthrough' or 'cpumode:host-model'. This improves performance on x86 VMs significantly. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:"vcpupin:'0-15,^8'",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running \ **virsh nodedev-list**\ on the host.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -289,7 +289,7 @@ node Attributes:
|
||||
|
||||
\ **dockerflag**\ (vm.othersettings)
|
||||
|
||||
This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:"vcpupin:'0-15,^8'",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running \ **virsh nodedev-list**\ on the host.
|
||||
This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu mode use either:'cpumode:host-passthrough' or 'cpumode:host-model'. This improves performance on x86 VMs significantly. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:"vcpupin:'0-15,^8'",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running \ **virsh nodedev-list**\ on the host.
|
||||
|
||||
|
||||
|
||||
@@ -629,6 +629,8 @@ node Attributes:
|
||||
<nic1>!<param1=value1 param2=value2>,<nic2>!<param3=value3>, for example, eth0!MTU=1500,ib0!MTU=65520 CONNECTED_MODE=yes.
|
||||
If multiple ip addresses are associated with each NIC:
|
||||
<nic1>!<param1=value1 param2=value2>|<param3=value3>,<nic2>!<param4=value4 param5=value5>|<param6=value6>, for example, eth0!MTU=1500|MTU=1460,ib0!MTU=65520 CONNECTED_MODE=yes.
|
||||
The semicolon separator is needed if there are multiple values for extra parameters:
|
||||
bond0!BONDING_OPTS=lacp_rate=1;miimon=100;mode=802.3ad
|
||||
The xCAT object definition commands support to use nicextraparams.<nicname> as the sub attributes.
|
||||
|
||||
|
||||
@@ -1364,7 +1366,7 @@ node Attributes:
|
||||
|
||||
\ **vmothersetting**\ (vm.othersettings)
|
||||
|
||||
This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:"vcpupin:'0-15,^8'",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running \ **virsh nodedev-list**\ on the host.
|
||||
This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu mode use either:'cpumode:host-passthrough' or 'cpumode:host-model'. This improves performance on x86 VMs significantly. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:"vcpupin:'0-15,^8'",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running \ **virsh nodedev-list**\ on the host.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,2 +1,5 @@
|
||||
Version,Release Date,New OS Supported,Release Notes
|
||||
2.15.0,2019-07-31,,`2.15.0 Release Notes <https://github.com/xcat2/xcat-core/wiki/XCAT_2.15_Release_Notes>`_
|
||||
|
||||
2.15.1,2020-03-06,"RHEL 8.1,RHEL 7.7,SLES 15.0",`2.15.1 Release Notes <https://github.com/xcat2/xcat-core/wiki/XCAT_2.15.1_Release_Notes>`_
|
||||
2.15.0,2019-11-11,"RHEL 8.0",`2.15.0 Release Notes <https://github.com/xcat2/xcat-core/wiki/XCAT_2.15_Release_Notes>`_
|
||||
|
||||
|
||||
|
@@ -226,7 +226,7 @@ qq{ link,ro - The file is readonly, and will be placed in tmpfs on the booted no
|
||||
'vncport' => 'Tracks the current VNC display port (currently not meant to be set',
|
||||
'textconsole' => 'Tracks the Psuedo-TTY that maps to the serial port or console of a VM',
|
||||
'powerstate' => "This flag is used by xCAT to track the last known power state of the VM.",
|
||||
'othersettings' => "This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:\"vcpupin:'0-15,^8'\",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running B<virsh nodedev-list> on the host.",
|
||||
'othersettings' => "This allows specifying a semicolon delimited list of key->value pairs to include in a vmx file of VMware or KVM. For partitioning on normal power machines, this option is used to specify the hugepage and/or bsr information, the value is like:'hugepage:1,bsr=2'. For KVM cpu mode use either:'cpumode:host-passthrough' or 'cpumode:host-model'. This improves performance on x86 VMs significantly. For KVM cpu pinning, this option is used to specify the physical cpu set on the host, the value is like:\"vcpupin:'0-15,^8'\",Its syntax is a comma separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can also be allowed, the '-' denotes the range and the '^' denotes exclusive. For KVM memory binding, the value is like:'membind:0', restrict a guest to allocate memory from the specified set of NUMA nodes. For PCI passthrough, the value is like:'devpassthrough:pci_0001_01_00_0,pci_0000_03_00_0', the value for PCI device format also can be like:'devpassthrough:0001:01:00.1', the PCI devices are assigned to a virtual machine, and the virtual machine can use this I/O exclusively, the devices list are a list of PCI device names delimited with comma, the PCI device names can be obtained by running B<virsh nodedev-list> on the host.",
|
||||
'guestostype' => "This allows administrator to specify an identifier for OS to pass through to virtualization stack. Normally this should be ignored as xCAT will translate from nodetype.os rather than requiring this field be used\n",
|
||||
'beacon' => "This flag is used by xCAT to track the state of the identify LED with respect to the VM.",
|
||||
'datacenter' => "Optionally specify a datacenter for the VM to exist in (only applicable to VMWare)",
|
||||
@@ -1626,6 +1626,8 @@ zvmivp => {
|
||||
<nic1>!<param1=value1 param2=value2>,<nic2>!<param3=value3>, for example, eth0!MTU=1500,ib0!MTU=65520 CONNECTED_MODE=yes.
|
||||
If multiple ip addresses are associated with each NIC:
|
||||
<nic1>!<param1=value1 param2=value2>|<param3=value3>,<nic2>!<param4=value4 param5=value5>|<param6=value6>, for example, eth0!MTU=1500|MTU=1460,ib0!MTU=65520 CONNECTED_MODE=yes.
|
||||
The semicolon separator is needed if there are multiple values for extra parameters:
|
||||
bond0!BONDING_OPTS=lacp_rate=1;miimon=100;mode=802.3ad
|
||||
The xCAT object definition commands support to use nicextraparams.<nicname> as the sub attributes.',
|
||||
nicdevices => 'Comma-separated list of NIC device per NIC, multiple ethernet devices can be bonded as bond device, these ethernet devices are separated by | . <nic1>!<dev1>|<dev3>,<nic2>!<dev2>, e.g. bond0!eth0|eth2,br0!bond0. The xCAT object definition commands support to use nicdevices.<nicname> as the sub attributes.',
|
||||
nicsadapter => 'Comma-separated list of NIC information collected by getadapter. <nic1>!<param1=value1 param2=value2>,<nic2>!<param4=value4 param5=value5>, for example, enP3p3s0f1!mac=98:be:94:59:fa:cd linkstate=DOWN,enP3p3s0f2!mac=98:be:94:59:fa:ce candidatename=enP3p3s0f2/enx98be9459face',
|
||||
|
||||
@@ -193,6 +193,8 @@ my %usage = (
|
||||
rspconfig <noderange> timesyncmethod={ntp|manual}
|
||||
rspconfig <noderange> bootmode
|
||||
rspconfig <noderange> bootmode={safe|regular|setup}
|
||||
rspconfig <noderange> thermalmode
|
||||
rspconfig <noderange> thermalmode={default|custom|heavy_io|max_base_fan_floor}
|
||||
rspconfig <noderange> autoreboot
|
||||
rspconfig <noderange> autoreboot={0|1}
|
||||
",
|
||||
|
||||
@@ -14,6 +14,8 @@ require Exporter;
|
||||
use strict;
|
||||
|
||||
our %distnames = (
|
||||
"1578087695.538488" => "centos8.1", #x86_64
|
||||
"1578087695.537220" => "centos8.1", #ppc64le
|
||||
"1480943823.812754" => "centos7.3", #x86_64
|
||||
"1450147276.351714" => "centos7.2", #ppc64le
|
||||
"1449699925.561114" => "centos7.2", #x86_64
|
||||
|
||||
+39
-18
@@ -888,23 +888,25 @@ sub initmysqldb
|
||||
}
|
||||
} # end AIX only
|
||||
|
||||
#on debian/ubuntu should comment the bind-adress line in my.cnf
|
||||
#bind-adress line in my.cnf should comment out
|
||||
#on Ubuntu16.04, the bind-address line is in the mariadb.conf.d/50-server.cnf
|
||||
if ($::debianflag) {
|
||||
my $bind_file;
|
||||
if (-e "/etc/mysql/mariadb.conf.d/50-server.cnf")
|
||||
{
|
||||
$bind_file = "/etc/mysql/mariadb.conf.d/50-server.cnf";
|
||||
} else {
|
||||
$bind_file = "/etc/mysql/my.cnf";
|
||||
}
|
||||
$cmd = "sed 's/\\(^\\s*bind.*\\)/#\\1/' $bind_file > /tmp/my.cnf; mv -f /tmp/my.cnf $bind_file;chmod 644 $bind_file";
|
||||
xCAT::Utils->runcmd($cmd, 0);
|
||||
if ($::RUNCMD_RC != 0)
|
||||
{
|
||||
xCAT::MsgUtils->message("E", " comment the bind-address line in $bind_file failed: $cmd.");
|
||||
exit(1);
|
||||
}
|
||||
#on SLE15, the bind-address line is in the /etc/my.cnf
|
||||
my $bind_file;
|
||||
if (-e "/etc/mysql/mariadb.conf.d/50-server.cnf")
|
||||
{
|
||||
$bind_file = "/etc/mysql/mariadb.conf.d/50-server.cnf";
|
||||
} elsif (-e "/etc/mysql/my.cnf")
|
||||
{
|
||||
$bind_file = "/etc/mysql/my.cnf";
|
||||
} else {
|
||||
$bind_file = "/etc/my.cnf";
|
||||
}
|
||||
$cmd = "sed 's/^bind/#&/' $bind_file > /tmp/my.cnf; mv -f /tmp/my.cnf $bind_file;chmod 644 $bind_file";
|
||||
xCAT::Utils->runcmd($cmd, 0);
|
||||
if ($::RUNCMD_RC != 0)
|
||||
{
|
||||
xCAT::MsgUtils->message("E", " comment the bind-address line in $bind_file failed: $cmd.");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
# Create the MySQL data directory and initialize the grant tables
|
||||
@@ -926,6 +928,15 @@ sub initmysqldb
|
||||
}
|
||||
|
||||
$cmd = "$sqlcmd --user=mysql";
|
||||
#on rhels7.7, /usr/bin/mysql_install_db requires /usr/libexec/resolveip,
|
||||
#but it's available at the /usr/bin/resolveip
|
||||
if ($::linuxos == "rhels7.7") {
|
||||
my $resolveip="/usr/libexec/resolveip";
|
||||
if (!(-x ($resolveip))) {
|
||||
my $linkcmd="ln -s /usr/bin/resolveip $resolveip";
|
||||
xCAT::Utils->runcmd($linkcmd, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
xCAT::Utils->runcmd($cmd, 0);
|
||||
if ($::RUNCMD_RC != 0)
|
||||
@@ -971,7 +982,7 @@ sub mysqlstart
|
||||
else
|
||||
{
|
||||
if ($::MariaDB == 1) { # running MariaDB
|
||||
if ($::linuxos =~ /rh.*/) {
|
||||
if ( ($::linuxos =~ /rh.*/) || ($::linuxos =~ /sles15.*/) ) {
|
||||
$ret = xCAT::Utils->startservice("mariadb");
|
||||
} else { # sles
|
||||
$ret = xCAT::Utils->startservice("mysql");
|
||||
@@ -1084,7 +1095,7 @@ sub mysqlreboot
|
||||
{
|
||||
if ($::MariaDB == 1) { # MariaDB not MySQL
|
||||
|
||||
if ($::linuxos =~ /rh.*/) {
|
||||
if ( ($::linuxos =~ /rh.*/) || ($::linuxos =~ /sles15.*/) ){
|
||||
$cmd = "chkconfig mariadb on";
|
||||
} else { #sles
|
||||
$cmd = "chkconfig mysql on";
|
||||
@@ -1244,6 +1255,14 @@ sub setupxcatdb
|
||||
$grantall_localhost .= "\'";
|
||||
$grantall_localhost .= " IDENTIFIED BY \'$::adminpassword\';\r";
|
||||
|
||||
#GRAND root to host account
|
||||
my $grantroot = "";
|
||||
$grantroot = "GRANT ALL on xcatdb.* TO root@";
|
||||
$grantroot .= "\'";
|
||||
$grantroot .= "$::MN";
|
||||
$grantroot .= "\'";
|
||||
$grantroot .= " IDENTIFIED BY \'$::rootpassword\';\r";
|
||||
|
||||
#
|
||||
# -re $pwd_prompt
|
||||
# Enter the password for root
|
||||
@@ -1312,6 +1331,8 @@ sub setupxcatdb
|
||||
$mysql->clear_accum();
|
||||
$mysql->send("$grantall_localhost");
|
||||
$mysql->clear_accum();
|
||||
$mysql->send("$grantroot");
|
||||
$mysql->clear_accum();
|
||||
$mysql->send("exit;\r");
|
||||
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ B<bmcdiscover> [B<-?>|B<-h>|B<--help>]
|
||||
|
||||
B<bmcdiscover> [B<-v>|B<--version>]
|
||||
|
||||
B<bmcdiscover> [B<--sn> I<SN_nodename>] [B<-s> I<scan_method>] [B<-u> I<bmc_user>] [B<-p> I<bmc_passwd>] [B<-z>] [B<-w>] B<--range> I<ip_ranges>
|
||||
B<bmcdiscover> B<--range> I<ip_ranges> [B<--sn> I<SN_nodename>] [B<-s> I<scan_method>] [B<-u> I<bmc_user>] [B<-p> I<bmc_passwd>] [B<-z>] [B<-w>]
|
||||
|
||||
|
||||
=head1 DESCRIPTION
|
||||
@@ -17,9 +17,10 @@ The B<bmcdiscover> command will discover Baseboard Management Controllers (BMCs)
|
||||
|
||||
The command uses B<nmap> to scan active nodes over a specified IP range. The IP range format should be a format that is acceptable by B<nmap>.
|
||||
|
||||
The B<bmcdiscover> command can also obtain some information about the BMC. (Check username/password, IP address source, DHCP/static configuration)
|
||||
B<Note:> The scan method currently supported is B<nmap>.
|
||||
|
||||
Note: The scan method currently support is B<nmap>.
|
||||
|
||||
B<Note:> Starting on January 1, 2020, some newly shipped systems will require the default BMC password to be changed before they can be managed by xCAT. B<bmcdiscover> will not be able to discover such systems. Run I</opt/xcat/share/xcat/scripts/BMC_change_password.sh> script to change the default password for BMCs in specified range, then rerun B<bmcdiscover> with B<-p "new bmc password"> flag to discover systems with the changed password.
|
||||
|
||||
=head1 OPTIONS
|
||||
|
||||
@@ -27,11 +28,11 @@ Note: The scan method currently support is B<nmap>.
|
||||
|
||||
=item B<--range>
|
||||
|
||||
Specify one or more IP ranges acceptable to B<nmap>. IP range can be hostnames, IP addresses, networks, etc. A single IP address (10.1.2.3), several IPs with commas (10.1.2.3,10.1.2.10), Ip range with "-" (10.1.2.0-100) or an IP range (10.1.2.0/24) can be specified. If the range is very large, the B<bmcdiscover> command may take a long time to return.
|
||||
Specify one or more IP ranges acceptable to B<nmap>. IP range can be hostnames, IP addresses, networks, etc. A single IP address (10.1.2.3), several IPs with commas (10.1.2.3,10.1.2.10), IP range with "-" (10.1.2.0-100) or an IP range (10.1.2.0/24) can be specified. If the range is very large, the B<bmcdiscover> command may take a long time to return.
|
||||
|
||||
=item B<--sn>
|
||||
|
||||
Specify one or more service nodes on which bmcdiscover will run. In hierarchical cluster, the MN may not be able to access the BMC of CN directly, but SN can. With this option, B<bmcdiscover> will be dispatched to the specified SNs. Then, the nodename of the service node that B<bmcdiscover> is running on will be set to the 'servicenode' attribute of the discovered BMC node.
|
||||
Specify one or more service nodes on which B<bmcdiscover> will run. In hierarchical cluster, the MN may not be able to access the BMC of CN directly, but SN can. In that case, B<bmcdiscover> will be dispatched to the specified SNs. Then, the nodename of the service node that B<bmcdiscover> is running on will be set to the 'servicenode' attribute of the discovered BMC node.
|
||||
|
||||
=item B<-s>
|
||||
|
||||
@@ -45,10 +46,6 @@ List the data returned in xCAT stanza format
|
||||
|
||||
Write to the xCAT database.
|
||||
|
||||
=item B<-i|--bmcip>
|
||||
|
||||
BMC IP address.
|
||||
|
||||
=item B<-u|--bmcuser>
|
||||
|
||||
BMC user name.
|
||||
@@ -76,7 +73,7 @@ Display version information
|
||||
=head1 EXAMPLES
|
||||
|
||||
|
||||
1. To get all responding BMCs from IP range "10.4.23.100-254" and 50.3.15.1-2":
|
||||
1. To get all responding BMCs from IP range "10.4.23.100-254" and "50.3.15.1-2":
|
||||
|
||||
bmcdiscover -s nmap --range "10.4.23.100-254 50.3.15.1-2"
|
||||
|
||||
|
||||
@@ -10,6 +10,12 @@ B<nodechmac> I<node-name> B<mac=>I<mac-address>
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
B<Note:> The command B<nodechmac> has been deprecated. To change the MAC address of the node:
|
||||
|
||||
makedhcp -d <nodename>
|
||||
chdef -t node -o <nodename> mac=<new-mac>
|
||||
makedhcp <nodename>
|
||||
|
||||
The B<nodechmac> command changes the MAC address for provisioned node's network interface.
|
||||
|
||||
You can use this command to keep an existing node configuration. For example, if an existing node has hardware problems, the replacement node can use the old configurations. By using the nodechmac command, the node name and network settings of the old node can be used by the new node.
|
||||
|
||||
@@ -12,21 +12,15 @@ B<nodepurge> I<noderange>
|
||||
|
||||
The B<nodepurge> automatically removes all nodes from the database and any related configurations used by the node.
|
||||
|
||||
After the nodes are removed, the configuration files related to these nodes are automatically updated, including the following files: /etc/hosts, DNS, DHCP. Any kits that are used by the nodes are triggered to automatically update kit configuration and services.
|
||||
After the nodes are removed, the configuration files related to these nodes are automatically updated, including the following files: I</etc/hosts>, DNS, DHCP. Any kits that are used by the nodes are triggered to automatically update kit configuration and services. Any related configuration files from I</install/autoinst> are also removed.
|
||||
|
||||
=head1 OPTIONS
|
||||
|
||||
B<-h|--help>
|
||||
B<-h|--help> Display usage message.
|
||||
|
||||
Display usage message.
|
||||
B<-v|--version> Command Version
|
||||
|
||||
B<-v|--version>
|
||||
|
||||
Command Version
|
||||
|
||||
I<noderange>
|
||||
|
||||
The nodes to be removed.
|
||||
I<noderange> The nodes to be removed.
|
||||
|
||||
=head1 RETURN VALUE
|
||||
|
||||
@@ -36,7 +30,7 @@ The nodes to be removed.
|
||||
|
||||
=head1 EXAMPLES
|
||||
|
||||
To remove nodes compute-000 and compute-001, use the following command:
|
||||
To remove nodes compute-000 and compute-001:
|
||||
|
||||
nodepurge compute-000,compute-001
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ B<rmvm [-p]> I<noderange>
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
The rmvm command removes the partitions specified in noderange. If noderange is an CEC, all the partitions associated with that CEC will be removed. Note that removed partitions are automatically removed from the xCAT database. For IVM-managed systems, care must be taken to not remove the VIOS partition, or all the associated partitions will be removed as well.
|
||||
The B<rmvm> command removes the partitions specified in I<noderange>. If I<noderange> is an CEC, all the partitions associated with that CEC will be removed. Note that removed partitions are automatically removed from the xCAT database. For IVM-managed systems, care must be taken to not remove the VIOS partition, or all the associated partitions will be removed as well.
|
||||
|
||||
For DFM-managed (short For Direct FSP Management mode) normal power machines, only partitions can be removed. No options is needed.
|
||||
|
||||
@@ -37,7 +37,11 @@ B<-r> Retain the data object definitions of the nodes.
|
||||
|
||||
B<--service> Remove the service partitions of the specified CECs.
|
||||
|
||||
B<-p> KVM: Purge the existence of the VM from persistent storage. This will erase all storage related to the VM in addition to removing it from the active virtualization configuration. PPC: Remove the specified partition on normal power machine.
|
||||
B<-p>
|
||||
|
||||
KVM: Purge the existence of the VM from persistent storage. This will erase all storage related to the VM in addition to removing it from the active virtualization configuration. Storage devices of "raw" or "block" type are not removed.
|
||||
|
||||
PPC: Remove the specified partition on normal power machine.
|
||||
|
||||
B<-f> Force remove the VM, even if the VM appears to be online. This will bring down a live VM if requested.
|
||||
|
||||
|
||||
@@ -60,6 +60,10 @@ B<rspconfig> I<noderange> B<powersupplyredundancy={disabled|enabled}>
|
||||
|
||||
B<rspconfig> I<noderange> B<sshcfg>
|
||||
|
||||
B<rspconfig> I<noderange> B<thermalmode>
|
||||
|
||||
B<rspconfig> I<noderange> B<thermalmode={default|custom|heavy_io|max_base_fan_floor}>
|
||||
|
||||
B<rspconfig> I<noderange> B<timesyncmethod>
|
||||
|
||||
B<rspconfig> I<noderange> B<timesyncmethod={manual|ntp}>
|
||||
@@ -402,6 +406,10 @@ B<-d> will download a single dump or all generated dumps from the BMC to /var/lo
|
||||
|
||||
=back
|
||||
|
||||
=item B<thermalmode>
|
||||
|
||||
Display or set the thermal mode of the system to a setting, depending on your system, adapter, and cable type. After a factory reset of the system, the thermal mode setting is lost and must be reapplied. To choose the correct setting for your system, see https://www.ibm.com/support/knowledgecenter/POWER9/p9ei3/p9ei3_thermal_mode.htm [OpenBMC]
|
||||
|
||||
=item B<timesyncmethod>
|
||||
|
||||
Set the method for time synchronization on the BMC. [OpenBMC]
|
||||
|
||||
@@ -170,7 +170,8 @@ logger -s -t $log_label -p local4.info "IPMIVER=$IPMIVER, IPMIMFG=$IPMIMFG, XPRO
|
||||
#
|
||||
# IPMIMFG=2 = IBM
|
||||
# IPMIMFG=0 = OpenPOWER
|
||||
# IPMIMFG=42817 and XPROD=16975 = OpenBMC
|
||||
# IPMIMFG=42817 and XPROD=16975 = OpenBMC (AC922)
|
||||
# IPMIMFG=42817 and XPROD=1 = OpenBMC (IC922)
|
||||
#
|
||||
if [ "$IPMIMFG" == 2 ]; then #IBM
|
||||
if [ "$XPROD" == "220" ]; then
|
||||
@@ -291,7 +292,9 @@ elif [ "$IPMIMFG" == "674" ]; then # DELL
|
||||
ipmitool delloem lan set shared with lom$BMCPORT &>/dev/null
|
||||
ipmitool delloem lan set shared with failover all loms &>/dev/null
|
||||
fi
|
||||
elif [ "$IPMIMFG" = "42817" -a "$XPROD" = "16975" ]; then # IBM OpenPOWER servers with OpenBMC
|
||||
elif [ "$IPMIMFG" == "42817" -a "$XPROD" == "16975" ]; then # IBM OpenPOWER servers with OpenBMC (AC922)
|
||||
ISOPENBMC=1
|
||||
elif [ "$IPMIMFG" == "42817" -a "$XPROD" == "1" ]; then # IBM OpenPOWER servers with OpenBMC (IC922)
|
||||
ISOPENBMC=1
|
||||
fi
|
||||
|
||||
@@ -466,6 +469,14 @@ for user in $BMCUS; do
|
||||
USERSLOT=$((`ipmitool raw 6 0x44 1 1|awk '{print $3}'` + 1))
|
||||
fi
|
||||
if [ "$USERSLOT" == 0 -o -z "$LOCKEDUSERS" ]; then USERSLOT=2; fi
|
||||
# automatically find first unlocked user slot
|
||||
for slot in {1..16}; do
|
||||
USERLOCKED=`ipmitool channel getaccess $LANCHAN $slot | grep Fixed | awk '{print $4}'`
|
||||
if [ "$USERLOCKED" == "No" ]; then
|
||||
USERSLOT=$slot
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ "$ISITE" = 1 ]; then
|
||||
allowcred.awk &
|
||||
CREDPID=$!
|
||||
|
||||
@@ -32,7 +32,9 @@ BMCMAC=`ipmitool lan print $LANCHAN|grep ^MAC|awk '{print $4}'` #bmcconfig may o
|
||||
IPMIMFG=`ipmitool mc info |grep "^Manufacturer ID"|awk '{print $4}'`
|
||||
XPROD=`ipmitool mc info | grep "^Product ID"|awk '{print $4}'`
|
||||
if [ "$IPMIMFG" == "42817" -a "$XPROD" == "16975" ]; then
|
||||
ISOPENBMC=1
|
||||
ISOPENBMC=1 # AC922
|
||||
elif [ "$IPMIMFG" == "42817" -a "$XPROD" == "1" ]; then
|
||||
ISOPENBMC=1 # IC922
|
||||
else
|
||||
ISOPENBMC=0
|
||||
fi
|
||||
|
||||
@@ -234,6 +234,18 @@ RSPCONFIG_APIS = {
|
||||
'setup': "xyz.openbmc_project.Control.Boot.Mode.Modes.Setup",
|
||||
},
|
||||
},
|
||||
'thermalmode': {
|
||||
'baseurl': "/control/thermal/0",
|
||||
'set_url': "/attr/Current",
|
||||
'get_url': "/attr/Current",
|
||||
'display_name':"BMC ThermalMode",
|
||||
'attr_values': {
|
||||
'default': "DEFAULT",
|
||||
'custom': "CUSTOM",
|
||||
'heavy_io': "HEAVY_IO",
|
||||
'max_base_fan_floor': "MAX_BASE_FAN_FLOOR",
|
||||
},
|
||||
},
|
||||
'timesyncmethod': {
|
||||
'baseurl': '/time/sync_method',
|
||||
'get_url': '',
|
||||
@@ -253,7 +265,8 @@ EVENTLOG_URLS = {
|
||||
}
|
||||
|
||||
RAS_POLICY_TABLE = "/opt/ibm/ras/lib/policyTable.json"
|
||||
RAS_POLICY_MSG = "Install the OpenBMC RAS package to obtain more detailed logging messages."
|
||||
RAS_POLICY_TABLE_RPM_LOC = "https://www.ibm.com/support/customercare/sas/f/lopdiags/scaleOutLCdebugtool.html#OpenBMC"
|
||||
RAS_POLICY_MSG = "Install the openbmctool rpm from " + RAS_POLICY_TABLE_RPM_LOC + " to obtain more detailed logging messages."
|
||||
RAS_NOT_FOUND_MSG = " Not found in policy table: "
|
||||
|
||||
RESULT_OK = 'ok'
|
||||
|
||||
@@ -53,7 +53,7 @@ all_nodes_result = {}
|
||||
# global variables of rbeacon
|
||||
BEACON_OPTIONS = ('on', 'off', 'stat')
|
||||
|
||||
RSPCONFIG_GET_OPTIONS = ['ip','ipsrc','netmask','gateway','vlan','ntpservers','hostname','bootmode','autoreboot','powersupplyredundancy','powerrestorepolicy', 'timesyncmethod']
|
||||
RSPCONFIG_GET_OPTIONS = ['ip','ipsrc','netmask','gateway','vlan','ntpservers','hostname','bootmode','thermalmode','autoreboot','powersupplyredundancy','powerrestorepolicy', 'timesyncmethod']
|
||||
|
||||
RSPCONFIG_SET_OPTIONS = {
|
||||
'ip':'.*',
|
||||
@@ -66,6 +66,7 @@ RSPCONFIG_SET_OPTIONS = {
|
||||
'powersupplyredundancy':"^enabled$|^disabled$",
|
||||
'powerrestorepolicy':"^always_on$|^always_off$|^restore$",
|
||||
'bootmode':"^regular$|^safe$|^setup$",
|
||||
'thermalmode':"^default$|^custom$|^heavy_io$|^max_base_fan_floor$",
|
||||
'admin_passwd':'.*,.*',
|
||||
'timesyncmethod':'^ntp$|^manual$',
|
||||
}
|
||||
|
||||
@@ -448,7 +448,7 @@ sub is_dns_ready {
|
||||
my $hostname = shift;
|
||||
my $domain = shift;
|
||||
|
||||
my $output = `nslookup $mnip $serverip 2>&1`;
|
||||
my $output = `nslookup -type=A $mnip $serverip 2>&1`;
|
||||
|
||||
if ($?) {
|
||||
return 0;
|
||||
|
||||
@@ -1006,7 +1006,7 @@ sub check_dns_service {
|
||||
} else {
|
||||
|
||||
# if there is no sn, nslookup mnip
|
||||
my $nslkp = `nslookup $serverip $serverip 2>&1`;
|
||||
my $nslkp = `nslookup -type=A $serverip $serverip 2>&1`;
|
||||
chomp($nslkp);
|
||||
my $tmp = grep { $_ =~ "Server:[\t\s]*$serverip" } split(/\n/, $nslkp);
|
||||
if (!$tmp) {
|
||||
|
||||
@@ -51,6 +51,13 @@ my $openbmc_pass;
|
||||
my $done_num = 0;
|
||||
$::P9_WITHERSPOON_MFG_ID = "42817";
|
||||
$::P9_WITHERSPOON_PRODUCT_ID = "16975";
|
||||
$::P9_MIHAWK_MFG_ID = "42817";
|
||||
$::P9_MIHAWK_PRODUCT_ID = "1";
|
||||
$::CHANGE_PW_REQUIRED="The password provided for this account must be changed before access is granted";
|
||||
$::NO_SESSION="Unable to establish IPMI v2 / RMCP";
|
||||
$::CHANGE_PW_INSTRUCTIONS_1="Run script '/opt/xcat/share/xcat/scripts/BMC_change_password.sh' to change default password";
|
||||
$::CHANGE_PW_INSTRUCTIONS_2="Rerun 'bmcdiscover' command with '-p new_bmc_password' flag";
|
||||
$::NO_MFG_OR_PRODUCT_ID="Zeros returned for Manufacturer id and Product id";
|
||||
%::VPDHASH = ();
|
||||
my %node_in_list = ();
|
||||
|
||||
@@ -196,7 +203,7 @@ sub bmcdiscovery_usage {
|
||||
push @{ $rsp->{data} }, "Usage:";
|
||||
push @{ $rsp->{data} }, "\tbmcdiscover [-?|-h|--help]";
|
||||
push @{ $rsp->{data} }, "\tbmcdiscover [-v|--version]";
|
||||
push @{ $rsp->{data} }, "\tbmcdiscover [--sn <SN_nodename>] [-s scan_method] [-u bmc_user] [-p bmc_passwd] [-z] [-w] --range ip_range\n";
|
||||
push @{ $rsp->{data} }, "\tbmcdiscover --range ip_range <ip_range> [--sn <SN_nodename>] [-s <scan_method>] [-u <bmc_user>] [-p <bmc_passwd>] [-z] [-w]\n";
|
||||
|
||||
xCAT::MsgUtils->message("I", $rsp, $::CALLBACK);
|
||||
return 0;
|
||||
@@ -650,11 +657,11 @@ sub scan_process {
|
||||
$bcmd = join(" ", $nmap_path, " -sn -n $range");
|
||||
}
|
||||
|
||||
xCAT::MsgUtils->trace(0, "I", "$log_label Try to scan live IPs by command $bcmd ...");
|
||||
xCAT::MsgUtils->trace(0, "I", "$log_label Try to scan live IPs with command $bcmd ...");
|
||||
$ip_info_list = xCAT::Utils->runcmd("$bcmd", -1);
|
||||
if ($::RUNCMD_RC != 0) {
|
||||
my $rsp = {};
|
||||
push @{ $rsp->{data} }, "Nmap scan is failed.\n";
|
||||
push @{ $rsp->{data} }, "Nmap scan has failed.\n";
|
||||
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
|
||||
return 2;
|
||||
}
|
||||
@@ -674,7 +681,7 @@ sub scan_process {
|
||||
my %pipe_map;
|
||||
if (scalar(@{$live_ip}) > 0) {
|
||||
|
||||
xCAT::MsgUtils->trace(0, "I", "$log_label Scaned live IPs " . scalar(@{$live_ip}) . " with mac " . scalar(@{$live_mac}));
|
||||
xCAT::MsgUtils->trace(0, "I", "$log_label Scanned " . scalar(@{$live_ip}) . " live IPs with " . scalar(@{$live_mac}) . " MACs");
|
||||
foreach (@{$live_ip}) {
|
||||
my $new_mac = lc(shift @{$live_mac});
|
||||
$new_mac =~ s/\://g;
|
||||
@@ -748,9 +755,11 @@ sub scan_process {
|
||||
$bmcpassword = "-P $bmc_pass" if ($bmc_pass);
|
||||
|
||||
my @mc_cmds = ("/opt/xcat/bin/ipmitool-xcat -I lanplus -H ${$live_ip}[$i] -P $openbmc_pass mc info -N 1 -R 1",
|
||||
"/opt/xcat/bin/ipmitool-xcat -I lanplus -H ${$live_ip}[$i] $bmcusername $bmcpassword mc info -N 1 -R 1");
|
||||
"/opt/xcat/bin/ipmitool-xcat -I lanplus -H ${$live_ip}[$i] -U $openbmc_user -P $openbmc_pass mc info -N 1 -R 1",
|
||||
"/opt/xcat/bin/ipmitool-xcat -I lanplus -H ${$live_ip}[$i] $bmcusername $bmcpassword mc info -N 1 -R 1");
|
||||
my $mc_info;
|
||||
my $is_openbmc = 0;
|
||||
my $is_ipmi = 0;
|
||||
foreach my $mc_cmd (@mc_cmds) {
|
||||
$mc_info = xCAT::Utils->runcmd($mc_cmd, -1);
|
||||
if ($::RUNCMD_RC != 0) {
|
||||
@@ -758,16 +767,50 @@ sub scan_process {
|
||||
}
|
||||
if ($mc_info =~ /Manufacturer ID\s*:\s*(\d+)\s*Manufacturer Name.+\s*Product ID\s*:\s*(\d+)/) {
|
||||
xCAT::MsgUtils->trace(0, "D", "$log_label Found ${$live_ip}[$i] Manufacturer ID: $1 Product ID: $2");
|
||||
if ($1 eq $::P9_WITHERSPOON_MFG_ID and $2 eq $::P9_WITHERSPOON_PRODUCT_ID) {
|
||||
bmcdiscovery_openbmc(${$live_ip}[$i], $opz, $opw, $request_command,$parent_fd);
|
||||
if (($1 eq $::P9_WITHERSPOON_MFG_ID and $2 eq $::P9_WITHERSPOON_PRODUCT_ID) or
|
||||
($1 eq $::P9_MIHAWK_MFG_ID and $2 eq $::P9_MIHAWK_PRODUCT_ID)) {
|
||||
bmcdiscovery_openbmc(${$live_ip}[$i], $opz, $opw, $request_command,$parent_fd,$2);
|
||||
$is_openbmc = 1;
|
||||
$is_ipmi = 0;
|
||||
last;
|
||||
}
|
||||
elsif ($1 eq "0" and $2 eq "0") {
|
||||
# Got zeros for MFG and PRODUCT ID, not sure if openbmc or ipmi. Print message and move on.
|
||||
xCAT::MsgUtils->message("W", { data => ["${$live_ip}[$i]: $::NO_MFG_OR_PRODUCT_ID"] }, $::CALLBACK);
|
||||
last;
|
||||
}
|
||||
else {
|
||||
# System replied to mc info but not with either
|
||||
# $::P9_WITHERSPOON_MFG_ID and $::P9_WITHERSPOON_PRODUCT_ID, or
|
||||
# $::P9_MIHAWK_MFG_ID and $::P9_MIHAWK_PRODUCT_ID,
|
||||
# assume IPMI
|
||||
$is_openbmc = 0;
|
||||
$is_ipmi = 1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
unless ($is_openbmc) {
|
||||
|
||||
if ($is_ipmi) {
|
||||
bmcdiscovery_ipmi(${$live_ip}[$i], $opz, $opw, $request_command,$parent_fd);
|
||||
}
|
||||
if (!$is_openbmc and !$is_ipmi) {
|
||||
if ($mc_info =~ /$::NO_SESSION/) {
|
||||
# Did not get usefull data from ipmi mc info, could be one of two possibilities:
|
||||
# 1. Incorrect pw was used
|
||||
# 2. New system installed after January 1, 2020 where default password needs to be changed
|
||||
#
|
||||
# Verify this is case 2, by attempting to establish a RedFish session
|
||||
my $redfish_session_cmd = "curl -sD - --data '{\"UserName\":\"$openbmc_user\",\"Password\":\"$openbmc_pass\"}' -k -X POST https://${$live_ip}[$i]/redfish/v1/SessionService/Sessions";
|
||||
my $redfish_session_info = xCAT::Utils->runcmd($redfish_session_cmd, -1);
|
||||
if ($redfish_session_info =~ /$::CHANGE_PW_REQUIRED/) {
|
||||
# RedFish session replied that password change is needed. Print instructions and exit
|
||||
xCAT::MsgUtils->message("I", { data => ["${$live_ip}[$i]: $::CHANGE_PW_REQUIRED"] }, $::CALLBACK);
|
||||
xCAT::MsgUtils->message("I", { data => ["$::CHANGE_PW_INSTRUCTIONS_1"] }, $::CALLBACK);
|
||||
xCAT::MsgUtils->message("I", { data => ["$::CHANGE_PW_INSTRUCTIONS_2"] }, $::CALLBACK);
|
||||
}
|
||||
}
|
||||
}
|
||||
close($parent_fd);
|
||||
exit 0;
|
||||
} else {
|
||||
@@ -1183,7 +1226,7 @@ sub bmcdiscovery_ipmi {
|
||||
my $mtmsip = lc($mtm)."*".lc($serial)."-".$ip;
|
||||
if (exists($::VPDHASH{$mtmsip})) {
|
||||
my $pre_node = $::VPDHASH{$mtmsip};
|
||||
xCAT::MsgUtils->message("I", { data => ["Found match node $pre_node with bmc ip address: $ip, rsetboot/rpower $pre_node to continue hardware discovery."] }, $::CALLBACK);
|
||||
xCAT::MsgUtils->message("I", { data => ["Found matching node $pre_node with bmc ip address: $ip, rsetboot/rpower $pre_node to continue hardware discovery."] }, $::CALLBACK);
|
||||
if ($opz) {
|
||||
$node_data .= ",";
|
||||
display_output($opz,undef,$pre_node,$mac_node,$node_data,"ipmi",$request_command);
|
||||
@@ -1206,7 +1249,7 @@ sub bmcdiscovery_ipmi {
|
||||
xCAT::MsgUtils->message("W", { data => ["BMC password is incorrect for $ip"] }, $::CALLBACK);
|
||||
return;
|
||||
} else {
|
||||
xCAT::MsgUtils->message("W", { data => ["Unknown error get from $ip"] }, $::CALLBACK);
|
||||
xCAT::MsgUtils->message("W", { data => ["Unknown error from $ip"] }, $::CALLBACK);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1232,6 +1275,7 @@ sub bmcdiscovery_openbmc{
|
||||
my $opw = shift;
|
||||
my $request_command = shift;
|
||||
my $fd = shift;
|
||||
my $model_id = shift;
|
||||
my $mtms_node = "";
|
||||
my $mac_node = "";
|
||||
|
||||
@@ -1245,6 +1289,7 @@ sub bmcdiscovery_openbmc{
|
||||
my $login_endpoint = "login";
|
||||
my $system_endpoint = "inventory/system";
|
||||
my $motherboard_boxelder_endpoint = "$system_endpoint/chassis/motherboard/boxelder/bmc";
|
||||
my $motherboard_bmc_endpoint = "$system_endpoint/chassis/motherboard/bmc";
|
||||
|
||||
my $node_data = $ip;
|
||||
my $brower = LWP::UserAgent->new( ssl_opts => { SSL_verify_mode => 0x00, verify_hostname => 0 }, );
|
||||
@@ -1263,8 +1308,14 @@ sub bmcdiscovery_openbmc{
|
||||
my $req = HTTP::Request->new('GET', $url, $header);
|
||||
my $req_output = $brower->request($req);
|
||||
if ($req_output->is_error) {
|
||||
# If the host system has not yet been powered on, check the boxelder bmc info for model/serial
|
||||
$url = "$http_protocol://$ip/$openbmc_project_url/$motherboard_boxelder_endpoint";
|
||||
# If the host system has not yet been powered on, system_endpoint call will return error
|
||||
# Instead, check the boxelder (for AC922) or bmc (for IC922) info for model/serial
|
||||
if ($model_id eq $::P9_MIHAWK_PRODUCT_ID) {
|
||||
$url = "$http_protocol://$ip/$openbmc_project_url/$motherboard_bmc_endpoint";
|
||||
}
|
||||
else {
|
||||
$url = "$http_protocol://$ip/$openbmc_project_url/$motherboard_boxelder_endpoint";
|
||||
}
|
||||
$req = HTTP::Request->new('GET', $url, $header);
|
||||
$req_output = $brower->request($req);
|
||||
if ($req_output->is_error) {
|
||||
@@ -1318,7 +1369,7 @@ sub bmcdiscovery_openbmc{
|
||||
my $mtmsip = lc($mtm)."*".lc($serial)."-".$ip;
|
||||
if (exists($::VPDHASH{$mtmsip})) {
|
||||
my $pre_node = $::VPDHASH{$mtmsip};
|
||||
xCAT::MsgUtils->message("I", { data => ["Found match node $pre_node with bmc ip address: $ip, rsetboot/rpower $pre_node to continue hardware discovery."] }, $::CALLBACK);
|
||||
xCAT::MsgUtils->message("I", { data => ["Found matching node $pre_node with bmc ip address: $ip, rsetboot/rpower $pre_node to continue hardware discovery."] }, $::CALLBACK);
|
||||
if ($opz) {
|
||||
$node_data .= ",";
|
||||
display_output($opz,undef,$pre_node,$mac_node,$node_data,"openbmc",$request_command);
|
||||
|
||||
@@ -730,6 +730,7 @@ sub build_xmldesc {
|
||||
my %cpupinhash;
|
||||
my @passthrudevices;
|
||||
my $memnumanodes;
|
||||
my $cpumode;
|
||||
my $advsettings = undef;
|
||||
if (defined $confdata->{vm}->{$node}->[0]->{othersettings}) {
|
||||
$advsettings = $confdata->{vm}->{$node}->[0]->{othersettings};
|
||||
@@ -740,6 +741,7 @@ sub build_xmldesc {
|
||||
#cpu pining: "vcpupin:<physical cpu set>"
|
||||
#pci passthrough: "devpassthrough:<pci device name1>,<pci device name2>..."
|
||||
#memory binding: "membind:<numa node set>"
|
||||
#cpu mode: "cpumode:<host-model|host-passthrough>"
|
||||
if ($advsettings) {
|
||||
my @tmp_array = split ";", $advsettings;
|
||||
foreach (@tmp_array) {
|
||||
@@ -762,6 +764,9 @@ sub build_xmldesc {
|
||||
$memnumanodes = $1;
|
||||
}
|
||||
|
||||
if (/cpumode:(.*)/) {
|
||||
$cpumode = $1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -779,6 +784,12 @@ sub build_xmldesc {
|
||||
$xtree{vcpu}->{cpuset} =~ s/\"\'//g;
|
||||
}
|
||||
|
||||
if (defined $cpumode) {
|
||||
if ($cpumode eq 'host-passthrough' or $cpumode eq 'host-model') {
|
||||
$xtree{cpu}->{mode} = $cpumode;
|
||||
}
|
||||
}
|
||||
|
||||
#prepare the xml hash for pci passthrough
|
||||
my @prdevarray;
|
||||
foreach my $devname (@passthrudevices) {
|
||||
@@ -1791,13 +1802,13 @@ sub rmvm {
|
||||
unless ($driver[0]) { next; }
|
||||
my $drivertype = $driver[0]->getAttribute("type");
|
||||
if (($drivertype eq "raw") || ($disktype eq "block")) {
|
||||
#For raw or block devices, do not remove, even if purge was specified. Log info message.
|
||||
xCAT::MsgUtils->trace(0, "i", "Not purging raw or block storage device: $disk");
|
||||
# For raw or block devices, do not remove device, even if purge was specified. Display info message.
|
||||
xCAT::SvrUtils::sendmsg("Not purging raw or block storage device: $disk", $callback, $node);
|
||||
next;
|
||||
}
|
||||
my $file = $disk->getAttribute("file");
|
||||
unless ($file) {
|
||||
xCAT::MsgUtils->trace(0, "w", "Not able to find 'file' attribute value for: $disk");
|
||||
xCAT::SvrUtils::sendmsg("Not able to find 'file' attribute value for: $disk", $callback, $node);
|
||||
next;
|
||||
}
|
||||
|
||||
|
||||
@@ -382,7 +382,6 @@ sub cumulus_connect {
|
||||
|
||||
$ssh->debug(0);
|
||||
$ssh->log_stdout(0); # suppress stdout output..
|
||||
$ssh->slave->stty(qw(sane -echo));
|
||||
|
||||
unless ($ssh->spawn($command, @parameters))
|
||||
{
|
||||
|
||||
@@ -91,6 +91,7 @@ $::RSPCONFIG_CONFIGURED_API_KEY = -1;
|
||||
|
||||
$::XCAT_LOG_DIR = "/var/log/xcat";
|
||||
$::RAS_POLICY_TABLE = "/opt/ibm/ras/lib/policyTable.json";
|
||||
$::RAS_POLICY_TABLE_RPM_LOC = "https://www.ibm.com/support/customercare/sas/f/lopdiags/scaleOutLCdebugtool.html#OpenBMC";
|
||||
$::XCAT_LOG_RFLASH_DIR = $::XCAT_LOG_DIR . "/rflash/";
|
||||
$::XCAT_LOG_DUMP_DIR = $::XCAT_LOG_DIR . "/dump/";
|
||||
|
||||
@@ -676,6 +677,21 @@ my %api_config_info = (
|
||||
manual => "xyz.openbmc_project.Time.Synchronization.Method.Manual",
|
||||
},
|
||||
},
|
||||
RSPCONFIG_THERMAL_MODE => {
|
||||
command => "rspconfig",
|
||||
url => "/control/thermal/0",
|
||||
attr_url => "Current",
|
||||
display_name => "BMC ThermalMode",
|
||||
instruct_msg => "",
|
||||
type => "attribute",
|
||||
subcommand => "thermalmode",
|
||||
attr_value => {
|
||||
default => "DEFAULT",
|
||||
custom => "CUSTOM",
|
||||
heavy_io => "HEAVY_IO",
|
||||
max_base_fan_floor => "MAX_BASE_FAN_FLOOR",
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
$::RESPONSE_OK = "200 OK";
|
||||
@@ -1107,7 +1123,7 @@ rmdir \"/tmp/\$userid\" \n";
|
||||
while (1) {
|
||||
unless ($wait_node_num) {
|
||||
if ($event_mapping and (ref($event_mapping) ne "HASH")) {
|
||||
xCAT::SvrUtils::sendmsg("$event_mapping, install the OpenBMC RAS package to obtain more details logging messages.", $callback);
|
||||
xCAT::MsgUtils->message("I", { data=> ["$event_mapping, install the openbmctool rpm from $::RAS_POLICY_TABLE_RPM_LOC to obtain more detailed logging messages."]}, $callback);
|
||||
}
|
||||
if ($next_status{LOGIN_RESPONSE} eq "RSPCONFIG_SSHCFG_REQUEST") {
|
||||
my $home = xCAT::Utils->getHomeDir("root");
|
||||
@@ -4393,6 +4409,7 @@ sub rvitals_response {
|
||||
my @sorted_output;
|
||||
|
||||
my %leds = ();
|
||||
my $number_of_fan_leds = 0;
|
||||
|
||||
foreach my $key_url (keys %{$response_info->{data}}) {
|
||||
my %content = %{ ${ $response_info->{data} }{$key_url} };
|
||||
@@ -4409,10 +4426,11 @@ sub rvitals_response {
|
||||
$calc_value = (split(/\./, $content{State}))[-1];
|
||||
$content_info = $label . ": " . $calc_value ;
|
||||
|
||||
if ($key_url =~ "fan0") { $leds{fan0} = $calc_value; }
|
||||
if ($key_url =~ "fan1") { $leds{fan1} = $calc_value; }
|
||||
if ($key_url =~ "fan2") { $leds{fan2} = $calc_value; }
|
||||
if ($key_url =~ "fan3") { $leds{fan3} = $calc_value; }
|
||||
# There could be multiple fan LEDs. Match a string "fan" followed by digits, but only at the end of a string
|
||||
if ($key_url =~ /fan(\d+)$/) {
|
||||
$leds{"fan" . $1} = $calc_value;
|
||||
$number_of_fan_leds++;
|
||||
}
|
||||
if ($key_url =~ "front_id") { $leds{front_id} = $calc_value; }
|
||||
if ($key_url =~ "front_fault") { $leds{front_fault} = $calc_value; }
|
||||
if ($key_url =~ "front_power") { $leds{front_power} = $calc_value; }
|
||||
@@ -4484,7 +4502,7 @@ sub rvitals_response {
|
||||
}
|
||||
}
|
||||
# Fans
|
||||
for (my $i = 0; $i < 4; $i++) {
|
||||
for (my $i = 0; $i < $number_of_fan_leds; $i++) {
|
||||
my $tmp_key = "fan" . $i;
|
||||
$content_info = "LEDs Fan$i: $leds{$tmp_key}";
|
||||
push (@sorted_output, $content_info);
|
||||
|
||||
@@ -160,12 +160,13 @@ sub process_request {
|
||||
xCAT::AGENT::wait_agent($pid, $callback);
|
||||
}
|
||||
|
||||
my @rsp_common_options = qw/autoreboot bootmode powersupplyredundancy powerrestorepolicy timesyncmethod
|
||||
my @rsp_common_options = qw/autoreboot bootmode thermalmode powersupplyredundancy powerrestorepolicy timesyncmethod
|
||||
ip netmask gateway hostname vlan ntpservers/;
|
||||
my @rspconfig_set_options = (@rsp_common_options, qw/admin_passwd/);
|
||||
my %rsp_set_valid_values = (
|
||||
autoreboot => "0|1",
|
||||
bootmode => "regular|safe|setup",
|
||||
thermalmode => "default|custom|heavy_io|max_base_fan_floor",
|
||||
powersupplyredundancy => "disabled|enabled",
|
||||
powerrestorepolicy => "always_off|always_on|restore",
|
||||
timesyncmethod => "manual|ntp",
|
||||
@@ -447,7 +448,7 @@ sub refactor_args {
|
||||
}
|
||||
}
|
||||
if ($command eq "reventlog") {
|
||||
if (!defined($extrargs->[0])) {
|
||||
if ((!defined($extrargs->[0])) or ($extrargs->[0] =~ /^-V/)) {
|
||||
# If no parameters are passed, default to list all records
|
||||
$request->{arg} = ["list","all"];
|
||||
}
|
||||
|
||||
@@ -835,7 +835,6 @@ sub session_connect {
|
||||
|
||||
$ssh->debug(0);
|
||||
$ssh->log_stdout(0); # suppress stdout output..
|
||||
$ssh->slave->stty(qw(sane -echo));
|
||||
|
||||
unless ($ssh->spawn($command, @parameters))
|
||||
{
|
||||
@@ -1494,8 +1493,8 @@ sub netcfg_for_irpdu {
|
||||
|
||||
my $mypdu = new Expect;
|
||||
|
||||
$mypdu->log_stdout(1); # suppress stdout output..
|
||||
$mypdu->slave->stty(qw(sane -echo));
|
||||
$mypdu->debug(0);
|
||||
$mypdu->log_stdout(0); # suppress stdout output..
|
||||
|
||||
unless ($mypdu->spawn($login_cmd))
|
||||
{
|
||||
|
||||
@@ -687,7 +687,7 @@ sub nodepurge {
|
||||
Usage:
|
||||
\tnodepurge <noderange>
|
||||
\tnodepurge [-h|--help]
|
||||
\tnodepurge {-v|--version}";
|
||||
\tnodepurge [-v|--version]";
|
||||
|
||||
my $ret = validate_args($helpmsg);
|
||||
if (!$ret) {
|
||||
@@ -735,6 +735,20 @@ Usage:
|
||||
$warnstr .= "Details: $retstrref->[1]";
|
||||
}
|
||||
}
|
||||
# For each node in the noderange remove its configureation files in $config_dir, if file exists
|
||||
setrsp_progress("Removing configuration files...");
|
||||
my $config_dir = "/install/autoinst/";
|
||||
foreach my $one_node (@$nodes) {
|
||||
if ( -e "$config_dir/$one_node") {
|
||||
unlink "$config_dir/$one_node";
|
||||
}
|
||||
if ( -e "$config_dir/$one_node.post") {
|
||||
unlink "$config_dir/$one_node.post";
|
||||
}
|
||||
if ( -e "$config_dir/$one_node.pre") {
|
||||
unlink "$config_dir/$one_node.pre";
|
||||
}
|
||||
}
|
||||
setrsp_progress("Removed all nodes.");
|
||||
setrsp_success($nodes, $warnstr);
|
||||
}
|
||||
|
||||
@@ -30,7 +30,10 @@ is_lsb_ubuntu ()
|
||||
|
||||
DIRECTORY=/var/named
|
||||
|
||||
if [ -f /etc/SuSE-release ]; then
|
||||
# check for SLES
|
||||
grep -s -q sles /etc/os-release
|
||||
IS_SLES=$?
|
||||
if [ -f /etc/SuSE-release ] || [ $IS_SLES -eq 0 ]; then
|
||||
DIRECTORY=/var/lib/named
|
||||
fi
|
||||
FILE=/etc/named.conf
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
{
|
||||
missingok
|
||||
sharedscripts
|
||||
copytruncate
|
||||
delaycompress
|
||||
postrotate
|
||||
kill -HUP `systemctl show -p MainPID goconserver.service 2> /dev/null |awk -F= '{print $2}'` 2> /dev/null || true
|
||||
endscript
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
<post-scripts config:type="list">
|
||||
<script>
|
||||
<filename>xcat.sh</filename>
|
||||
<interpreter>shell</interpreter>
|
||||
<debug config:type="boolean">false</debug>
|
||||
<source>
|
||||
|
||||
<![CDATA[
|
||||
mkdir -p /var/log/xcat/
|
||||
{
|
||||
echo "Running AutoYaST Post-Installation script..."
|
||||
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/post.sles.common#
|
||||
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/post.xcat#
|
||||
} >>/var/log/xcat/xcat.log 2>&1
|
||||
|
||||
]]>
|
||||
|
||||
</source>
|
||||
</script>
|
||||
</post-scripts>
|
||||
|
||||
@@ -282,7 +282,7 @@ if [ $? -eq 0 ]; then
|
||||
fi
|
||||
|
||||
if [ $hassystemd -eq 1 ] ; then
|
||||
if [[ $OSVER == sles12* ]]; then
|
||||
if [[ $OSVER =~ sle && $OSVER != sles11* ]]; then
|
||||
cat >/etc/systemd/system/xcatpostinit1.service <<'EOF'
|
||||
#INCLUDE:/install/postscripts/xcatpostinit1.service.yast2#
|
||||
EOF
|
||||
@@ -332,7 +332,7 @@ EOF
|
||||
if [[ $OSVER == ubuntu* ]]; then
|
||||
update-rc.d xcatpostinit1 defaults
|
||||
else
|
||||
if [[ $OSVER == sles* ]]; then
|
||||
if [[ $OSVER == sle* ]]; then
|
||||
if [[ $OSVER == sles10* ]]; then
|
||||
/sbin/insserv xcatpostinit1
|
||||
else
|
||||
@@ -515,7 +515,7 @@ cd /
|
||||
# To skip the conflict, the network service should be stoped in the yast first stage. Then base on the service
|
||||
# dependency, the service start order will be 'YaST2-Second-Stage.service'->'network'->'xcatpostinit1' in serial.
|
||||
# Then the Yast2 will be stopped before running the zypper in otherpkgs.
|
||||
if [[ $OSVER =~ sles && $OSVER != sles11* ]]; then
|
||||
if [[ $OSVER =~ sle && $OSVER != sles11* ]]; then
|
||||
service network stop
|
||||
fi
|
||||
|
||||
|
||||
@@ -2,3 +2,7 @@ openssl
|
||||
rsync
|
||||
less
|
||||
iputils
|
||||
insserv-compat
|
||||
net-tools-deprecated
|
||||
rsyslog
|
||||
nfs-client
|
||||
|
||||
@@ -94,9 +94,9 @@
|
||||
</routing>
|
||||
</networking>
|
||||
<scripts>
|
||||
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/pre.sle15#
|
||||
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/pre.sle#
|
||||
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/chroot.sles#
|
||||
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/post.sles11#
|
||||
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/post.sle#
|
||||
</scripts>
|
||||
</configure>
|
||||
</profile>
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
@base
|
||||
@x11
|
||||
openssl
|
||||
iputils
|
||||
ntp
|
||||
rsync
|
||||
rsyslog
|
||||
insserv-compat
|
||||
net-tools-deprecated
|
||||
nmap
|
||||
perl-DBI
|
||||
vsftpd
|
||||
perl-IO-Tty
|
||||
perl-Expect
|
||||
perl-SNMP
|
||||
unixODBC
|
||||
perl-Net-DNS
|
||||
perl-DBD-Pg
|
||||
postgresql-server
|
||||
postgresql
|
||||
perl-DBD-mysql
|
||||
mariadb-client
|
||||
#libmysqlclient18
|
||||
vim
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
xcat/xcat-core/xCATsn
|
||||
xcat/xcat-dep/sles15/ppc64le/goconserver
|
||||
@@ -0,0 +1,99 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE profile SYSTEM "/usr/share/YaST2/include/autoinstall/profile.dtd">
|
||||
<profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns">
|
||||
<install>
|
||||
<bootloader>
|
||||
<write_bootloader config:type="boolean">true</write_bootloader>
|
||||
<activate config:type="boolean">true</activate>
|
||||
<kernel_parameters>#XCATVAR:PERSKCMDLINE#</kernel_parameters>
|
||||
<lba_support config:type="boolean">false</lba_support>
|
||||
<linear config:type="boolean">false</linear>
|
||||
<location>mbr</location>
|
||||
</bootloader>
|
||||
<general>
|
||||
<clock>
|
||||
<hwclock>UTC</hwclock>
|
||||
<timezone>#TABLE:site:key=timezone:value#</timezone>
|
||||
</clock>
|
||||
<keyboard>
|
||||
<keymap>english-us</keymap>
|
||||
</keyboard>
|
||||
<language>en_US</language>
|
||||
<mode>
|
||||
<confirm config:type="boolean">false</confirm>
|
||||
<forceboot config:type="boolean">false</forceboot>
|
||||
<interactive_boot config:type="boolean">false</interactive_boot>
|
||||
<reboot config:type="boolean">true</reboot>
|
||||
</mode>
|
||||
<mouse>
|
||||
<id>non</id>
|
||||
</mouse>
|
||||
<signature-handling>
|
||||
<accept_non_trusted_gpg_key config:type="boolean">true</accept_non_trusted_gpg_key>
|
||||
<accept_unknown_gpg_key config:type="boolean">true</accept_unknown_gpg_key>
|
||||
<accept_unsigned_file config:type="boolean">true</accept_unsigned_file>
|
||||
</signature-handling>
|
||||
</general>
|
||||
<partitioning config:type="list">
|
||||
<!-- XCAT-PARTITION-START -->
|
||||
<drive>
|
||||
<device>XCATPARTITIONHOOK</device>
|
||||
<initialize config:type="boolean">true</initialize>
|
||||
<use>all</use>
|
||||
</drive>
|
||||
<!-- XCAT-PARTITION-END -->
|
||||
</partitioning>
|
||||
<add-on>
|
||||
<add_on_products config:type="list">
|
||||
#INSTALL_SOURCES#
|
||||
</add_on_products>
|
||||
</add-on>
|
||||
<software>
|
||||
<products config:type="list">
|
||||
<product>SLES</product>
|
||||
</products>
|
||||
<patterns config:type="list">
|
||||
#INCLUDE_DEFAULT_PTRNLIST_S#
|
||||
</patterns>
|
||||
<packages config:type="list">
|
||||
#INCLUDE_DEFAULT_PKGLIST_S#
|
||||
</packages>
|
||||
</software>
|
||||
</install>
|
||||
<configure>
|
||||
<users config:type="list">
|
||||
<user>
|
||||
<username>root</username>
|
||||
<user_password>#CRYPT:passwd:key=system,username=root:password#</user_password>
|
||||
<encrypted config:type="boolean">true</encrypted>
|
||||
<forename/>
|
||||
<surname/>
|
||||
</user>
|
||||
</users>
|
||||
<networking>
|
||||
<dns>
|
||||
<dhcp_hostname config:type="boolean">true</dhcp_hostname>
|
||||
<dhcp_resolv config:type="boolean">true</dhcp_resolv>
|
||||
<domain>local</domain>
|
||||
<hostname>linux</hostname>
|
||||
</dns>
|
||||
<interfaces config:type="list">
|
||||
<interface>
|
||||
<bootproto>dhcp</bootproto>
|
||||
<device>eth0</device>
|
||||
<startmode>onboot</startmode>
|
||||
</interface>
|
||||
</interfaces>
|
||||
<keep_install_network config:type="boolean">true</keep_install_network>
|
||||
<routing>
|
||||
<ip_forward config:type="boolean">false</ip_forward>
|
||||
<routes config:type="list"/>
|
||||
</routing>
|
||||
</networking>
|
||||
<scripts>
|
||||
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/pre.sle#
|
||||
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/chroot.sles#
|
||||
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/post.sle#
|
||||
</scripts>
|
||||
</configure>
|
||||
</profile>
|
||||
@@ -0,0 +1,2 @@
|
||||
xcat/xcat-core/xCATsn
|
||||
xcat/xcat-dep/sles15/x86_64/goconserver
|
||||
@@ -0,0 +1 @@
|
||||
../rh/dracut_047
|
||||
@@ -11,3 +11,4 @@ wget
|
||||
python3
|
||||
tar
|
||||
bzip2
|
||||
bc
|
||||
|
||||
@@ -40,6 +40,18 @@ then
|
||||
sed -i 's/SELINUX=enforcing\|permissive/SELINUX=disabled/' $installroot/etc/selinux/config
|
||||
fi
|
||||
|
||||
#--for redhat 8 and 8.1
|
||||
#-- Need to disable firewalld, otherwise, the remoteshell script will not able to get all the SSH keys
|
||||
if [ -f "$installroot/etc/systemd/system/multi-user.target.wants/firewalld.service" ]
|
||||
then
|
||||
rm -rf $installroot/etc/systemd/system/multi-user.target.wants/firewalld.service
|
||||
fi
|
||||
if [ -f "$installroot/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service" ]
|
||||
then
|
||||
rm -rf $installroot/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service
|
||||
fi
|
||||
|
||||
|
||||
#-- Example of booted image versioning
|
||||
#-- We want to know, with what configuration (version of the image) each node was booted.
|
||||
#-- Hence, we keep image definition files and postscripts in CVS. During image generation we create file /etc/IMGVERSION and fill it with CVS "$Id$" of files with image definition (.pkglist, .exlist, .repolist, .postinstall). Then, during boot, each "CVS enabled" postscript (see /install/postscripts/cvs_template.sh and /install/postscripts/cvs_template.pl) adds one line to /etc/IMGVERSION. Then you can determine in any time what image you are running and what postscipts in which versions were run.
|
||||
|
||||
@@ -11,3 +11,4 @@ wget
|
||||
python3
|
||||
tar
|
||||
bzip2
|
||||
bc
|
||||
|
||||
@@ -39,6 +39,17 @@ if [ -f "$installroot/etc/selinux/config" ]
|
||||
then
|
||||
sed -i 's/SELINUX=enforcing\|permissive/SELINUX=disabled/' $installroot/etc/selinux/config
|
||||
fi
|
||||
#--for redhat 8 and 8.1
|
||||
#-- Need to disable firewalld, otherwise, the remoteshell script will not able to get all the SSH keys
|
||||
if [ -f "$installroot/etc/systemd/system/multi-user.target.wants/firewalld.service" ]
|
||||
then
|
||||
rm -rf $installroot/etc/systemd/system/multi-user.target.wants/firewalld.service
|
||||
fi
|
||||
if [ -f "$installroot/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service" ]
|
||||
then
|
||||
rm -rf $installroot/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service
|
||||
fi
|
||||
|
||||
|
||||
#-- Example of booted image versioning
|
||||
#-- We want to know, with what configuration (version of the image) each node was booted.
|
||||
|
||||
@@ -717,7 +717,7 @@ if (@new_order) {
|
||||
@ndrivers = (@new_order, @ndrivers);
|
||||
}
|
||||
|
||||
if (-f "$rootimg_dir/lib/modules/$kernelver/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko") {
|
||||
if (-d "$rootimg_dir/lib/modules/$kernelver/kernel/drivers/net/ethernet/mellanox/mlx4") {
|
||||
for (@ndrivers) {
|
||||
s/mlx_en/mlx4_en/;
|
||||
}
|
||||
|
||||
@@ -13,3 +13,4 @@ perl-DBD-Pg
|
||||
python3
|
||||
tar
|
||||
bzip2
|
||||
bc
|
||||
|
||||
@@ -13,3 +13,4 @@ perl-DBD-Pg
|
||||
python3
|
||||
tar
|
||||
bzip2
|
||||
bc
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
./boot*
|
||||
./etc/bootsplash/themes/SLES/images*
|
||||
./opt/sci/include*
|
||||
./usr/include*
|
||||
./usr/lib/locale*
|
||||
./usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/auto/Encode/CN*
|
||||
./usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/auto/Encode/JP*
|
||||
./usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/auto/Encode/TW*
|
||||
./usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/auto/Encode/KR*
|
||||
./usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/Encode/CN*
|
||||
./usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/Encode/JP*
|
||||
./usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/Encode/KR*
|
||||
./usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/Encode/TW*
|
||||
./usr/lib64/gcc/x86_64-suse-linux/4.3/include*
|
||||
./usr/local/include*
|
||||
./usr/local/man*
|
||||
./usr/x86_64-suse-linux/include*
|
||||
./usr/share/X11/locale/*
|
||||
+./usr/share/X11/locale/en_US.UTF-8*
|
||||
+./usr/share/X11/locale/C*
|
||||
./usr/share/cracklib*
|
||||
./usr/share/doc*
|
||||
./usr/share/doc/packages/cyrus-sasl/doc*
|
||||
./usr/share/gnome*
|
||||
./usr/share/i18n*
|
||||
./usr/share/info*
|
||||
./usr/share/locale/*
|
||||
+./usr/share/locale/en_US*
|
||||
+./usr/share/locale/C*
|
||||
./usr/share/man*
|
||||
./usr/share/omf*
|
||||
./usr/share/vim/site/doc*
|
||||
./usr/share/vim/vim72/doc*
|
||||
./var/cache/man*
|
||||
./var/cache/yum*
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
aaa_base
|
||||
coreutils
|
||||
bash
|
||||
dbus-1
|
||||
wicked
|
||||
device-mapper
|
||||
dracut
|
||||
nfs-kernel-server
|
||||
keyutils
|
||||
lvm2
|
||||
openssl
|
||||
dhcp-client
|
||||
openssh
|
||||
procps
|
||||
psmisc
|
||||
wget
|
||||
sysconfig
|
||||
rsyslog
|
||||
vim
|
||||
rsync
|
||||
timezone
|
||||
bc
|
||||
ntp
|
||||
gzip
|
||||
e2fsprogs
|
||||
parted
|
||||
binutils
|
||||
tar
|
||||
open-iscsi
|
||||
curl
|
||||
btrfsprogs
|
||||
cryptsetup
|
||||
dmraid
|
||||
mdadm
|
||||
multipath-tools
|
||||
gpg2
|
||||
which
|
||||
cifs-utils
|
||||
open-lldp
|
||||
fcoe-utils
|
||||
util-linux-systemd
|
||||
udev
|
||||
kernel-default
|
||||
kernel-firmware
|
||||
adaptec-firmware
|
||||
xz
|
||||
insserv-compat
|
||||
net-tools-deprecated
|
||||
rsyslog
|
||||
iputils
|
||||
@@ -0,0 +1,46 @@
|
||||
#!/bin/sh
|
||||
#-- Do not remove following line if you want to make use of CVS version tracking
|
||||
#-- $Id: compute.postinstall,v 1.21 2008/09/04 12:05:45 sikorsky Exp $
|
||||
#-- jurij.sikorsky@t-systems.cz
|
||||
#--
|
||||
#-- this script is run after all packages from $profile.pkglist are installed
|
||||
#--
|
||||
#-- it gets these arguments:
|
||||
#--
|
||||
#-- $1 = install root (chroot directory for profile)
|
||||
#-- $2 = OS version
|
||||
#-- $3 = architecture
|
||||
#-- $4 = profile name
|
||||
#-- $5 = work dir (where genimage is located)
|
||||
#--
|
||||
#--
|
||||
installroot=$1
|
||||
osver=$2
|
||||
arch=$3
|
||||
profile=$4
|
||||
workdir=$5
|
||||
|
||||
#-- Example how /etc/fstab can be automatically generated during image generation:
|
||||
cat <<END >$installroot/etc/fstab
|
||||
proc /proc proc rw 0 0
|
||||
sysfs /sys sysfs rw 0 0
|
||||
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
|
||||
${profile}_${arch} / tmpfs rw 0 1
|
||||
none /tmp tmpfs defaults,size=10m 0 2
|
||||
none /var/tmp tmpfs defaults,size=10m 0 2
|
||||
END
|
||||
|
||||
#-- Uncomment the line contains "cons" in /etc/inittab
|
||||
#cons:12345:respawn:/sbin/smart_agetty -L 38400 console
|
||||
TMP_inittab=`sed 's/\(#\)\(cons:12345.*\)$/\2/' $installroot/etc/inittab`
|
||||
echo "$TMP_inittab" > $installroot/etc/inittab
|
||||
|
||||
|
||||
#-- Example of booted image versioning
|
||||
#-- We want to know, with what configuration (version of the image) each node was booted.
|
||||
#-- Hence, we keep image definition files and postscripts in CVS. During image generation we create file /etc/IMGVERSION and fill it with CVS "$Id$" of files with image definition (.pkglist, .exlist, .repolist, .postinstall). Then, during boot, each "CVS enabled" postscript (see /install/postscripts/cvs_template.sh and /install/postscripts/cvs_template.pl) adds one line to /etc/IMGVERSION. Then you can determine in any time what image you are running and what postscipts in which versions were run.
|
||||
#cat /dev/null > $installroot/etc/IMGVERSION
|
||||
#for ext in pkglist exlist postinstall repolist; do
|
||||
# [ -r $workdir/$profile.$ext ] && cat $workdir/$profile.$ext | grep -E '^[[:space:]]*#.*[[:space:]]\$Id' >> $installroot/etc/IMGVERSION
|
||||
#done
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
compute.sle15.pkglist
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
echo $drivers
|
||||
dracut_install wget tar cpio gzip modprobe touch echo cut wc xz
|
||||
dracut_install grep ifconfig hostname awk egrep grep dirname expr
|
||||
dracut_install grep ifconfig ip hostname awk egrep grep dirname expr
|
||||
dracut_install mount.nfs
|
||||
dracut_install parted mke2fs bc mkswap swapon chmod
|
||||
inst "$moddir/xcat-updateflag" "/tmp/updateflag"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
echo $drivers
|
||||
dracut_install wget cpio gzip modprobe wc touch echo cut
|
||||
dracut_install grep ifconfig hostname awk egrep grep dirname expr logger
|
||||
dracut_install grep ifconfig ip hostname awk egrep grep dirname expr logger
|
||||
dracut_install parted mke2fs bc mkswap swapon chmod
|
||||
inst "$moddir/xcat-updateflag" "/tmp/updateflag"
|
||||
inst_hook pre-mount 5 "$moddir/xcat-premount.sh"
|
||||
|
||||
@@ -153,11 +153,11 @@ function getdevfrommac() {
|
||||
done
|
||||
}
|
||||
|
||||
for lf in /tmp/dhclient.*.lease; do
|
||||
netif=${lf#*.}
|
||||
netif=${netif%.*}
|
||||
cp $lf "$NEWROOT/var/lib/dhclient/dhclient-$netif.leases"
|
||||
done
|
||||
bootif=$(ls /tmp/net.*.conf|sed -e s/.*net\.// -e s/\.conf//)
|
||||
cat <<EOF > $NEWROOT/etc/sysconfig/network/ifcfg-$bootif
|
||||
BOOTPROTO='dhcp'
|
||||
STARTMODE='auto'
|
||||
EOF
|
||||
|
||||
if [ -f $NEWROOT/etc/hostname ]; then
|
||||
echo `hostname -s` > $NEWROOT/etc/hostname
|
||||
|
||||
@@ -295,12 +295,12 @@ function getdevfrommac() {
|
||||
|
||||
|
||||
if [ -z $STATEMNT ]; then
|
||||
for lf in /tmp/dhclient.*.lease; do
|
||||
netif=${lf#*.}
|
||||
netif=${netif%.*}
|
||||
cp $lf "$NEWROOT/var/lib/dhclient/dhclient-$netif.leases"
|
||||
[ "$xcatdebugmode" > "0" ] && logger -t $log_label -p debug "saving $NEWROOT/var/lib/dhclient/dhclient-$netif.leases"
|
||||
done
|
||||
bootif=$(ls /tmp/net.*.conf|sed -e s/.*net\.// -e s/\.conf//)
|
||||
cat <<EOF > $NEWROOT/etc/sysconfig/network/ifcfg-$bootif
|
||||
BOOTPROTO='dhcp'
|
||||
STARTMODE='auto'
|
||||
EOF
|
||||
[ "$xcatdebugmode" > "0" ] && logger -t $log_label -p debug "saving $NEWROOT/etc/sysconfig/network/ifcfg-$bootif"
|
||||
|
||||
if [ ! -z "$ifname" ]; then
|
||||
MACX=${ifname#*:}
|
||||
@@ -336,6 +336,9 @@ fi
|
||||
|
||||
[ "$xcatdebugmode" > "0" ] && logger -t $log_label -p debug "setting hostname..."
|
||||
echo `hostname` > $NEWROOT/etc/hostname
|
||||
if [ ! -z $NODE ]; then
|
||||
echo $NODE > $NEWROOT/etc/hostname
|
||||
fi
|
||||
|
||||
logger $SYSLOGHOST -t $log_label -p debug "Exiting xcatroot..."
|
||||
|
||||
|
||||
@@ -72,6 +72,31 @@ sub xdie {
|
||||
die @_;
|
||||
}
|
||||
|
||||
sub umount {
|
||||
# some rpms mounts the imageroot/proc on the /proc, need to release it,
|
||||
# otherwise got kernal panic when installing
|
||||
# sometimes, the proc fs is not mounted, so one warning/error message will display,
|
||||
# and I add one check point here.
|
||||
my $MFD;
|
||||
open MFD, "/proc/mounts";
|
||||
my @lines = <MFD>;
|
||||
close MFD;
|
||||
|
||||
my $ret = grep m{$rootimg_dir/proc}, @lines;
|
||||
if ($ret > 0) {
|
||||
system("umount -l $rootimg_dir/proc");
|
||||
}
|
||||
$ret = grep m{$rootimg_dir/sys}, @lines;
|
||||
if ($ret > 0) {
|
||||
system("umount -l $rootimg_dir/sys");
|
||||
}
|
||||
}
|
||||
|
||||
# Make sure we clean up all mounts everytime
|
||||
END {
|
||||
umount();
|
||||
}
|
||||
|
||||
#-- fetch current version form CVS (overwrite locally changed versions)
|
||||
# if (opendir(CVS,"$pathtofiles/CVS")){
|
||||
# close CVS;
|
||||
@@ -203,7 +228,7 @@ unless (grep /af_packet/, @ndrivers) {
|
||||
}
|
||||
|
||||
my $osver_host;
|
||||
if (`grep VERSION /etc/SuSE-release` =~ /VERSION = (\d+)/) {
|
||||
if (`grep VERSION /etc/os-release` =~ /VERSION="(\d+)/) {
|
||||
$osver_host = $1;
|
||||
} else {
|
||||
$osver_host = 11;
|
||||
@@ -225,26 +250,32 @@ unless ($onlyinitrd) {
|
||||
|
||||
mkpath "$rootimg_dir/etc";
|
||||
mkpath "$rootimg_dir/dev";
|
||||
mkpath "$rootimg_dir/proc";
|
||||
mkpath "$rootimg_dir/sys";
|
||||
|
||||
#needed for newer versions of the SLE permissions RPM. See: https://github.com/openSUSE/permissions/commit/2d0ef5d55b30f72322d18951214353ecfd9c4245
|
||||
system "mount -t proc proc $rootimg_dir/proc";
|
||||
#Create /sys to have /sys/kernel/fscaps. Fixes: "Warning: running kernel does not support fscaps"
|
||||
system "mount -o bind /sys $rootimg_dir/sys";
|
||||
|
||||
#system "mount -o bind /dev $rootimg_dir/dev";
|
||||
unless (-e "$rootimg_dir/dev/zero") {
|
||||
system "mknod $rootimg_dir/dev/zero c 1 5";
|
||||
system "mknod -m 0666 $rootimg_dir/dev/zero c 1 5";
|
||||
}
|
||||
unless (-e "$rootimg_dir/dev/null") {
|
||||
system "mknod $rootimg_dir/dev/null c 1 3"; #that's neccessary for SLES11
|
||||
system "mknod -m 0666 $rootimg_dir/dev/null c 1 3"; #that's neccessary for SLES11+
|
||||
}
|
||||
|
||||
unless (-e "$rootimg_dir/dev/random") {
|
||||
system "mknod $rootimg_dir/dev/random c 1 8"; #that's neccessary for SLES11
|
||||
system "mknod -m 0666 $rootimg_dir/dev/random c 1 8"; #that's neccessary for SLES11+
|
||||
}
|
||||
unless (-e "$rootimg_dir/dev/urandom") {
|
||||
system "mknod $rootimg_dir/dev/urandom c 1 9"; #that's neccessary for SLES11
|
||||
system "mknod -m 0666 $rootimg_dir/dev/urandom c 1 9"; #that's neccessary for SLES11+
|
||||
}
|
||||
|
||||
for (my $i = 0 ; $i <= 12 ; $i++)
|
||||
{
|
||||
unless (-e "$rootimg_dir/dev/tty$i") {
|
||||
system "mknod $rootimg_dir/dev/tty$i c 4 $i"; #that's neccessary for SLES11
|
||||
system "mknod $rootimg_dir/dev/tty$i c 4 $i"; #that's neccessary for SLES11+
|
||||
}
|
||||
}
|
||||
|
||||
@@ -264,11 +295,17 @@ unless ($onlyinitrd) {
|
||||
|
||||
# To support multiple paths for osimage.pkgdir
|
||||
foreach $dir (@pkgdirs) {
|
||||
my $ddir = $dir;
|
||||
if (-d "$dir/1") {
|
||||
$dir .= "/1";
|
||||
$ddir .= "/1";
|
||||
}
|
||||
system("zypper -R $rootimg_dir $non_interactive ar file:$dir $osver-$i");
|
||||
system("zypper -R $rootimg_dir $non_interactive ar file:$ddir $osver-$i");
|
||||
$i++;
|
||||
if (-d "$dir/2") {
|
||||
$ddir = $dir . "/2";
|
||||
system("zypper -R $rootimg_dir $non_interactive ar file:$ddir $osver-$i");
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
|
||||
#if(-e "$rootimg_dir/etc/zypp/repos.d/$osver.repo") {
|
||||
@@ -391,6 +428,12 @@ unless ($onlyinitrd) {
|
||||
#my $yumcmd = "yum -y -c /tmp/genimage.$$.yum.conf --installroot=$rootimg_dir --disablerepo=* ";
|
||||
#$yumcmd .= "install ";
|
||||
#mkpath("$rootimg_dir/var/lib/yum");
|
||||
if (! -f "$rootimg_dir/etc/passwd") {
|
||||
mkpath("$rootimg_dir/etc/");
|
||||
my $passwdfile;
|
||||
open($passwdfile, ">", "$rootimg_dir/etc/passwd");
|
||||
print $passwdfile "root:x:0:0:root:/root:/bin/bash\n";
|
||||
}
|
||||
my $yumcmd;
|
||||
if ($osver_host < 11) {
|
||||
$yumcmd = "zypper -R $rootimg_dir $non_interactive install ";
|
||||
@@ -862,19 +905,8 @@ system("cd $rootimg_dir/usr/bin/; ln -s ../../bin/keyctl $rootimg_dir/usr/bin/ke
|
||||
|
||||
# which is different from the Redhat family
|
||||
|
||||
# some rpms mounts the imageroot/proc on the /proc, need to release it,
|
||||
# otherwise got kernal panic when installing
|
||||
# sometimes, the proc fs is not mounted, so one warning/error message will display,
|
||||
# and I add one check point here.
|
||||
my $MFD;
|
||||
open MFD, "/proc/mounts";
|
||||
my @lines = <MFD>;
|
||||
close MFD;
|
||||
|
||||
my $ret = grep m{$rootimg_dir/proc}, @lines;
|
||||
if ($ret > 0) {
|
||||
system("umount -l $rootimg_dir/proc");
|
||||
}
|
||||
# umount /proc and /sys from rootimg
|
||||
umount();
|
||||
|
||||
# Load driver update disk, and copy them to the root image
|
||||
my @dd_drivers = &load_dd();
|
||||
@@ -1939,8 +1971,12 @@ sub generic_post { # This function is meant to leave the image in a state approx
|
||||
system("sed -i 's!\\(HWCLOCK=\\).*!\\1\"--localtime\"!' $rootimg_dir/etc/sysconfig/clock");
|
||||
}
|
||||
|
||||
if (-e "$rootimg_dir/etc/sysconfig/network/dhcp") {
|
||||
system("sed -i 's!^DHCLIENT_SET_HOSTNAME=\\\"no\\\"!DHCLIENT_SET_HOSTNAME=\\\"yes\\\"!' $rootimg_dir/etc/sysconfig/network/dhcp");
|
||||
}
|
||||
|
||||
unlink("$rootimg_dir/dev/null");
|
||||
system("mknod $rootimg_dir/dev/null c 1 3");
|
||||
system("mknod -m 0666 $rootimg_dir/dev/null c 1 3");
|
||||
open($cfgfile, ">", "$rootimg_dir/etc/fstab");
|
||||
print $cfgfile "devpts /dev/pts devpts gid=5,mode=620 0 0\n";
|
||||
print $cfgfile "tmpfs /dev/shm tmpfs defaults 0 0\n";
|
||||
@@ -1963,9 +1999,12 @@ sub generic_post { # This function is meant to leave the image in a state approx
|
||||
print $cfgfile "NETWORKING=yes\n";
|
||||
close($cfgfile);
|
||||
|
||||
open($cfgfile, ">", "$rootimg_dir/etc/resolv.conf");
|
||||
print $cfgfile "#Dummy resolv.conf to make boot cleaner";
|
||||
close($cfgfile);
|
||||
# SLE15 has a symlink to /run/netconfig/resolv.conf and does not need a dummy file
|
||||
if (! -l "$rootimg_dir/etc/resolv.conf") {
|
||||
open($cfgfile, ">", "$rootimg_dir/etc/resolv.conf");
|
||||
print $cfgfile "#Dummy resolv.conf to make boot cleaner";
|
||||
close($cfgfile);
|
||||
}
|
||||
|
||||
# Create the ifcfg-x file for diskless node. But keep the ONBOOT=no
|
||||
# to skip the break of nfs-based boot
|
||||
@@ -2048,8 +2087,10 @@ sub generic_post { # This function is meant to leave the image in a state approx
|
||||
chmod(0755, "$rootimg_dir/etc/init.d/gettyset");
|
||||
}
|
||||
|
||||
copy("$installroot/postscripts/xcatpostinit", "$rootimg_dir/etc/init.d/xcatpostinit");
|
||||
chmod(0755, "$rootimg_dir/etc/init.d/xcatpostinit");
|
||||
system("mkdir -p $rootimg_dir/opt/xcat");
|
||||
copy("$installroot/postscripts/xcatpostinit", "$rootimg_dir/opt/xcat/xcatpostinit");
|
||||
chmod(0755, "$rootimg_dir/opt/xcat/xcatpostinit");
|
||||
copy("$installroot/postscripts/xcatpostinit.service", "$rootimg_dir/usr/lib/systemd/system/xcatpostinit.service");
|
||||
|
||||
#
|
||||
# set certain system services to start on boot, if the file exists in /etc/init.d as a script,
|
||||
@@ -2068,7 +2109,7 @@ sub generic_post { # This function is meant to leave the image in a state approx
|
||||
system("$cmd");
|
||||
}
|
||||
else {
|
||||
$cmd = $cmd . "systemctl start $service.service";
|
||||
$cmd = $cmd . "systemctl enable $service.service";
|
||||
system("$cmd");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
aaa_base
|
||||
adaptec-firmware
|
||||
apache2
|
||||
apache2-prefork
|
||||
bash
|
||||
bind
|
||||
bind-utils
|
||||
binutils
|
||||
bc
|
||||
btrfsprogs
|
||||
bzip2
|
||||
cifs-utils
|
||||
coreutils
|
||||
cron
|
||||
cryptsetup
|
||||
curl
|
||||
dhcp
|
||||
dhcp-client
|
||||
dhcp-relay
|
||||
dhcp-server
|
||||
dmraid
|
||||
e2fsprogs
|
||||
fcoe-utils
|
||||
gpg2
|
||||
gzip
|
||||
xz
|
||||
kernel-default
|
||||
keyutils
|
||||
lvm2
|
||||
mdadm
|
||||
multipath-tools
|
||||
nfs-kernel-server
|
||||
ntp
|
||||
openssh
|
||||
openssl
|
||||
open-iscsi
|
||||
open-lldp
|
||||
pam
|
||||
pam-modules
|
||||
parted
|
||||
perl-doc
|
||||
perl-Expect
|
||||
plymouth
|
||||
plymouth-dracut
|
||||
procps
|
||||
psmisc
|
||||
rpm
|
||||
rsync
|
||||
sysconfig
|
||||
tar
|
||||
timezone
|
||||
udev
|
||||
util-linux
|
||||
util-linux-systemd
|
||||
vim
|
||||
vsftpd
|
||||
wget
|
||||
which
|
||||
zypper
|
||||
insserv-compat
|
||||
net-tools-deprecated
|
||||
rsyslog
|
||||
#for database
|
||||
unixODBC
|
||||
perl-DBD-mysql
|
||||
mariadb-client
|
||||
#libmysqlclient18
|
||||
# The following rpms are available on the SLES SDK
|
||||
# You will need to locate and make these rpms available in your zypper
|
||||
# repository for service node installs and uncomment the following lines:
|
||||
#MyODBC-unixODBC
|
||||
perl-DBD-Pg
|
||||
iputils
|
||||
@@ -0,0 +1,68 @@
|
||||
#!/bin/sh
|
||||
#-- Do not remove following line if you want to make use of CVS version tracking
|
||||
#-- $Id: compute.postinstall,v 1.21 2008/09/04 12:05:45 sikorsky Exp $
|
||||
#-- jurij.sikorsky@t-systems.cz
|
||||
#--
|
||||
#-- this script is run after all packages from $profile.pkglist are installed
|
||||
#--
|
||||
#-- it gets these arguments:
|
||||
#--
|
||||
#-- $1 = install root (chroot directory for profile)
|
||||
#-- $2 = OS version
|
||||
#-- $3 = architecture
|
||||
#-- $4 = profile name
|
||||
#-- $5 = work dir (where genimage is located)
|
||||
#--
|
||||
#--
|
||||
installroot=$1
|
||||
osver=$2
|
||||
arch=$3
|
||||
profile=$4
|
||||
workdir=$5
|
||||
|
||||
#-- Example how /etc/fstab can be automatically generated during image generation:
|
||||
cp $installroot/etc/fstab $installroot/etc/fstab.prev
|
||||
cat <<END >$installroot/etc/fstab
|
||||
proc /proc proc rw 0 0
|
||||
sysfs /sys sysfs rw 0 0
|
||||
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
|
||||
${profile}_${arch} / tmpfs rw 0 1
|
||||
none /tmp tmpfs defaults,size=10m 0 2
|
||||
none /var/tmp tmpfs defaults,size=10m 0 2
|
||||
END
|
||||
|
||||
|
||||
cat <<END >>$installroot/etc/hosts
|
||||
`getent hosts $HOSTNAME`
|
||||
END
|
||||
|
||||
#Prevent DHCP from starting up until xcatd has had a chance to configure it:
|
||||
chroot $installroot chkconfig dhcpd off
|
||||
chroot $installroot chkconfig dhcrelay off
|
||||
|
||||
#turn on some services
|
||||
chroot $installroot chkconfig dbus on
|
||||
chroot $installroot chkconfig boot.localnet on
|
||||
chroot $installroot chkconfig haldaemon on
|
||||
chroot $installroot chkconfig network on
|
||||
chroot $installroot chkconfig syslog on
|
||||
chroot $installroot chkconfig apache2 on
|
||||
|
||||
#export /install as read-only
|
||||
mkdir -p /install
|
||||
echo '/install *(ro,no_root_squash,sync,fsid=13)' > $installroot/etc/exports
|
||||
|
||||
#uncomment out the cons line in etc/inittab
|
||||
#sed -i 's/^\#\(\s\)*cons/cons/' $installroot/etc/inittab
|
||||
|
||||
TMP_inittab=`sed 's/\(#\)\(cons:12345.*\)$/\2/' $installroot/etc/inittab`
|
||||
echo "$TMP_inittab" > $installroot/etc/inittab
|
||||
|
||||
|
||||
#-- Example of booted image versioning
|
||||
#-- We want to know, with what configuration (version of the image) each node was booted.
|
||||
#-- Hence, we keep image definition files and postscripts in CVS. During image generation we create file /etc/IMGVERSION and fill it with CVS "$Id$" of files with image definition (.pkglist, .exlist, .repolist, .postinstall). Then, during boot, each "CVS enabled" postscript (see /install/postscripts/cvs_template.sh and /install/postscripts/cvs_template.pl) adds one line to /etc/IMGVERSION. Then you can determine in any time what image you are running and what postscipts in which versions were run.
|
||||
#cat /dev/null > $installroot/etc/IMGVERSION
|
||||
#for ext in pkglist exlist postinstall repolist; do
|
||||
# [ -r $workdir/$profile.$ext ] && cat $workdir/$profile.$ext | grep -E '^[[:space:]]*#.*[[:space:]]\$Id' >> $installroot/etc/IMGVERSION
|
||||
#done
|
||||
@@ -0,0 +1,3 @@
|
||||
-perl-doc
|
||||
xcat/xcat-core/xCATsn
|
||||
xcat/xcat-dep/sles15/ppc64le/goconserver
|
||||
@@ -0,0 +1,3 @@
|
||||
-perl-doc
|
||||
xcat/xcat-core/xCATsn
|
||||
xcat/xcat-dep/sles15/x86_64/goconserver
|
||||
+107
@@ -0,0 +1,107 @@
|
||||
#!/bin/sh
|
||||
|
||||
##########################################################################
|
||||
# This script does the following:
|
||||
# - use nmap for the range given (ex: 172.11.139.3-5) to generate list of IP address
|
||||
# - try to connect using REST api
|
||||
# with root/0penBmc (Witherspoon) or
|
||||
# ADMIN/ADMIN (Boston) to check if this is OpenBMC system
|
||||
# - check the output of the REST login to see if password needs to be changed
|
||||
# - use REST call to change to user provided password
|
||||
# - report error is password does not meet PAM validation rules
|
||||
#
|
||||
# Usage: $0 -r <ip_ranges> -n <new BMC Password>
|
||||
# Note: If this script is being used in the process of discovering new BMCs,
|
||||
# the new BMC password should be passed to bmcdiscover command
|
||||
# using the [-p|--bmcpasswd] option.
|
||||
##########################################################################
|
||||
|
||||
|
||||
if [ $# -le 3 ]; then
|
||||
echo "
|
||||
Change the default root or ADMIN password of the BMC to the one
|
||||
specified by '-n' flag. Use the same password when discovering new
|
||||
BMCs, by passing it with '[-p|--bmcpasswd]' option to 'bmcdiscover' command.
|
||||
"
|
||||
echo "Usage:"
|
||||
echo " $0 -r <ip_ranges> -n <new BMC Password> "
|
||||
echo "Examples:"
|
||||
echo " Target one node:"
|
||||
echo " $0 -r 172.11.139.1 -n 0penBmc123"
|
||||
echo " Target a range of nodes:"
|
||||
echo " $0 -r 172.11.139.1-12 -n 0penBmc123"
|
||||
exit
|
||||
fi
|
||||
|
||||
while getopts n:r:h: option
|
||||
do
|
||||
case "${option}"
|
||||
in
|
||||
r) RANGE=${OPTARG};;
|
||||
n) NEW=${OPTARG};;
|
||||
esac
|
||||
done
|
||||
|
||||
if ! [ -x "$(command -v nmap)" ]; then
|
||||
echo 'Error: nmap is not installed.' >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#Generate the list of IP addresses in the range that user provided
|
||||
nmap -n -sn $RANGE -oG - | awk '/Up$/{print $2}' > /tmp/$$.ip.list
|
||||
|
||||
WITHERSPOON_DEFAULT_USER="root"
|
||||
WITHERSPOON_DEFAULT_PW="0penBmc"
|
||||
|
||||
BOSTON_DEFAULT_USER="ADMIN"
|
||||
BOSTON_DEFAULT_PW="ADMIN"
|
||||
|
||||
CHANGE_PW_REQUIRED="The password provided for this account must be changed before access is granted"
|
||||
PW_PAM_VALIDATION="password value failed PAM validation checks"
|
||||
UNAUTHORIZED="Unauthorized"
|
||||
|
||||
for name in `cat /tmp/$$.ip.list`
|
||||
do
|
||||
|
||||
## Look for Witherspoon first
|
||||
SYSTEM_TYPE="Witherspoon"
|
||||
PasswordChangeNeeded=`curl -sD - --data '{"UserName":"'"$WITHERSPOON_DEFAULT_USER"'","Password":"'"$WITHERSPOON_DEFAULT_PW"'"}' -k -X POST https://$name/redfish/v1/SessionService/Sessions`
|
||||
|
||||
if [[ "$PasswordChangeNeeded" =~ "$CHANGE_PW_REQUIRED" ]]; then
|
||||
echo "$name: Password change needed for $SYSTEM_TYPE system"
|
||||
PasswordChanged=`curl -u $WITHERSPOON_DEFAULT_USER:$WITHERSPOON_DEFAULT_PW --data '{"Password":"'"$NEW"'"}' -k -X PATCH https://$name/redfish/v1/AccountService/Accounts/$WITHERSPOON_DEFAULT_USER 2> /dev/null`
|
||||
if [[ "$PasswordChanged" =~ "$PW_PAM_VALIDATION" ]]; then
|
||||
echo "$name: Can not change password for $SYSTEM_TYPE system - $PW_PAM_VALIDATION"
|
||||
elif [[ -z "$PasswordChanged" ]]; then
|
||||
# If no output, password change was successful
|
||||
echo "$name: Password for $SYSTEM_TYPE system changed. It might take up to 5 minutes for the BMC to update."
|
||||
else
|
||||
# Some unexpected output changing the password - report error and show output
|
||||
echo "$name: Unable to change password for $SYSTEM_TYPE system - $PasswordChanged"
|
||||
fi
|
||||
|
||||
continue
|
||||
fi
|
||||
|
||||
## Look for Boston next
|
||||
SYSTEM_TYPE="Boston"
|
||||
PasswordChangeNeeded=`curl -sD - --data '{"UserName":"'"$BOSTON_DEFAULT_USER"'","Password":"'"$BOSTON_DEFAULT_PW"'"}' -k -X POST https://$name/redfish/v1/SessionService/Sessions`
|
||||
if [[ "$PasswordChangeNeeded" =~ "$CHANGE_PW_REQUIRED" ]]; then
|
||||
echo "$name: Password change needed for $SYSTEM_TYPE system"
|
||||
PasswordChanged=`curl -u $BOSTON_DEFAULT_USER:$BOSTON_DEFAULT_PW --data '{"Password":"'"$NEW"'"}' -k -X PATCH https://$name/redfish/v1/AccountService/Accounts/2 2> /dev/null`
|
||||
if [[ "$PasswordChanged" =~ "$PW_PAM_VALIDATION" ]]; then
|
||||
echo "$name: Can not change password for $SYSTEM_TYPE system - $PW_PAM_VALIDATION"
|
||||
elif [[ -z "$PasswordChanged" ]]; then
|
||||
# If no output, password change was successful
|
||||
echo "$name: Password for $SYSTEM_TYPE system changed. It might take up to 5 minutes for the BMC to update."
|
||||
else
|
||||
# Some unexpected output changing the password - report error and show output
|
||||
echo "$name: Unable to change password for $SYSTEM_TYPE system - $PasswordChanged"
|
||||
fi
|
||||
|
||||
continue
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
rm /tmp/$$.ip.list
|
||||
@@ -409,7 +409,8 @@ sub config_snmp {
|
||||
my $cfg_access3="snmp-server access 5 security usm\r";
|
||||
my $cfg_access4="snmp-server access 5 read-view iso\r";
|
||||
|
||||
$mysw->slave->stty(qw(sane -echo));
|
||||
$mysw->debug(0);
|
||||
$mysw->log_stdout(0); # suppress stdout output..
|
||||
|
||||
unless ($mysw->spawn($login_cmd))
|
||||
{
|
||||
@@ -522,7 +523,8 @@ sub config_G8264 {
|
||||
my $main_prompt="Main#";
|
||||
my $authpw_cmd = "/cfg/sys/ssnmp/snmpv3/usm 5/authpw\r";
|
||||
|
||||
$mysw->slave->stty(qw(sane -echo));
|
||||
$mysw->debug(0);
|
||||
$mysw->log_stdout(0); # suppress stdout output..
|
||||
|
||||
unless ($mysw->spawn($login_cmd))
|
||||
{
|
||||
|
||||
@@ -226,7 +226,6 @@ sub cumulus_connect {
|
||||
|
||||
$ssh->debug(0);
|
||||
$ssh->log_stdout(0); # suppress stdout output..
|
||||
$ssh->slave->stty(qw(sane -echo));
|
||||
|
||||
unless ($ssh->spawn($command, @parameters))
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# go-xcat - Install xCAT automatically.
|
||||
#
|
||||
# Version 1.0.44
|
||||
# Version 1.0.45
|
||||
#
|
||||
# Copyright (C) 2016 - 2019 International Business Machines
|
||||
# Eclipse Public License, Version 1.0 (EPL-1.0)
|
||||
@@ -27,6 +27,8 @@
|
||||
# - Added conserver-xcat to uninstall list
|
||||
# 2019-10-23 Mark Gurevich <gurevich@us.ibm.com>
|
||||
# - Display a list of packages that could not be uninstalled
|
||||
# 2019-11-05 Mark Gurevich <gurevich@us.ibm.com>
|
||||
# - Display a list of packages that will be installed before "Continue?"
|
||||
#
|
||||
|
||||
function usage()
|
||||
@@ -624,7 +626,7 @@ function check_repo_version_yum()
|
||||
{
|
||||
type yum >/dev/null 2>&1 || return 255
|
||||
check_executes repoquery
|
||||
exit_if_bad "$?" "Install the \`yum-utils' package and rerun."
|
||||
exit_if_bad "$?" "Install the \`yum-utils' or \`dnf-utils' package and rerun."
|
||||
local -a name=()
|
||||
local -a ver=()
|
||||
while read -r name ver
|
||||
@@ -2156,6 +2158,7 @@ case "${GO_XCAT_ACTION}" in
|
||||
;;
|
||||
"install"|"update")
|
||||
GO_XCAT_INSTALLER="${GO_XCAT_ACTION}_xcat"
|
||||
list_xcat_packages
|
||||
ask_to_continue "${GO_XCAT_YES[0]}" "xCAT is going to be ${GO_XCAT_ACTION/%e/}ed."
|
||||
# Use `-y' here. Since the STDOUT is redirected.
|
||||
# `yum' does not display the prompt message properly when
|
||||
|
||||
@@ -171,6 +171,9 @@ noderm_err_node
|
||||
noderm_h
|
||||
noderm_noderange
|
||||
noderm_null
|
||||
nodepurge_err_node
|
||||
nodepurge_h
|
||||
nodepurge_null
|
||||
nodestat_err_node
|
||||
restorexCAT_h
|
||||
restorexCATdb_a_p_V
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
addkit_v
|
||||
addkit_h
|
||||
addkit_kit
|
||||
addkit_i
|
||||
addkit_multikit
|
||||
addkit_p
|
||||
addkitcomp_v
|
||||
addkitcomp_h
|
||||
addkitcomp_i
|
||||
addkitcomp_f
|
||||
buildkit_v
|
||||
buildkit_h
|
||||
buildkit_create
|
||||
buildkit_create_l
|
||||
buildkit_cleanrepo_all
|
||||
buildkit_buildtar
|
||||
chkkitcomp_v
|
||||
chkkitcomp_h
|
||||
chkkitcomp_V
|
||||
lskit_v
|
||||
lskit_h
|
||||
lskit_F
|
||||
lskit_K
|
||||
lskit_R
|
||||
lskit_C
|
||||
lskitcomp_v
|
||||
lskitcomp_h
|
||||
lskitcomp_C
|
||||
lskitcomp_S
|
||||
lskitdeployparam_v
|
||||
lskitdeployparam_h
|
||||
lskitdeployparam_no_param
|
||||
lskitdeployparam_k_1
|
||||
lskitdeployparam_c_1
|
||||
rmkit_v
|
||||
rmkit_h
|
||||
rmkit_t_no
|
||||
rmkit_t_yes
|
||||
rmkit_f
|
||||
rmkit_V
|
||||
rmkitcomp_v
|
||||
rmkitcomp_h
|
||||
@@ -212,6 +212,10 @@ noderm_err_node
|
||||
noderm_h
|
||||
noderm_noderange
|
||||
noderm_null
|
||||
nodepurge_err_node
|
||||
nodepurge_h
|
||||
nodepurge_noderange
|
||||
nodepurge_null
|
||||
tabdump_servicenode
|
||||
nodeset_check_warninginfo
|
||||
nodeset_errorcommand
|
||||
|
||||
@@ -205,6 +205,10 @@ noderm_err_node
|
||||
noderm_h
|
||||
noderm_noderange
|
||||
noderm_null
|
||||
nodepurge_err_node
|
||||
nodepurge_h
|
||||
nodepurge_noderange
|
||||
nodepurge_null
|
||||
nodeset_check_warninginfo
|
||||
nodeset_disjointdhcps_petitboot
|
||||
nodeset_errorcommand
|
||||
@@ -300,3 +304,4 @@ xcatstanzafile_normal
|
||||
xcatstanzafile_objtype
|
||||
xcatstanzafile_specificvalue
|
||||
xcatstanzafile_tab
|
||||
go_xcat_devel_from_repo
|
||||
|
||||
@@ -205,6 +205,10 @@ noderm_err_node
|
||||
noderm_h
|
||||
noderm_noderange
|
||||
noderm_null
|
||||
nodepurge_err_node
|
||||
nodepurge_h
|
||||
nodepurge_noderange
|
||||
nodepurge_null
|
||||
nodeset_check_warninginfo
|
||||
nodeset_errorcommand
|
||||
nodeset_xnba
|
||||
@@ -299,3 +303,4 @@ xcatstanzafile_normal
|
||||
xcatstanzafile_objtype
|
||||
xcatstanzafile_specificvalue
|
||||
xcatstanzafile_tab
|
||||
go_xcat_devel_from_repo
|
||||
|
||||
@@ -170,6 +170,10 @@ noderm_err_node
|
||||
noderm_h
|
||||
noderm_noderange
|
||||
noderm_null
|
||||
nodepurge_err_node
|
||||
nodepurge_h
|
||||
nodepurge_noderange
|
||||
nodepurge_null
|
||||
nodeset_check_warninginfo
|
||||
nodeset_errorcommand
|
||||
nodeset_grub2
|
||||
|
||||
@@ -155,6 +155,10 @@ noderm_err_node
|
||||
noderm_h
|
||||
noderm_noderange
|
||||
noderm_null
|
||||
nodepurge_err_node
|
||||
nodepurge_h
|
||||
nodepurge_noderange
|
||||
nodepurge_null
|
||||
nodeset_check_warninginfo
|
||||
nodeset_disjointdhcps_petitboot
|
||||
nodeset_errorcommand
|
||||
@@ -244,3 +248,4 @@ xcatstanzafile_normal
|
||||
xcatstanzafile_objtype
|
||||
xcatstanzafile_specificvalue
|
||||
xcatstanzafile_tab
|
||||
go_xcat_devel_from_repo
|
||||
|
||||
@@ -17,5 +17,3 @@ nodeset_shell
|
||||
reg_linux_diskfull_installation_flat
|
||||
reg_linux_diskless_installation_flat
|
||||
reg_linux_statelite_installation_flat
|
||||
sles_migration1
|
||||
sles_migration2
|
||||
|
||||
@@ -155,6 +155,10 @@ noderm_err_node
|
||||
noderm_h
|
||||
noderm_noderange
|
||||
noderm_null
|
||||
nodepurge_err_node
|
||||
nodepurge_h
|
||||
nodepurge_noderange
|
||||
nodepurge_null
|
||||
nodeset_check_warninginfo
|
||||
nodeset_errorcommand
|
||||
nodeset_noderange
|
||||
@@ -243,3 +247,4 @@ xcatstanzafile_normal
|
||||
xcatstanzafile_objtype
|
||||
xcatstanzafile_specificvalue
|
||||
xcatstanzafile_tab
|
||||
go_xcat_devel_from_repo
|
||||
|
||||
@@ -17,5 +17,3 @@ nodeset_shell
|
||||
reg_linux_diskfull_installation_flat
|
||||
reg_linux_diskless_installation_flat
|
||||
reg_linux_statelite_installation_flat
|
||||
sles_migration1
|
||||
sles_migration2
|
||||
|
||||
@@ -125,6 +125,10 @@ noderm_err_node
|
||||
noderm_h
|
||||
noderm_noderange
|
||||
noderm_null
|
||||
nodepurge_err_node
|
||||
nodepurge_h
|
||||
nodepurge_noderange
|
||||
nodepurge_null
|
||||
nodeset_errorcommand
|
||||
nodeset_check_warninginfo
|
||||
nodeset_grub2
|
||||
|
||||
@@ -125,6 +125,10 @@ noderm_err_node
|
||||
noderm_h
|
||||
noderm_noderange
|
||||
noderm_null
|
||||
nodepurge_err_node
|
||||
nodepurge_h
|
||||
nodepurge_noderange
|
||||
nodepurge_null
|
||||
nodeset_errorcommand
|
||||
nodeset_check_warninginfo
|
||||
nodeset_noderange
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user