2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-06-02 11:37:07 +00:00

Merge pull request #1 from xcat2/master

Bringing fork up to date
This commit is contained in:
Chuck Brazie 2016-05-25 07:44:07 -04:00
commit 62891bdc25
162 changed files with 8036 additions and 503 deletions

14
README
View File

@ -1,14 +0,0 @@
xCAT - eXtreme Cloud Administration Toolkit
xCAT is a toolkit for the deployment and administration of clusters.
xCAT documentation is available at: http://xcat-docs.readthedocs.org/en/latest/
xCAT is made available as open source software under the EPL license:
http://www.opensource.org/licenses/eclipse-1.0.php
Developers and prospective contributors are encouraged to read the developers
guide: http://xcat-docs.readthedocs.org/en/latest/developers/
and in particular the github related subsection:
http://xcat-docs.readthedocs.org/en/latest/developers/github/

39
README.rst Normal file
View File

@ -0,0 +1,39 @@
xCAT
----
xCAT is a toolkit for the deployment and administration of clusters.
Documentation
-------------
xCAT documentation is available at: http://xcat-docs.readthedocs.io/en/latest/
|docs_latest| |docs_212| |docs_211|
Open Source License
-------------------
xCAT is made available as open source software under the EPL license:
http://www.opensource.org/licenses/eclipse-1.0.php
Developers
----------
Developers and prospective contributors are encouraged to read the `Developers Guide <http://xcat-docs.readthedocs.io/en/latest/developers/>`_
In particular the `GitHub <http://xcat-docs.readthedocs.io/en/latest/developers/github/>`_ related subsection.
.. |docs_212| image:: https://readthedocs.org/projects/xcat-docs/badge/?version=2.12
:alt: 2.12 documentation status
:scale: 100%
:target: http://xcat-docs.readthedocs.io/en/2.12/
.. |docs_211| image:: https://readthedocs.org/projects/xcat-docs/badge/?version=2.11
:alt: 2.11 documentation status
:scale: 100%
:target: http://xcat-docs.readthedocs.io/en/2.11/
.. |docs_latest| image:: https://readthedocs.org/projects/xcat-docs/badge/?version=latest
:alt: Latest documentation status
:scale: 100%
:target: http://xcat-docs.readthedocs.io/en/latest/

View File

@ -1 +1 @@
2.12
2.12.1

View File

@ -1,21 +1,27 @@
# Welcome to the xCAT documentation
We are working on improving the documentation. The latest docs are here: http://xcat-docs.readthedocs.org/en/latest/
The latest docs are here: http://xcat-docs.readthedocs.io/en/latest/
The documentation project is written in restructured text (.rst) using Sphinx.
To build the docs locally:
Status:
[![Documentation Status](http://readthedocs.org/projects/xcat-docs/badge/?version=latest)](http://xcat-docs.readthedocs.io/en/latest/?badge=latest)
[![Documentation Status](http://readthedocs.org/projects/xcat-docs/badge/?version=2.11)](http://xcat-docs.readthedocs.io/en/2.11/?badge=2.11)
The documentation project is written in restructured text (.rst) using Sphinx and hosted on ReadTheDocs.
## Building Documentation
* Clone the project
* Using pip, install sphinx (See: http://pip.readthedocs.org/)
```
```
pip install sphinx
```
```
* Build the Docs
```
```
cd xcat-core/docs
make html
```
```
* View the docs by opening index.html from a web browser under xcat-core/docs/build/html/index.html

View File

@ -146,9 +146,10 @@ To update the xCAT Docker image, you can run ::
Known Issues
------------
.. [1] When you start up xCAT Docker container, you might see an error message at the end of the output like: ::
.. [1]
When you start up xCAT Docker container, you might see an error message at the end of the output like: ::
"Couldn't connect to Docker daemon at http+unix://var/run/docker.sock - is it running? If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable."
Couldn't connect to Docker daemon at http+unix://var/run/docker.sock - is it running? If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.`
You can ignore it, the container has already been running. It is a Docker bug `#1214 <https://github.com/docker/compose/issues/1214>`_
You can ignore it, the container has already been running. It is a Docker bug `#1214 <https://github.com/docker/compose/issues/1214>`_

View File

@ -5,7 +5,8 @@ The Docker linux container technology is currently very popular. xCAT can help m
This document describes how to use xCAT for docker management, from Docker Host setup to docker container operationis.
**Note:** The document is based on **Docker Version 1.10.x** and **Docker API version 1.22.** And the Docker Host is based on **ubuntu14.04.3 x86_64**. At the time of this writing (February 2016), docker host images are not available for **ppc64** architecture from docker.org. You can search online to find them or build your own.
**Note:** The document was verified with **Docker Version 1.10, 1.11** and **Docker API version 1.22.** The Docker Host was verified on **ubuntu14.04.3 x86_64**, **ubuntu15.10 x86_64**, **ubuntu16.04 x86_64** and **ubuntu16.04 ppc64el**.
Setting up Docker Host
----------------------
@ -23,17 +24,20 @@ The osimage represents the image of the Operating System which will be deployed
Copy files out from DVDs/ISOs and generate
""""""""""""""""""""""""""""""""""""""""""
::
**[ubuntu x86_64]** ::
copycds ubuntu-14.04.3-server-amd64.iso
copycds ubuntu-xxx-server-amd64.iso
**[ubuntu16.04 ppc64el]** ::
copycds ubuntu-16.04-server-ppc64el.iso
Create pkglist and otherpkglist of osimage for dockerhost
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
The pkglist file should contain the following: ::
# cat /install/custom/ubuntu1404/ubuntu1404.pkglist
# cat /install/custom/ubuntu/ubuntu.pkglist
openssh-server
ntp
gawk
@ -41,14 +45,38 @@ The pkglist file should contain the following: ::
snmpd
bridge-utils
The otherpkglist file should contain the following: ::
The otherpkglist file should contain the following:
# cat /install/custom/ubuntu1404/ubuntu1404_docker.pkglist
**[ubuntu x86_64]** ::
# cat /install/custom/ubuntu/ubuntu_docker.pkglist
docker-engine
**[ubuntu16.04 ppc64el]**
At the time of this writing (February 2016), docker package is not available for **ppc64el** architecture from docker.org. You can follow instructions below on how to manually download and install it.
* Download docker engine for ppc64el
::
wget http://launchpadlibrarian.net/251622081/docker.io_1.10.3-0ubuntu4_ppc64el.deb -O /install/docker_ppc64el/docker.io_1.10.3-0ubuntu4_ppc64el.deb
* Configure **otherpkgdir** like this
::
otherpkgdir=/install/docker_ppc64el
* The **otherpkglist** file should be
::
# cat /install/custom/ubuntu/ubuntu_docker.pkglist
docker.io
Create the osimage for dockerhost
"""""""""""""""""""""""""""""""""
The osimage for dockerhost will be like this: ::
The osimage for dockerhost will be like this:
**[ubuntu x86_64]** ::
# lsdef -t osimage ub14.04.03-x86_64-dockerhost
Object name: ub14.04.03-x86_64-dockerhost
@ -57,13 +85,29 @@ The osimage for dockerhost will be like this: ::
osname=Linux
osvers=ubuntu14.04.3
otherpkgdir=https://apt.dockerproject.org/repo ubuntu-trusty main,http://cz.archive.ubuntu.com/ubuntu trusty main
otherpkglist=/install/custom/ubuntu1404/ubuntu1404_docker.pkglist
otherpkglist=/install/custom/ubuntu/ubuntu_docker.pkglist
pkgdir=/install/ubuntu14.04.3/x86_64
pkglist=/install/custom/ubuntu1404/ubuntu1404.pkglist
pkglist=/install/custom/ubuntu/ubuntu.pkglist
profile=compute
provmethod=install
template=/opt/xcat/share/xcat/install/ubuntu/compute.tmpl
**[ubuntu16.04 ppc64el]** ::
# lsdef -t osimage ub16.04-ppc64el-dockerhost
Object name: ub16.04-ppc64el-dockerhost
imagetype=linux
osarch=ppc64el
osname=Linux
osvers=ubuntu16.04
otherpkgdir=/install/docker_ppc64el
otherpkglist=/install/custom/ubuntu/ubuntu_docker.pkglist
pkgdir=/install/ubuntu16.04/ppc64el
pkglist=/install/custom/ubuntu/ubuntu.pkglist
profile=compute
provmethod=install
template=/opt/xcat/share/xcat/install/ubuntu/compute.tmpl
Preparing setup trust connection for docker service and create docker network object
````````````````````````````````````````````````````````````````````````````````````
Currently, a customer defined network object is needed when create a docker container with static IP address, it can be done with the command: ::
@ -99,7 +143,7 @@ After the dockerhost is ready, a docker instance can be managed through xCAT com
postbootscripts=otherpkgs
postscripts=syslog,remoteshell,syncfiles
The command :doc:`mkdef </guides/admin-guides/references/man1/mkdef.1>` or :doc:`chdef </guides/admin-guides/references/man1/chdef.1>` can be used to create a new docker instance node or change the node attributes. Specify any available unused ip address for *ip* attribute.
The command :doc:`mkdef </guides/admin-guides/references/man1/mkdef.1>` or :doc:`chdef </guides/admin-guides/references/man1/chdef.1>` can be used to create a new docker instance node or change the node attributes. Specify any available unused ip address for *ip* attribute. *mac* attribute is optional and if left unset, will be filled in by *mkdocker* command.
After docker instance node is defined, use command `makehosts host01c01` to add node *host01c01* and its IP address *10.0.120.1* into /etc/hosts.
@ -173,3 +217,26 @@ Check docker instance status
::
rpower <node> state
Troubleshooting
--------------------------
If things go wrong:
* After dockerhost node boots, check contents of **/var/log/xcat/xcat.log** file on the dockerhost for errors.
* Verify **nicname** specified in **Preparing setup trust connection for docker service and create docker network object** section exists on the docker host. Depending on the version of Ubuntu OS and host architecture, it could be **eth0**, or **em1**, or **eno1**, or **enp0s1**. Verify by running on the dockerhost
::
ip addr show dev <nicname>
* Run **ps -ef | grep docker** to verify docker engine is running with configured options. It should look something like
::
root 3703 1 0 Apr15 ? 00:12:28 /usr/bin/docker daemon -H unix:///var/run/docker.sock -H tcp://host01:2375 --tls --tlscacert=/root/.docker/ca-cert.pem --tlscert=/root/.docker/dockerhost-cert.pem --tlskey=/root/.docker/dockerhost-cert.pem --tlsverify=true --raw-logs
If the output is missing some options, verify that file **/lib/systemd/system/docker.service** contains the following lines
::
EnvironmentFile=-/etc/default/docker
ExecStart=/usr/bin/docker daemon $DOCKER_OPTS -H fd://

View File

@ -17,3 +17,4 @@ Within the NVIDIA CUDA Toolkit, installing the ``cuda`` package will install bot
deploy_cuda_node.rst
verify_cuda_install.rst
management.rst
update_nvidia_driver.rst

View File

@ -0,0 +1,45 @@
Update NVIDIA Driver
=====================
If the user wants to update the newer NVIDIA driver on the system, follow the :doc:`Create CUDA software repository </advanced/gpu/nvidia/repo/index>` document to create another repository for the new driver.
The following example assumes the new driver is in ``/install/cuda-7.5/ppc64le/nvidia_new``.
Diskful
-------
#. Change pkgdir for the cuda image: ::
chdef -t osimage -o rhels7.2-ppc64le-install-cudafull \
pkgdir=/install/cuda-7.5/ppc64le/nvidia_new,/install/cuda-7.5/ppc64le/cuda-deps
#. Use xdsh command to remove all the NVIDIA rpms: ::
xdsh <noderange> "yum remove *nvidia* -y"
#. Run updatenode command to update NVIDIA driver on the compute node: ::
updatenode <noderange> -S
#. Reboot compute node: ::
rpower <noderange> off
rpower <noderange> on
#. Verify the newer driver level: ::
nvidia-smi | grep Driver
Diskless
--------
To update a new NVIDIA driver on diskless compute nodes, re-generate the osimage pointing to the new NVIDIA driver repository and reboot the node to load the diskless image.
Refer to :doc:`Create osimage definitions </advanced/gpu/nvidia/osimage/index>` for specific instructions.

View File

@ -18,8 +18,8 @@ The MySQL database is supported by xCAT since xCAT 2.1. MariaDB is a fork of th
MySQL/MariaDB packages are shipped as part of most Linux Distributions.
Redhat Enterprise Linux
-----------------------
Red Hat Enterprise Linux
------------------------
* MySQL - Using ``yum``, ensure that the following packages are installed on the management node: ::

View File

@ -4,13 +4,13 @@ Install PostgreSQL
PostgreSQL packages are shipped as part of most Linux Distributions.
Redhat Enterprise Linux
-----------------------
Red Hat Enterprise Linux
------------------------
Using yum, install the following rpms: ::
yum install postgresql-libs-* postgresql-server-* postgresql-*
yum install perl-DBD-Pg*
yum install postgresql*
yum install perl-DBD-Pg
Suse Linux Enterprise Server
@ -20,8 +20,8 @@ Suse Linux Enterprise Server
Using zyppr, install the following rpms: ::
zyppr install postgresql-libs-* postgresql-server-* postgresql-*
zyppr install perl-DBD-Pg*
zypper install postgresql*
zypper install perl-DBD-Pg
Debian/Ubuntu

View File

@ -36,7 +36,7 @@ Adding Multiple Versions of the Same Kit Component to an OS Image Definition
xCAT allows to have multiple versions/releases of a product software kit available in the cluster. Typically, different OS image definitions corresponding to the different versions/releases of a product software stack. However, in some instances, may need mulitple versions/releases of the same product available within a single OS image. This is only feasible if the software product supports the install of multiple versions or releases of its product within an OS image.
Currently, it is not possible to install multiple versions of a product into an OS image using xCAT commands. xCAT uses yum on Redhat and zypper on SLES to install product rpms. These package managers do not provide an interface to install different versions of the same package, and will always force an upgrade of the package. We are investigating different ways to accomplish this function for future xCAT releases.
Currently, it is not possible to install multiple versions of a product into an OS image using xCAT commands. xCAT uses yum on RedHat and zypper on SLES to install product rpms. These package managers do not provide an interface to install different versions of the same package, and will always force an upgrade of the package. We are investigating different ways to accomplish this function for future xCAT releases.
Some software products have designed their packaging to leave previous versions of the software installed in an OS image even when the product is upgraded. This is done by using different package names for each version/release, so that the package manager does not see the new version as an upgrade, but rather as a new package install. In this case, it is possible to use xCAT to install multiple versions of the product into the same image.

View File

@ -1,7 +1,7 @@
Quick Start Guide
=================
This quick start is provided to guide users through the steps required to install the IBM High Performance Computing (HPC) software stack on a cluster managed by xCAT.
This quick start is provided to guide users through the steps required to install the IBM High Performance Computing (HPC) software stack on a cluster managed by xCAT. (*NOTE:* xCAT provides XLC and XLF partial kits, but all other HPC kits are provided by the HPC products teams, xCAT may not have any knowledges of their dependencies and requirements)
The following software kits will be used to install the IBM HPC software stack on to a RedHat Enterprise Linux 7.2 operating system running on ppc64le architecture.
@ -101,10 +101,11 @@ The following software kits will be used to install the IBM HPC software stack o
addkitcomp -a -i rhels7.2-ppc64le-install-compute \
essl-computenode-3264rtecuda-5.4.0-0-rhels-7.2-ppc64le
If the system doesn't have GPU and the CUDA toolkit is not needed, the adminstrator should not add the following kit components that requires the CUDA packages: ``essl-loginnode-5.4.0-0-rhels-7.2-ppc64le``, ``essl-computenode-3264rte-5.4.0-0-rhels-7.2-ppc64le`` and ``essl-computenode-3264rtecuda-5.4.0-0-rhels-7.2-ppc64le``. Please check the ESSL installation guide: http://www.ibm.com/support/knowledgecenter/SSFHY8_5.4.0/com.ibm.cluster.essl.v5r4.essl300.doc/am5il_xcatinstall.htm
#. Add the **Parallel ESSL** kitcomponents to osimage.
*Note:* ESSL kitcomponents are required for the PESSL. ::
**Note:** ESSL kitcomponents are required for the PESSL. ::
addkitcomp -a -i rhels7.2-ppc64le-install-compute \
pessl-loginnode-5.2.0-0-rhels-7.2-ppc64le

View File

@ -18,6 +18,9 @@ Dependencies
addkitcomp -a -i rhels7.2-ppc64le-install-compute \
essl-computenode-3264rte-5.4.0-0-rhels-7.2-ppc64le
Reference
---------
Refer to ESSL installation guide for more information: http://www.ibm.com/support/knowledgecenter/SSFHY8_5.4.0/com.ibm.cluster.essl.v5r4.essl300.doc/am5il_xcatinstall.htm
.. [#] If using an older release, refer to `IBM HPC Stack in an xCAT Cluster <https://sourceforge.net/p/xcat/wiki/IBM_HPC_Stack_in_an_xCAT_Cluster/>`_

View File

@ -12,7 +12,7 @@ The paralell compression tool ``pigz`` can be enabled by installing ``pigz`` pac
* **[RHEL]**
The package ``pigz`` is shipped in Extra Packages for Enterprise Linux (or EPEL) instead of Redhat iso, this involves some complexity.
The package ``pigz`` is shipped in Extra Packages for Enterprise Linux (or EPEL) instead of RedHat iso, this involves some complexity.
Extra Packages for Enterprise Linux (or EPEL) is a Fedora Special Interest Group that creates, maintains, and manages a high quality set of additional packages for Enterprise Linux, including, but not limited to, Red Hat Enterprise Linux (RHEL), CentOS and Scientific Linux (SL), Oracle Linux (OL).

View File

@ -6,7 +6,7 @@ By default, xCAT will install the operating system on the first disk and with de
- 'Partition definition file' way can be used for RedHat, SLES and Ubuntu.
- 'partition definition script' way was tested only for RedHat and Ubuntu, use this feature on SLES at your own risk.
- Because disk configuration for ubuntu is different from Redhat, there maybe some section special for ubuntu.
- Because disk configuration for ubuntu is different from RedHat, there maybe some section special for ubuntu.
.. END_Overview
@ -356,7 +356,7 @@ Run the following commands to associate the partition with the osimage: ::
chdef -t osimage <osimagename> partitionfile=/install/custom/my-partitions
nodeset <nodename> osimage=<osimage>
- For Redhat, when nodeset runs and generates the /install/autoinst file for a node, it will replace the #XCAT_PARTITION_START#...#XCAT_PARTITION_END# directives from your osimage template with the contents of your custom partitionfile.
- For RedHat, when nodeset runs and generates the /install/autoinst file for a node, it will replace the #XCAT_PARTITION_START#...#XCAT_PARTITION_END# directives from your osimage template with the contents of your custom partitionfile.
- For Ubuntu, when nodeset runs and generates the /install/autoinst file for a node, it will generate a script to write the partition configuration to /tmp/partitionfile, this script will replace the #XCA_PARTMAN_RECIPE_SCRIPT# directive in /install/autoinst/<node>.pre.
@ -365,7 +365,7 @@ Run the following commands to associate the partition with the osimage: ::
.. BEGIN_Partition_Definition_Script_overview
Create a shell script that will be run on the node during the install process to dynamically create the disk partitioning definition. This script will be run during the OS installer %pre script on Redhat or preseed/early_command on Unbuntu execution and must write the correct partitioning definition into the file /tmp/partitionfile on the node
Create a shell script that will be run on the node during the install process to dynamically create the disk partitioning definition. This script will be run during the OS installer %pre script on RedHat or preseed/early_command on Unbuntu execution and must write the correct partitioning definition into the file /tmp/partitionfile on the node
.. END_Partition_Definition_Script_overview
@ -379,7 +379,7 @@ The purpose of the partition script is to create the /tmp/partionfile that will
.. BEGIN_Partition_Definition_Script_Create_partition_script_example_redhat_sles
Here is an example of the partition script on Redhat and SLES, the partitioning script is ``/install/custom/my-partitions.sh``: ::
Here is an example of the partition script on RedHat and SLES, the partitioning script is ``/install/custom/my-partitions.sh``: ::
instdisk="/dev/sda"
@ -448,7 +448,7 @@ Run below commands to associate partition script with osimage: ::
nodeset <nodename> osimage=<osimage>
- The "s:" preceding the filename tells nodeset that this is a script.
- For Redhat, when nodeset runs and generates the /install/autoinst file for a node, it will add the execution of the contents of this script to the %pre section of that file. The nodeset command will then replace the #XCAT_PARTITION_START#...#XCAT_PARTITION_END# directives from the osimage template file with "%include /tmp/partitionfile" to dynamically include the tmp definition file your script created.
- For RedHat, when nodeset runs and generates the /install/autoinst file for a node, it will add the execution of the contents of this script to the %pre section of that file. The nodeset command will then replace the #XCAT_PARTITION_START#...#XCAT_PARTITION_END# directives from the osimage template file with "%include /tmp/partitionfile" to dynamically include the tmp definition file your script created.
- For Ubuntu, when nodeset runs and generates the /install/autoinst file for a node, it will replace the "#XCA_PARTMAN_RECIPE_SCRIPT#" directive and add the execution of the contents of this script to the /install/autoinst/<node>.pre, the /install/autoinst/<node>.pre script will be run in the preseed/early_command.
.. END_Partition_Definition_Script_Associate_partition_script_with_osimage_common

View File

@ -43,11 +43,15 @@ For ubuntu ppc64le, the initrd.gz shipped with the ISO does not support network
* Download mini.iso from
[ubuntu 14.04.1]: http://ports.ubuntu.com/ubuntu-ports/dists/$(lsb_release-sc)/main/installer-ppc64el/current/images/netboot/
[ubuntu 14.04.1]: http://xcat.org/files/netboot/ubuntu14.04.1/ppc64el/mini.iso
[ubuntu 14.04.2]: http://ports.ubuntu.com/ubuntu-ports/dists/trusty-updates/main/installer-ppc64el/current/images/utopic-netboot/
[ubuntu 14.04.2]: http://xcat.org/files/netboot/ubuntu14.04.2/ppc64el/mini.iso
[ubuntu 14.04.3]: http://ports.ubuntu.com/ubuntu-ports/dists/trusty-updates/main/installer-ppc64el/current/images/vivid-netboot/
[ubuntu 14.04.3]: http://xcat.org/files/netboot/ubuntu14.04.3/ppc64el/mini.iso
[ubuntu 14.04.4]: http://xcat.org/files/netboot/ubuntu14.04.4/ppc64el/mini.iso
[ubuntu 16.04]: http://xcat.org/files/netboot/ubuntu16.04/ppc64el/mini.iso
* Mount mini.iso ::

View File

@ -1,121 +1,73 @@
Trim diskless rootimg
=====================
To reduce the memory and boot-up time for the diskless node, the initrd and rootimg.gz should be kept as compact as possible under the premise of meeting the user's requirements.
the exclude list attribute: linuximage.exlist
----------------------------------------------
Exclude list
------------
To reduce the memory occupation and boot-up time for the diskless node, the initrd and rootimg.gz should be kept as compact as possible under the premise of meeting the user's requirements.
xCAT provides an **exclude list** attribute ``linuximage.exlist`` in the **osimage** object definition, which enables user to trim the rootimg on the diskless node after the rpms are installed into the rootimg directory by ``genimage`` on management node.
xCAT provides an attribute ``exlist`` in the **osimage** object definition, that allows the user to select files to exclude when building the ``rootimg.gz`` file for the diskless node.
Take the osimage **sles12.1-ppc64le-netboot-compute** for example::
# lsdef -t osimage -o sles12.1-ppc64le-netboot-compute
# lsdef -t osimage -o sles12.1-ppc64le-netboot-compute -i exlist
Object name: sles12.1-ppc64le-netboot-compute
exlist=/opt/xcat/share/xcat/netboot/sles/compute.sles12.ppc64le.exlist
imagetype=linux
osarch=ppc64le
osdistroname=sles12.1-ppc64le
osname=Linux
osvers=sles12.1
otherpkgdir=/install/post/otherpkgs/sles12.1/ppc64le
permission=755
pkgdir=/install/sles12.1/ppc64le
pkglist=/opt/xcat/share/xcat/netboot/sles/compute.sles12.ppc64le.pkglist
postinstall=/opt/xcat/share/xcat/netboot/sles/compute.sles12.ppc64le.postinstall
profile=compute
provmethod=netboot
rootimgdir=/install/netboot/sles12.1/ppc64le/compute
the content of exlist file
--------------------------
Content of the Exclude List file
--------------------------------
The file specified in ``linuximage.exlist`` includes **relative path** of the directories and files that will be excluded from the **rootimg.gz** generated by ``packimage``. The **relative path** suppose the ``rootimg`` directory, ``/install/netboot/sles12.1/ppc64le/compute/rootimg`` here, to be the base directory. [1]_ [2]_
The file specified in ``linuximage.exlist`` includes **relative path** of the directories and files that will be excluded from the **rootimg.gz** generated by ``packimage``. The **relative path** assumes the ``rootimg`` directory, ``/install/netboot/sles12.1/ppc64le/compute/rootimg`` here, to be the base directory. [1]_
xCAT ships a default exlist file, user can add or remove entries based on it according to their need.
The following is a sample of ``exlist`` file ::
The content of the default exlist file ``/opt/xcat/share/xcat/netboot/sles/compute.sles12.ppc64le.exlist`` is: ::
# cat /opt/xcat/share/xcat/netboot/sles/compute.sles12.ppc64le.exlist
./boot*
./etc/bootsplash/themes/SLES/images*
./opt/sci/include*
./usr/include*
./usr/lib/locale*
./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/auto/Encode/CN*
./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/auto/Encode/JP*
./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/auto/Encode/TW*
./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/auto/Encode/KR*
./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/Encode/CN*
./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/Encode/JP*
./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/Encode/KR*
./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/Encode/TW*
./usr/lib64/gcc/powerpc64le-suse-linux/4.8/include*
./usr/local/include*
./usr/local/man*
./usr/powerpc64le-suse-linux/include*
...
./usr/share/X11/locale/*
+./usr/share/X11/locale/en_US.UTF-8*
./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/Encode/JP*
+./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/vim[0-9]*/doc*
./var/cache/man*
./var/cache/zypp*
...
The content above presents some syntax supported in exlist file:
* exclude entry::
* Exclude files::
./usr/share/X11/locale/*
./usr/share/X11/locale/*
all the files and subdirectories under ``rootimg/usr/share/X11/locale/`` will be excluded.
All the files and subdirectories under ``rootimg/usr/share/X11/locale/`` will be excluded.
* include entry::
..
+./usr/share/locale/C*
* Exclude Files using Patterns [2]_::
all the files and subdirectories with the name matching pattern ``C*`` under ``/usr/share/locale/`` will be included in the **rootimg.gz**, it is quite useful to use ``+`` initialed entries following an exclude entry to include some specific files or directories under the excluded parent directory.
./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/Encode/JP*
* pattern of the file name and directory [3]_::
Use regular expression to easily exclude files. The above example will exclude any Perl library installed under ``/usr/lib/`` matching ``ppc64le-linux-thread-multi/Encode/JP*``
./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/Encode/JP*
..
all the files and subdirectories matching the pattern ``./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/Encode/JP*`` will be excluded, such as ::
* Include files::
./usr/lib/perl5/5.18.2/ppc64le-linux-thread-multi/Encode/JP
./usr/lib/perl5/5.18.2/ppc64le-linux-thread-multi/Encode/JP/H2Z.pm
./usr/lib/perl5/5.18.2/ppc64le-linux-thread-multi/Encode/JP/JIS7.pm
./usr/lib/perl5/5.18.2/ppc64le-linux-thread-multi/Encode/JP.pm
+./usr/share/locale/C*
It is useful to include files following an exclude entry to qiuckly remove a larger set of files using a wildcard and then adding back the few necessary files using the + sign. In the above example, all the files and sub-directories matching the pattern ``/usr/share/locale/C*`` will be included in the ``rootimg.gz`` file.
customize the exlist file and the osimage definition
----------------------------------------------------
Customize the ``exlist`` file and the osimage definition
--------------------------------------------------------
Please check the default exlist file and make sure:
Check the default exlist file and make sure:
* all files and directories you do not want in the image will be excluded from the rootimg.
* no file or directory you need will be excluded from the rootimg.
If you want to customize the osimage ``sles12.1-ppc64le-netboot-compute`` with your own exlist file, please follow the following steps: ::
If you want to customize the osimage ``sles12.1-ppc64le-netboot-compute`` with your own exlist file, follow the following steps: ::
#create a customized exlist file based on the default one
cp /opt/xcat/share/xcat/netboot/sles/compute.sles12.ppc64le.exlist /install/custom/netboot/sles/compute.sles12.ppc64le.exlist
cp /opt/xcat/share/xcat/netboot/sles/compute.sles12.ppc64le.exlist /install/custom/netboot/sles/compute.sles12.ppc64le.exlist
#edit the newly created exlist file according to your need
vi /install/custom/netboot/sles/compute.sles12.ppc64le.exlist
@ -123,8 +75,6 @@ If you want to customize the osimage ``sles12.1-ppc64le-netboot-compute`` with y
#specify the newly created exlist file in the osimage definition
chdef -t osimage -o sles12.1-ppc64le-netboot-compute exlist=/install/custom/netboot/sles/compute.sles12.ppc64le.exlist
.. [1] It would only make sense to use an absolute path name here. It means that this entry will never match anything: ``/usr/share/locale/*``.
.. [1] The ``exlist`` file entry should not end with a slash ``/``, For example, this entry will never match anything: ``./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/Encode/``.
.. [2] The exlist file entry should not be ended with a slash ``/``, it means that this entry will never match anything: ``./usr/lib/perl[0-9]/[0-9.]*/ppc64le-linux-thread-multi/Encode/``.
.. [3] Pattern match test applies to the whole file name,starting from one of the start points specified in the exlist file entry. The regex syntax comply the with the regex syntax of system command ``find -path``, please refer to its doc for details.
.. [2] Pattern match test applies to the whole file name,starting from one of the start points specified in the ``exlist`` file entry. The regex syntax should comply with the regex syntax of system command ``find -path``, refer to its doc for details.

View File

@ -23,11 +23,11 @@ SYNOPSIS
\ **bmcdiscover**\ [\ **-v | -**\ **-version**\ ]
\ **bmcdiscover**\ [\ **-s**\ \ *scan_method*\ ] \ **-**\ **-range**\ \ *ip_ranges*\ [\ **-z**\ ] [\ **-w**\ ] [\ **-t**\ ]
\ **bmcdiscover**\ [\ **-s**\ \ *scan_method*\ ] [\ **-u**\ \ *bmc_user*\ ] [\ **-p**\ \ *bmc_passwd*\ ] [\ **-z**\ ] [\ **-w**\ ] [\ **-t**\ ] \ **-**\ **-range**\ \ *ip_ranges*\
\ **bmcdiscover**\ {\ **-i | -**\ **-bmcip**\ } \ *bmc_ip*\ {\ **-u | -**\ **-bmcuser**\ } \ *bmc_username*\ {\ **-p | -**\ **-bmcpasswd**\ } \ *bmc_password*\ \ **-**\ **-check**\
\ **bmcdiscover**\ \ **-u**\ \ *bmc_user*\ \ **-p**\ \ *bmc_passwd*\ \ **-i**\ \ *bmc_ip*\ \ **-**\ **-check**\
\ **bmcdiscover**\ {\ **-i | -**\ **-bmcip**\ } \ *bmc_ip*\ {\ **-u | -**\ **-bmcuser**\ } \ *bmc_username*\ {\ **-p | -**\ **-bmcpasswd**\ } \ *bmc_password*\ \ **-**\ **-ipsource**\
\ **bmcdiscover**\ [\ **-u**\ \ *bmc_user*\ ] [\ **-p**\ \ *bmc_passwd*\ ] \ **-i**\ \ *bmc_ip*\ \ **-**\ **-ipsource**\
***********
@ -98,15 +98,15 @@ OPTIONS
\ **-c|-**\ **-check**\
\ **-**\ **-check**\
Check
Check BMC administrator User/Password.
\ **-**\ **-ipsource**\
BMC IP source
Display the BMC IP configuration.
@ -169,7 +169,7 @@ Note: Input for IP range can be in the form: scanme.nmap.org, microsoft.com/24,
.. code-block:: perl
bmcdiscover -i 10.4.23.254 -u USERID -p PASSW0RD -c
bmcdiscover -i 10.4.23.254 -u USERID -p PASSW0RD --check
5. Get BMC IP Address source, DHCP Address or static Address

View File

@ -11,7 +11,7 @@ NAME
****
\ **lsvm**\ - Lists partition profile information for HMC-, DFM-, IVM-, KVM-, Vmware- and zVM-managed nodes. For Power 775, it lists the LPARs' I/O slots information and CEC configuration.
\ **lsvm**\ - Lists partition profile information for HMC-, DFM-, IVM-, KVM-, VMware- and zVM-managed nodes. For Power 775, it lists the LPARs' I/O slots information and CEC configuration.
********
@ -36,6 +36,13 @@ For PPC (using Direct FSP Management):
\ **lsvm**\ \ *noderange*\
For KVM and VMware
==================
\ **lsvm**\ \ *noderange*\
For zVM:
========
@ -72,11 +79,11 @@ More information about this part, refer to the section Using the \*vm commands t
XCAT_Power_775_Hardware_Management
For KVM and Vmware
For KVM and VMware
==================
The virtual machines that defined in the hypervisor \ *noderange*\ will be displayed. \ *noderange*\ only can be hypervisor. The type of the hypervisor should be set: hypervisor.type before running the lsvm.
The virtual machines that defined in the hypervisor \ *noderange*\ will be displayed. \ *noderange*\ can only be hypervisor.
Note: Only the virtual machine which is in power on state can be listed by lsvm command.

View File

@ -52,7 +52,7 @@ For KVM:
========
\ **mkvm**\ \ *noderange*\ [\ **-m|-**\ **-master**\ \ *mastername*\ ] [\ **-s|-**\ **-size**\ \ *disksize*\ ] [\ **-**\ **-mem**\ \ *memsize*\ ] [\ **-**\ **-cpus**\ \ *cpucount*\ ] [\ **-f|-**\ **-force**\ ]
\ **mkvm**\ \ *noderange*\ [\ **-s|-**\ **-size**\ \ *disksize*\ ] [\ **-**\ **-mem**\ \ *memsize*\ ] [\ **-**\ **-cpus**\ \ *cpucount*\ ] [\ **-f|-**\ **-force**\ ]
For Vmware:

View File

@ -19,9 +19,9 @@ SYNOPSIS
********
\ **pasu**\ [\ **-V**\ ] [\ **-d**\ ] [\ **-n**\ ] [\ **-l**\ \ *user*\ ] [\ **-p**\ \ *passwd*\ ] [\ **-f**\ \ *fanout*\ ] [\ **-i**\ \ *hostname-suffix*\ ] \ *noderange*\ \ *command*\
\ **pasu**\ [\ **-V**\ ] [\ **-d**\ ] [\ **-l**\ \ *user*\ ] [\ **-p**\ \ *passwd*\ ] [\ **-f**\ \ *fanout*\ ] [\ **-i**\ \ *hostname-suffix*\ ] \ *noderange*\ \ *command*\
\ **pasu**\ [\ **-V**\ ] [\ **-d**\ ] [\ **-n**\ ] [\ **-l**\ \ *user*\ ] [\ **-p**\ \ *passwd*\ ] [\ **-f**\ \ *fanout*\ ] [\ **-i**\ \ *hostname-suffix*\ ] \ **-b**\ \ *batchfile*\ \ *noderange*\
\ **pasu**\ [\ **-V**\ ] [\ **-d**\ ] [\ **-l**\ \ *user*\ ] [\ **-p**\ \ *passwd*\ ] [\ **-f**\ \ *fanout*\ ] [\ **-i**\ \ *hostname-suffix*\ ] \ **-b**\ \ *batchfile*\ \ *noderange*\
\ **pasu**\ [\ **-h**\ | \ **-**\ **-help**\ ]
@ -47,13 +47,6 @@ OPTIONS
\ **-n|-**\ **-nonodecheck**\
Do not send the noderange to xcatd to expand it into a list of nodes. Use the noderange exactly as it is specified
to pasu. In this case, the noderange must be a simple list of comma-separated hostnames of the IMMs.
\ **-l|-**\ **-loginname**\ \ *username*\
The username to use to connect to the IMMs. If not specified, the row in the xCAT \ **passwd**\ table with key "ipmi"

View File

@ -63,9 +63,9 @@ mpa Attributes:
\ **slots**\
The number of available slots in the chassis. For PCM, this attribute is used to store the number of slots in the following format: <slot rows>,<slot columns>,<slot orientation> Where:
<slot rows> = number of rows of slots in chassis
<slot columns> = number of columns of slots in chassis
<slot orientation> = set to 0 if slots are vertical, and set to 1 if slots of horizontal
<slot rows> = number of rows of slots in chassis
<slot columns> = number of columns of slots in chassis
<slot orientation> = set to 0 if slots are vertical, and set to 1 if slots of horizontal

View File

@ -19,7 +19,7 @@ SYNOPSIS
********
\ **noderes Attributes:**\ \ *node*\ , \ *servicenode*\ , \ *netboot*\ , \ *tftpserver*\ , \ *tftpdir*\ , \ *nfsserver*\ , \ *monserver*\ , \ *nfsdir*\ , \ *installnic*\ , \ *primarynic*\ , \ *discoverynics*\ , \ *cmdinterface*\ , \ *xcatmaster*\ , \ *current_osimage*\ , \ *next_osimage*\ , \ *nimserver*\ , \ *routenames*\ , \ *nameservers*\ , \ *proxydhcp*\ , \ *comments*\ , \ *disable*\
\ **noderes Attributes:**\ \ *node*\ , \ *servicenode*\ , \ *netboot*\ , \ *tftpserver*\ , \ *tftpdir*\ , \ *nfsserver*\ , \ *monserver*\ , \ *nfsdir*\ , \ *installnic*\ , \ *primarynic*\ , \ *discoverynics*\ , \ *cmdinterface*\ , \ *xcatmaster*\ , \ *current_osimage*\ , \ *next_osimage*\ , \ *nimserver*\ , \ *routenames*\ , \ *nameservers*\ , \ *proxydhcp*\ , \ *syslog*\ , \ *comments*\ , \ *disable*\
***********
@ -156,6 +156,12 @@ noderes Attributes:
\ **syslog**\
To configure how to configure syslog for compute node. Valid values:blank(not set), ignore. blank - run postscript syslog; ignore - do NOT run postscript syslog
\ **comments**\
Any user-written notes.

View File

@ -300,16 +300,16 @@ site Attributes:
xcatconfdir: Where xCAT config data is (default /etc/xcat).
xcatdebugmode: the xCAT debug level. xCAT provides a batch of techniques
to help user debug problems while using xCAT, especially on OS provision,
such as collecting logs of the whole installation process and accessing
the installing system via ssh, etc. These techniques will be enabled
according to different xCAT debug levels specified by 'xcatdebugmode',
currently supported values:
'0': disable debug mode
'1': enable basic debug mode
'2': enalbe expert debug mode
For the details on 'basic debug mode' and 'expert debug mode',
please refer to xCAT documentation.
to help user debug problems while using xCAT, especially on OS provision,
such as collecting logs of the whole installation process and accessing
the installing system via ssh, etc. These techniques will be enabled
according to different xCAT debug levels specified by 'xcatdebugmode',
currently supported values:
'0': disable debug mode
'1': enable basic debug mode
'2': enalbe expert debug mode
For the details on 'basic debug mode' and 'expert debug mode',
please refer to xCAT documentation.
--------------------
REMOTESHELL ATTRIBUTES
@ -380,6 +380,10 @@ site Attributes:
entries generated by 'makehosts' will put the FQDN before the PQDN(Partially
Qualified Domain Name). Otherwise, the original behavior will be performed.
hierarchicalattrs: Table attributes(e.g. postscripts, postbootscripts) that will be
included hierarchically. Attribute values for all the node's groups
will be applied to the node in the groups' order except the repeat one.
.. code-block:: perl

View File

@ -19,7 +19,7 @@ SYNOPSIS
********
\ **group Attributes:**\ \ *addkcmdline*\ , \ *arch*\ , \ *authdomain*\ , \ *bmc*\ , \ *bmcpassword*\ , \ *bmcport*\ , \ *bmcusername*\ , \ *cfgmgr*\ , \ *cfgmgtroles*\ , \ *cfgserver*\ , \ *chain*\ , \ *chassis*\ , \ *cmdmapping*\ , \ *cons*\ , \ *conserver*\ , \ *consoleondemand*\ , \ *cpucount*\ , \ *cputype*\ , \ *currchain*\ , \ *currstate*\ , \ *dhcpinterfaces*\ , \ *disksize*\ , \ *displayname*\ , \ *dockercpus*\ , \ *dockerflag*\ , \ *dockerhost*\ , \ *dockermemory*\ , \ *dockernics*\ , \ *domainadminpassword*\ , \ *domainadminuser*\ , \ *domaintype*\ , \ *getmac*\ , \ *groupname*\ , \ *grouptype*\ , \ *hcp*\ , \ *height*\ , \ *hostcluster*\ , \ *hostinterface*\ , \ *hostmanager*\ , \ *hostnames*\ , \ *hosttype*\ , \ *hwtype*\ , \ *id*\ , \ *initrd*\ , \ *installnic*\ , \ *interface*\ , \ *ip*\ , \ *iscsipassword*\ , \ *iscsiserver*\ , \ *iscsitarget*\ , \ *iscsiuserid*\ , \ *kcmdline*\ , \ *kernel*\ , \ *linkports*\ , \ *mac*\ , \ *membergroups*\ , \ *members*\ , \ *memory*\ , \ *mgt*\ , \ *micbridge*\ , \ *michost*\ , \ *micid*\ , \ *miconboot*\ , \ *micpowermgt*\ , \ *micvlog*\ , \ *migrationdest*\ , \ *monserver*\ , \ *mpa*\ , \ *mtm*\ , \ *nameservers*\ , \ *netboot*\ , \ *nfsdir*\ , \ *nfsserver*\ , \ *nicaliases*\ , \ *niccustomscripts*\ , \ *nicdevices*\ , \ *nicextraparams*\ , \ *nichostnameprefixes*\ , \ *nichostnamesuffixes*\ , \ *nicips*\ , \ *nicnetworks*\ , \ *nicsadapter*\ , \ *nictypes*\ , \ *nimserver*\ , \ *nodetype*\ , \ *ondiscover*\ , \ *os*\ , \ *osvolume*\ , \ *otherinterfaces*\ , \ *ou*\ , \ *parent*\ , \ *passwd.HMC*\ , \ *passwd.admin*\ , \ *passwd.celogin*\ , \ *passwd.general*\ , \ *passwd.hscroot*\ , \ *password*\ , \ *postbootscripts*\ , \ *postscripts*\ , \ *power*\ , \ *pprofile*\ , \ *prescripts-begin*\ , \ *prescripts-end*\ , \ *primarynic*\ , \ *productkey*\ , \ *profile*\ , \ *protocol*\ , \ *provmethod*\ , \ *rack*\ , \ *room*\ , \ *routenames*\ , \ *serial*\ , \ *serialflow*\ , \ *serialport*\ , \ *serialspeed*\ , \ *servicenode*\ , \ *setupconserver*\ , \ *setupdhcp*\ , \ *setupftp*\ , \ *setupipforward*\ , \ *setupldap*\ , \ *setupnameserver*\ , \ *setupnfs*\ , \ *setupnim*\ , \ *setupntp*\ , \ *setupproxydhcp*\ , \ *setuptftp*\ , \ *sfp*\ , \ *side*\ , \ *slot*\ , \ *slotid*\ , \ *slots*\ , \ *snmpauth*\ , \ *snmppassword*\ , \ *snmpprivacy*\ , \ *snmpusername*\ , \ *snmpversion*\ , \ *storagcontroller*\ , \ *storagetype*\ , \ *supernode*\ , \ *supportedarchs*\ , \ *supportproxydhcp*\ , \ *switch*\ , \ *switchinterface*\ , \ *switchport*\ , \ *switchtype*\ , \ *switchvlan*\ , \ *termport*\ , \ *termserver*\ , \ *tftpdir*\ , \ *tftpserver*\ , \ *unit*\ , \ *urlpath*\ , \ *usercomment*\ , \ *userid*\ , \ *username*\ , \ *vmbeacon*\ , \ *vmbootorder*\ , \ *vmcfgstore*\ , \ *vmcluster*\ , \ *vmcpus*\ , \ *vmhost*\ , \ *vmmanager*\ , \ *vmmaster*\ , \ *vmmemory*\ , \ *vmnicnicmodel*\ , \ *vmnics*\ , \ *vmothersetting*\ , \ *vmphyslots*\ , \ *vmstorage*\ , \ *vmstoragecache*\ , \ *vmstorageformat*\ , \ *vmstoragemodel*\ , \ *vmtextconsole*\ , \ *vmvirtflags*\ , \ *vmvncport*\ , \ *webport*\ , \ *wherevals*\ , \ *xcatmaster*\
\ **group Attributes:**\ \ *addkcmdline*\ , \ *arch*\ , \ *authdomain*\ , \ *bmc*\ , \ *bmcpassword*\ , \ *bmcport*\ , \ *bmcusername*\ , \ *cfgmgr*\ , \ *cfgmgtroles*\ , \ *cfgserver*\ , \ *chain*\ , \ *chassis*\ , \ *cmdmapping*\ , \ *cons*\ , \ *conserver*\ , \ *consoleondemand*\ , \ *cpucount*\ , \ *cputype*\ , \ *currchain*\ , \ *currstate*\ , \ *dhcpinterfaces*\ , \ *disksize*\ , \ *displayname*\ , \ *dockercpus*\ , \ *dockerflag*\ , \ *dockerhost*\ , \ *dockermemory*\ , \ *dockernics*\ , \ *domainadminpassword*\ , \ *domainadminuser*\ , \ *domaintype*\ , \ *getmac*\ , \ *groupname*\ , \ *grouptype*\ , \ *hcp*\ , \ *height*\ , \ *hostcluster*\ , \ *hostinterface*\ , \ *hostmanager*\ , \ *hostnames*\ , \ *hosttype*\ , \ *hwtype*\ , \ *id*\ , \ *initrd*\ , \ *installnic*\ , \ *interface*\ , \ *ip*\ , \ *iscsipassword*\ , \ *iscsiserver*\ , \ *iscsitarget*\ , \ *iscsiuserid*\ , \ *kcmdline*\ , \ *kernel*\ , \ *linkports*\ , \ *mac*\ , \ *membergroups*\ , \ *members*\ , \ *memory*\ , \ *mgt*\ , \ *micbridge*\ , \ *michost*\ , \ *micid*\ , \ *miconboot*\ , \ *micpowermgt*\ , \ *micvlog*\ , \ *migrationdest*\ , \ *monserver*\ , \ *mpa*\ , \ *mtm*\ , \ *nameservers*\ , \ *netboot*\ , \ *nfsdir*\ , \ *nfsserver*\ , \ *nicaliases*\ , \ *niccustomscripts*\ , \ *nicdevices*\ , \ *nicextraparams*\ , \ *nichostnameprefixes*\ , \ *nichostnamesuffixes*\ , \ *nicips*\ , \ *nicnetworks*\ , \ *nicsadapter*\ , \ *nictypes*\ , \ *nimserver*\ , \ *nodetype*\ , \ *ondiscover*\ , \ *os*\ , \ *osvolume*\ , \ *otherinterfaces*\ , \ *ou*\ , \ *parent*\ , \ *passwd.HMC*\ , \ *passwd.admin*\ , \ *passwd.celogin*\ , \ *passwd.general*\ , \ *passwd.hscroot*\ , \ *password*\ , \ *postbootscripts*\ , \ *postscripts*\ , \ *power*\ , \ *pprofile*\ , \ *prescripts-begin*\ , \ *prescripts-end*\ , \ *primarynic*\ , \ *productkey*\ , \ *profile*\ , \ *protocol*\ , \ *provmethod*\ , \ *rack*\ , \ *room*\ , \ *routenames*\ , \ *serial*\ , \ *serialflow*\ , \ *serialport*\ , \ *serialspeed*\ , \ *servicenode*\ , \ *setupconserver*\ , \ *setupdhcp*\ , \ *setupftp*\ , \ *setupipforward*\ , \ *setupldap*\ , \ *setupnameserver*\ , \ *setupnfs*\ , \ *setupnim*\ , \ *setupntp*\ , \ *setupproxydhcp*\ , \ *setuptftp*\ , \ *sfp*\ , \ *side*\ , \ *slot*\ , \ *slotid*\ , \ *slots*\ , \ *snmpauth*\ , \ *snmppassword*\ , \ *snmpprivacy*\ , \ *snmpusername*\ , \ *snmpversion*\ , \ *storagcontroller*\ , \ *storagetype*\ , \ *supernode*\ , \ *supportedarchs*\ , \ *supportproxydhcp*\ , \ *switch*\ , \ *switchinterface*\ , \ *switchport*\ , \ *switchtype*\ , \ *switchvlan*\ , \ *syslog*\ , \ *termport*\ , \ *termserver*\ , \ *tftpdir*\ , \ *tftpserver*\ , \ *unit*\ , \ *urlpath*\ , \ *usercomment*\ , \ *userid*\ , \ *username*\ , \ *vmbeacon*\ , \ *vmbootorder*\ , \ *vmcfgstore*\ , \ *vmcluster*\ , \ *vmcpus*\ , \ *vmhost*\ , \ *vmmanager*\ , \ *vmmaster*\ , \ *vmmemory*\ , \ *vmnicnicmodel*\ , \ *vmnics*\ , \ *vmothersetting*\ , \ *vmphyslots*\ , \ *vmstorage*\ , \ *vmstoragecache*\ , \ *vmstorageformat*\ , \ *vmstoragemodel*\ , \ *vmtextconsole*\ , \ *vmvirtflags*\ , \ *vmvncport*\ , \ *webport*\ , \ *wherevals*\ , \ *xcatmaster*\
***********
@ -1120,11 +1120,11 @@ group Attributes:
.. code-block:: perl
<slot rows> = number of rows of slots in chassis
<slot rows> = number of rows of slots in chassis
<slot columns> = number of columns of slots in chassis
<slot columns> = number of columns of slots in chassis
<slot orientation> = set to 0 if slots are vertical, and set to 1 if slots of horizontal
<slot orientation> = set to 0 if slots are vertical, and set to 1 if slots of horizontal
@ -1227,6 +1227,12 @@ group Attributes:
\ **syslog**\ (noderes.syslog)
To configure how to configure syslog for compute node. Valid values:blank(not set), ignore. blank - run postscript syslog; ignore - do NOT run postscript syslog
\ **termport**\ (nodehm.termport)
The port number on the terminal server that this node is connected to.

View File

@ -19,7 +19,7 @@ SYNOPSIS
********
\ **node Attributes:**\ \ *addkcmdline*\ , \ *appstatus*\ , \ *appstatustime*\ , \ *arch*\ , \ *authdomain*\ , \ *bmc*\ , \ *bmcpassword*\ , \ *bmcport*\ , \ *bmcusername*\ , \ *cfgmgr*\ , \ *cfgmgtroles*\ , \ *cfgserver*\ , \ *chain*\ , \ *chassis*\ , \ *cmdmapping*\ , \ *cons*\ , \ *conserver*\ , \ *consoleondemand*\ , \ *cpucount*\ , \ *cputype*\ , \ *currchain*\ , \ *currstate*\ , \ *dhcpinterfaces*\ , \ *disksize*\ , \ *displayname*\ , \ *dockercpus*\ , \ *dockerflag*\ , \ *dockerhost*\ , \ *dockermemory*\ , \ *dockernics*\ , \ *domainadminpassword*\ , \ *domainadminuser*\ , \ *domaintype*\ , \ *getmac*\ , \ *groups*\ , \ *hcp*\ , \ *height*\ , \ *hidden*\ , \ *hostcluster*\ , \ *hostinterface*\ , \ *hostmanager*\ , \ *hostnames*\ , \ *hosttype*\ , \ *hwtype*\ , \ *id*\ , \ *initrd*\ , \ *installnic*\ , \ *interface*\ , \ *ip*\ , \ *iscsipassword*\ , \ *iscsiserver*\ , \ *iscsitarget*\ , \ *iscsiuserid*\ , \ *kcmdline*\ , \ *kernel*\ , \ *linkports*\ , \ *mac*\ , \ *memory*\ , \ *mgt*\ , \ *micbridge*\ , \ *michost*\ , \ *micid*\ , \ *miconboot*\ , \ *micpowermgt*\ , \ *micvlog*\ , \ *migrationdest*\ , \ *monserver*\ , \ *mpa*\ , \ *mtm*\ , \ *nameservers*\ , \ *netboot*\ , \ *nfsdir*\ , \ *nfsserver*\ , \ *nicaliases*\ , \ *niccustomscripts*\ , \ *nicdevices*\ , \ *nicextraparams*\ , \ *nichostnameprefixes*\ , \ *nichostnamesuffixes*\ , \ *nicips*\ , \ *nicnetworks*\ , \ *nicsadapter*\ , \ *nictypes*\ , \ *nimserver*\ , \ *node*\ , \ *nodetype*\ , \ *ondiscover*\ , \ *os*\ , \ *osvolume*\ , \ *otherinterfaces*\ , \ *ou*\ , \ *parent*\ , \ *passwd.HMC*\ , \ *passwd.admin*\ , \ *passwd.celogin*\ , \ *passwd.general*\ , \ *passwd.hscroot*\ , \ *password*\ , \ *postbootscripts*\ , \ *postscripts*\ , \ *power*\ , \ *pprofile*\ , \ *prescripts-begin*\ , \ *prescripts-end*\ , \ *primarynic*\ , \ *primarysn*\ , \ *productkey*\ , \ *profile*\ , \ *protocol*\ , \ *provmethod*\ , \ *rack*\ , \ *room*\ , \ *routenames*\ , \ *serial*\ , \ *serialflow*\ , \ *serialport*\ , \ *serialspeed*\ , \ *servicenode*\ , \ *setupconserver*\ , \ *setupdhcp*\ , \ *setupftp*\ , \ *setupipforward*\ , \ *setupldap*\ , \ *setupnameserver*\ , \ *setupnfs*\ , \ *setupnim*\ , \ *setupntp*\ , \ *setupproxydhcp*\ , \ *setuptftp*\ , \ *sfp*\ , \ *side*\ , \ *slot*\ , \ *slotid*\ , \ *slots*\ , \ *snmpauth*\ , \ *snmppassword*\ , \ *snmpprivacy*\ , \ *snmpusername*\ , \ *snmpversion*\ , \ *status*\ , \ *statustime*\ , \ *storagcontroller*\ , \ *storagetype*\ , \ *supernode*\ , \ *supportedarchs*\ , \ *supportproxydhcp*\ , \ *switch*\ , \ *switchinterface*\ , \ *switchport*\ , \ *switchtype*\ , \ *switchvlan*\ , \ *termport*\ , \ *termserver*\ , \ *tftpdir*\ , \ *tftpserver*\ , \ *unit*\ , \ *updatestatus*\ , \ *updatestatustime*\ , \ *urlpath*\ , \ *usercomment*\ , \ *userid*\ , \ *username*\ , \ *vmbeacon*\ , \ *vmbootorder*\ , \ *vmcfgstore*\ , \ *vmcluster*\ , \ *vmcpus*\ , \ *vmhost*\ , \ *vmmanager*\ , \ *vmmaster*\ , \ *vmmemory*\ , \ *vmnicnicmodel*\ , \ *vmnics*\ , \ *vmothersetting*\ , \ *vmphyslots*\ , \ *vmstorage*\ , \ *vmstoragecache*\ , \ *vmstorageformat*\ , \ *vmstoragemodel*\ , \ *vmtextconsole*\ , \ *vmvirtflags*\ , \ *vmvncport*\ , \ *webport*\ , \ *xcatmaster*\ , \ *zonename*\
\ **node Attributes:**\ \ *addkcmdline*\ , \ *appstatus*\ , \ *appstatustime*\ , \ *arch*\ , \ *authdomain*\ , \ *bmc*\ , \ *bmcpassword*\ , \ *bmcport*\ , \ *bmcusername*\ , \ *cfgmgr*\ , \ *cfgmgtroles*\ , \ *cfgserver*\ , \ *chain*\ , \ *chassis*\ , \ *cmdmapping*\ , \ *cons*\ , \ *conserver*\ , \ *consoleondemand*\ , \ *cpucount*\ , \ *cputype*\ , \ *currchain*\ , \ *currstate*\ , \ *dhcpinterfaces*\ , \ *disksize*\ , \ *displayname*\ , \ *dockercpus*\ , \ *dockerflag*\ , \ *dockerhost*\ , \ *dockermemory*\ , \ *dockernics*\ , \ *domainadminpassword*\ , \ *domainadminuser*\ , \ *domaintype*\ , \ *getmac*\ , \ *groups*\ , \ *hcp*\ , \ *height*\ , \ *hidden*\ , \ *hostcluster*\ , \ *hostinterface*\ , \ *hostmanager*\ , \ *hostnames*\ , \ *hosttype*\ , \ *hwtype*\ , \ *id*\ , \ *initrd*\ , \ *installnic*\ , \ *interface*\ , \ *ip*\ , \ *iscsipassword*\ , \ *iscsiserver*\ , \ *iscsitarget*\ , \ *iscsiuserid*\ , \ *kcmdline*\ , \ *kernel*\ , \ *linkports*\ , \ *mac*\ , \ *memory*\ , \ *mgt*\ , \ *micbridge*\ , \ *michost*\ , \ *micid*\ , \ *miconboot*\ , \ *micpowermgt*\ , \ *micvlog*\ , \ *migrationdest*\ , \ *monserver*\ , \ *mpa*\ , \ *mtm*\ , \ *nameservers*\ , \ *netboot*\ , \ *nfsdir*\ , \ *nfsserver*\ , \ *nicaliases*\ , \ *niccustomscripts*\ , \ *nicdevices*\ , \ *nicextraparams*\ , \ *nichostnameprefixes*\ , \ *nichostnamesuffixes*\ , \ *nicips*\ , \ *nicnetworks*\ , \ *nicsadapter*\ , \ *nictypes*\ , \ *nimserver*\ , \ *node*\ , \ *nodetype*\ , \ *ondiscover*\ , \ *os*\ , \ *osvolume*\ , \ *otherinterfaces*\ , \ *ou*\ , \ *parent*\ , \ *passwd.HMC*\ , \ *passwd.admin*\ , \ *passwd.celogin*\ , \ *passwd.general*\ , \ *passwd.hscroot*\ , \ *password*\ , \ *postbootscripts*\ , \ *postscripts*\ , \ *power*\ , \ *pprofile*\ , \ *prescripts-begin*\ , \ *prescripts-end*\ , \ *primarynic*\ , \ *primarysn*\ , \ *productkey*\ , \ *profile*\ , \ *protocol*\ , \ *provmethod*\ , \ *rack*\ , \ *room*\ , \ *routenames*\ , \ *serial*\ , \ *serialflow*\ , \ *serialport*\ , \ *serialspeed*\ , \ *servicenode*\ , \ *setupconserver*\ , \ *setupdhcp*\ , \ *setupftp*\ , \ *setupipforward*\ , \ *setupldap*\ , \ *setupnameserver*\ , \ *setupnfs*\ , \ *setupnim*\ , \ *setupntp*\ , \ *setupproxydhcp*\ , \ *setuptftp*\ , \ *sfp*\ , \ *side*\ , \ *slot*\ , \ *slotid*\ , \ *slots*\ , \ *snmpauth*\ , \ *snmppassword*\ , \ *snmpprivacy*\ , \ *snmpusername*\ , \ *snmpversion*\ , \ *status*\ , \ *statustime*\ , \ *storagcontroller*\ , \ *storagetype*\ , \ *supernode*\ , \ *supportedarchs*\ , \ *supportproxydhcp*\ , \ *switch*\ , \ *switchinterface*\ , \ *switchport*\ , \ *switchtype*\ , \ *switchvlan*\ , \ *syslog*\ , \ *termport*\ , \ *termserver*\ , \ *tftpdir*\ , \ *tftpserver*\ , \ *unit*\ , \ *updatestatus*\ , \ *updatestatustime*\ , \ *urlpath*\ , \ *usercomment*\ , \ *userid*\ , \ *username*\ , \ *vmbeacon*\ , \ *vmbootorder*\ , \ *vmcfgstore*\ , \ *vmcluster*\ , \ *vmcpus*\ , \ *vmhost*\ , \ *vmmanager*\ , \ *vmmaster*\ , \ *vmmemory*\ , \ *vmnicnicmodel*\ , \ *vmnics*\ , \ *vmothersetting*\ , \ *vmphyslots*\ , \ *vmstorage*\ , \ *vmstoragecache*\ , \ *vmstorageformat*\ , \ *vmstoragemodel*\ , \ *vmtextconsole*\ , \ *vmvirtflags*\ , \ *vmvncport*\ , \ *webport*\ , \ *xcatmaster*\ , \ *zonename*\
***********
@ -1132,11 +1132,11 @@ node Attributes:
.. code-block:: perl
<slot rows> = number of rows of slots in chassis
<slot rows> = number of rows of slots in chassis
<slot columns> = number of columns of slots in chassis
<slot columns> = number of columns of slots in chassis
<slot orientation> = set to 0 if slots are vertical, and set to 1 if slots of horizontal
<slot orientation> = set to 0 if slots are vertical, and set to 1 if slots of horizontal
@ -1251,6 +1251,12 @@ node Attributes:
\ **syslog**\ (noderes.syslog)
To configure how to configure syslog for compute node. Valid values:blank(not set), ignore. blank - run postscript syslog; ignore - do NOT run postscript syslog
\ **termport**\ (nodehm.termport)
The port number on the terminal server that this node is connected to.

View File

@ -35,4 +35,5 @@ Table of Contents
troubleshooting/index.rst
developers/index.rst
help.rst
security/index.rst

View File

@ -0,0 +1,28 @@
2016-01-15 - OpenSSL Vulnerabilities (SLOTH)
============================================
A detailed description of this issue can be seen in the following blog posting: http://www.mitls.org/pages/attacks/SLOTH
Advisory CVEs
-------------
`CVE-2015-7575 <https://access.redhat.com/security/cve/CVE-2015-7575>`_ - TLS 1.2 Transcipt Collision attacks against MD5 in key exchange protocol (SLOTH)
Action
------
xCAT uses OpenSSL for client-server communication but **does not** ship it.
It is highly recommended to keep your OpenSSL levels up-to-date with the indicated versions in the security bulletins to prevent any potential security threats. Obtain the updated software packages from your Operating system distribution channels.
Disable MD5 authentication in the cipher list using the site table keyword ``xcatsslciphers``.
1. Check if MD5 is already disabled: ``tabdump site | grep xcatssl``
2. If nothing is set, add ``ALL:!MD5`` to the cipher list: ``chtab key=xcatsslciphers site.value='ALL:!MD5'``
3. Restart xcat: ``service xcatd restart``

View File

@ -0,0 +1,28 @@
2016-01-28 - OpenSSL Vulnerabilities
====================================
*Jan 28, 2016* OpenSSL announced the following security advisories: https://mta.openssl.org/pipermail/openssl-announce/2016-January/000061.html
Advisory CVEs
-------------
* CVE-2016-0701 - **DH small subgroups** (Severity:High)
This issue affects OpenSSL version 1.0.2.
OpenSSL 1.0.2 users should upgrade to 1.0.2f
* CVE-2015-3197 - **SSLv2 doesn't block disabled ciphers** (Severity:Low)
This issue affects OpenSSL versions 1.0.2 and 1.0.1.
OpenSSL 1.0.2 users should upgrade to 1.0.2f
OpenSSL 1.0.1 users should upgrade to 1.0.1r
Action
------
xCAT uses OpenSSL for client-server communication but **does not** ship it.
It is recommended to keep your OpenSSL levels up-to-date with the indicated versions in the security bulletins to prevent any potential security threats.

View File

@ -0,0 +1,68 @@
2016-03-01 - OpenSSL Vulnerabilities (DROWN)
============================================
*March 1, 2016* OpenSSL announced the following security advisories: https://www.openssl.org/news/secadv/20160301.txt
Advisory CVEs
-------------
* CVE-2016-0800 - **Cross-protocol attack on TLS using SSLv2 (DROWN)** (Severity:High)
This issue affects OpenSSL versions 1.0.1 and 1.0.2.
OpenSSL 1.0.2 users should upgrade to 1.0.2g
OpenSSL 1.0.1 users should upgrade to 1.0.1s
* CVE-2016-0705 - **Double-free in DSA code** (Severity:Low)
This issue affects OpenSSL versions 1.0.2 and 1.0.1.
OpenSSL 1.0.2 users should upgrade to 1.0.2g
OpenSSL 1.0.1 users should upgrade to 1.0.1s
* CVE-2016-0798 - **Memory leak in SRP database lookups** (Severity:Low)
This issue affects OpenSSL versions 1.0.2 and 1.0.1.
OpenSSL 1.0.2 users should upgrade to 1.0.2g
OpenSSL 1.0.1 users should upgrade to 1.0.1s
* CVE-2016-0797 - **BN_hex2bn/BN_dec2bn NULL pointer deref/heap corruption** (Severity:Low)
This issue affects OpenSSL versions 1.0.2 and 1.0.1.
OpenSSL 1.0.2 users should upgrade to 1.0.2g
OpenSSL 1.0.1 users should upgrade to 1.0.1s
* CVE-2016-0797 - **Fix memory issues in BIO_*printf functions** (Severity:Low)
This issue affects OpenSSL versions 1.0.2 and 1.0.1.
OpenSSL 1.0.2 users should upgrade to 1.0.2g
OpenSSL 1.0.1 users should upgrade to 1.0.1s
* CVE-2016-0702 - **Side channel attack on modular exponentiation** (Severity:Low)
This issue affects OpenSSL versions 1.0.2 and 1.0.1.
OpenSSL 1.0.2 users should upgrade to 1.0.2g
OpenSSL 1.0.1 users should upgrade to 1.0.1s
* CVE-2016-0703 - **Divide-and-conquer session key recovery in SSLv2** (Severity:High)
This issue affected OpenSSL versions 1.0.2, 1.0.1l, 1.0.0q, 0.9.8ze and all earlier versions. It was fixed in OpenSSL 1.0.2a, 1.0.1m, 1.0.0r and 0.9.8zf
* CVE-2016-0704 - **Bleichenbacher oracle in SSLv2** (Severity:Moderate)
This issue affected OpenSSL versions 1.0.2, 1.0.1l, 1.0.0q, 0.9.8ze and all earlier versions. It was fixed in OpenSSL 1.0.2a, 1.0.1m, 1.0.0r and 0.9.8zf
Action
------
xCAT uses OpenSSL for client-server communication but **does not** ship it. Regarding CVE-2016-0800, xCAT also does not use SSLv2 layer but uses the newer TLS transport layer security.
It is recommended to keep your OpenSSL levels up-to-date with the indicated versions in the security bulletins to prevent any potential security threats.

View File

@ -0,0 +1,52 @@
2016-05-03 - OpenSSL Vulnerabilities (ANS.1 encoder)
====================================================
*May 3, 2016* OpenSSL announced the following security advisories: https://www.openssl.org/news/secadv/20160503.txt
Advisory CVEs
-------------
* CVE-2016-2108 - **Memory corruption in the ASN.1 encoder** (Severity:High)
This issue affects all OpenSSL version prior to April 2015
OpenSSL 1.0.2 users should upgrade to 1.0.2c
OpenSSL 1.0.1 users should upgrade to 1.0.1o
* CVE-2016-2107 - **Padding oracle in AES-NI CBC MAC check** (Severity: High)
This issue was introduced as part of the fix for Lucky 13 padding attack (CVE-2013-0169)
OpenSSL 1.0.2 users should upgrade to 1.0.2h
OpenSSL 1.0.1 users should upgrade to 1.0.1t
* CVE-2016-2105 - **EVP_EncodeUpdate overflow** (Severity:Low)
OpenSSL 1.0.2 users should upgrade to 1.0.2h
OpenSSL 1.0.1 users should upgrade to 1.0.1t
* CVE-2016-2106 - **EVP_EncryptUpdate overflow** (Severity:Low)
OpenSSL 1.0.2 users should upgrade to 1.0.2h
OpenSSL 1.0.1 users should upgrade to 1.0.1t
* CVE-2016-2109 - **ASN.1 BIO excessive memory allocation** (Severity:Low)
OpenSSL 1.0.2 users should upgrade to 1.0.2h
OpenSSL 1.0.1 users should upgrade to 1.0.1t
* CVE-2016-2176 - **EBCDIC overread** (Severity:Low)
OpenSSL 1.0.2 users should upgrade to 1.0.2h
OpenSSL 1.0.1 users should upgrade to 1.0.1t
Action
------
xCAT uses OpenSSL for client-server communication but **does not** ship it.
It is recommended to keep your OpenSSL levels up-to-date with the indicated versions in the security bulletins to prevent any potential security threats.

View File

@ -0,0 +1,10 @@
2016 Notices
============
.. toctree::
:maxdepth: 1
20160503_openssl.rst
20160301_openssl.rst
20160128_openssl.rst
20160115_openssl.rst

View File

@ -0,0 +1,8 @@
Security Notices
================
.. toctree::
:maxdepth: 2
2016/index.rst
2015/index.rst

View File

@ -24,6 +24,10 @@ The ssh access to the installer is enabled, the admin can login into the install
Just as the message above suggests, the admin should run ``ssh -X root@<node>`` to access the installer and run ``yast.ssh`` to finish the installation.
**Note**: For sles12, during the second stage of an SSH installation YaST freezes. It is blocked by the SuSEFirewall service because the ``SYSTEMCTL_OPTIONS`` environment variable is not set properly. Workaround: When logged in for the second time to start the second stage of the SSH installation, call **yast.ssh** with the ``--ignore-dependencies`` as follows: ::
SYSTEMCTL_OPTIONS=--ignore-dependencies yast.ssh
#. For UBT, the installation will halt on the following similar message in the console: ::
┌───────────┤ [!!] Continue installation remotely using SSH ├───────────┐

View File

@ -129,7 +129,7 @@ sub remote_copy_command
# if only syncing the service node or
# (no postscripts and no append lines) then do not
# get update file notification
if (($::SYNCSN == 1) || ((!(defined @::postscripts)) && (!(defined @::appendlines)) && (!(defined @::mergelines)))) {
if (($::SYNCSN == 1) || ((!(@::postscripts)) && (!(@::appendlines)) && (!(@::mergelines)))) {
$sync_opt .= '-Lprogtz ';
} else {
$sync_opt .= '-Liprogtz --out-format=%f%L '; # add notify of update

View File

@ -1188,6 +1188,9 @@ use xCAT::ExtTab;
"FQDNfirst: Fully Qualified Domain Name first. If set to 1/yes/enable, the /etc/hosts \n" .
" entries generated by 'makehosts' will put the FQDN before the PQDN(Partially \n" .
" Qualified Domain Name). Otherwise, the original behavior will be performed.\n\n" .
"hierarchicalattrs: Table attributes(e.g. postscripts, postbootscripts) that will be\n".
" included hierarchically. Attribute values for all the node's groups\n".
" will be applied to the node in the groups' order except the repeat one.\n\n".
" -----------------------\n" .
"VIRTUALIZATION ATTRIBUTES\n" .
" -----------------------\n" .

View File

@ -2554,16 +2554,25 @@ sub getNodeAttribs_nosub_returnany
my $attrib;
my $result;
my @hierarchy_attrs;
my $hierarchy_field = xCAT::TableUtils->get_site_attribute("hierarchicalattrs");
if ($hierarchy_field) {
@hierarchy_attrs = split(/,/, $hierarchy_field);
}
my $data = $results[0];
if(defined{$data}) { #if there was some data for the node, loop through and check it
foreach $result (@results) {
foreach $attrib (keys %attribsToDo) {
if (defined($result) && defined($result->{$attrib}) && $self->{tabname} ne 'nodelist'
&& @hierarchy_attrs && grep (/^$attrib$/, @hierarchy_attrs) ) {
$result->{$attrib} .= ',+=NEXTRECORD';
}
#check each item in the results to see which attributes were satisfied
if(defined($result) && defined($result->{$attrib}) && $result->{$attrib} !~ $nextRecordAtEnd) {
delete $attribsToDo{$attrib};
}
}
}
}
}
}
@ -2571,6 +2580,16 @@ sub getNodeAttribs_nosub_returnany
return @results;
}
if ($self->{tabname} eq 'nodelist') {
return @results;
}
# As self->nodelist is a weak reference, if error haddpens, log it.
if (!defined($self->{nodelist})) {
xCAT::MsgUtils->message("S","xcat Table: Unexpected error, nodelist object is undef.");
return undef;
}
#find the groups for this node
my ($nodeghash) = $self->{nodelist}->getAttribs({node => $node}, 'groups');
@ -2578,7 +2597,7 @@ sub getNodeAttribs_nosub_returnany
unless (defined($nodeghash) && defined($nodeghash->{groups})) {
return @results;
}
my @nodegroups = split(/,/, $nodeghash->{groups});
my $group;
my @groupResults;
@ -2601,8 +2620,10 @@ sub getNodeAttribs_nosub_returnany
#print "looking for attrib $attrib\n";
if(defined($groupResult->{$attrib})){
$attribsDone{$attrib} = 0;
#print "found attArib $attrib = $groupResult->{$attrib}\n";
#print "and results look like this: \n".Dumper(\@results)."\n\n\n";
# for hierarchy attribute, append attributes from all the node's group
if (@hierarchy_attrs && grep (/^$attrib$/, @hierarchy_attrs) ) {
$groupResult->{$attrib} .= ',+=NEXTRECORD';
}
foreach $result (@results){ #loop through our existing results to add or modify the value for this attribute
if(defined($result)) {
if(defined($result->{$attrib})) {
@ -2639,7 +2660,6 @@ sub getNodeAttribs_nosub_returnany
}
}
else {#no results in the array so far
#print "pushing for the first time. attr=$attrib groupResults=$groupResult->{$attrib}\n";
$toPush{$attrib} = $groupResult->{$attrib};
if($options{withattribution} && $attrib ne $nodekey){
$toPush{'!!xcatgroupattribution!!'}->{$attrib} = $group;
@ -2685,6 +2705,13 @@ sub getNodeAttribs_nosub_returnany
for $result (@results) {
for my $key (keys %$result) {
$result->{$key} =~ s/\+=NEXTRECORD//g;
if (@hierarchy_attrs && grep (/^$key$/, @hierarchy_attrs) ) {
my @attribs = split(/,/, $result->{$key});
my %count;
# remove the repeat value
@attribs = grep { ++$count{ $_ } < 2; } @attribs;
$result->{$key} = join(',', @attribs);
}
}
}
@ -3474,10 +3501,12 @@ sub close
my $self = shift;
#if ($self->{dbh}) { $self->{dbh}->disconnect(); }
#undef $self->{dbh};
if ($self->{tabname} eq 'nodelist') {
undef $self->{nodelist};
} else {
$self->{nodelist}->close();
if ($0 ne "xcatd: DB Access") {
if ($self->{tabname} eq 'nodelist') {
undef $self->{nodelist};
} else {
$self->{nodelist}->close();
}
}
}

View File

@ -1606,7 +1606,7 @@ sub checkCredFiles
$dir = "/etc/xcat/hostkeys";
if (-d $dir)
{
my $file = "$dir/ssh_host_key.pub";
my $file = "$dir/ssh_host_rsa_key.pub";
if (-e $file)
{
my $file2 = "$dir/*.pub"; # all public keys

View File

@ -215,7 +215,7 @@ my %usage = (
[vmphyslots=drc_index1,drc_index2...] [vmothersetting=hugepage:N,bsr:N]
[vmnics=vlan1,vlan2] [vmstorage=<N|viosnode:slotid>] [--vios]
For KVM
mkvm noderange -m|--master mastername -s|--size disksize -f|--force
mkvm noderange [-s|--size disksize] [--mem memsize] [--cpus cpucount] [-f|--force]
For zVM
mkvm noderange directory_entry_file_path
mkvm noderange source_virtual_machine pool=disk_pool pw=multi_password",

View File

@ -3896,30 +3896,55 @@ sub servicemap{
my $path=undef;
my $postfix="";
my $retdefault=$svcname;
my $svcmgrcmd;
if($svcmgrtype == 0){
#for sysvinit
$path="/etc/init.d/";
$svcmgrcmd="service";
}elsif ($svcmgrtype == 1){
$path="/usr/lib/systemd/system/";
#for systemd
#ubuntu 16.04 replace upstart with systemd,
#all the service unit files are placed under /lib/systemd/system/ on ubuntu
#all the service unit files are placed under /usr/lib/systemd/system/ on redhat and sles
#$path delimited with space
$path="/usr/lib/systemd/system/ /lib/systemd/system/";
$postfix=".service";
$svcmgrcmd="systemctl";
# $retdefault=$svcname.".service";
}elsif ($svcmgrtype == 2){
$path="/etc/init/";
$postfix=".conf";
$svcmgrcmd="initctl";
}
#check whether service management command is available
system "type $svcmgrcmd >/dev/null 2>&1";
if($? != 0){
return undef;
}
my @paths=split(" ",$path);
my $ret=undef;
if($svchash{$svcname}){
foreach my $file (@{$svchash{$svcname}}){
if(-e $path.$file.$postfix ){
$ret=$file;
last;
foreach my $file (@{$svchash{$svcname}}){
foreach my $ipath (@paths){
if(-e $ipath.$file.$postfix ){
$ret=$file;
last;
}
}
}
if(defined $ret){
last;
}
}
}else{
if(-e $path.$retdefault.$postfix){
$ret=$retdefault;
}
foreach my $ipath (@paths){
if(-e $ipath.$retdefault.$postfix){
$ret=$retdefault;
last;
}
}
}
return $ret;

View File

@ -75,6 +75,8 @@ require Exporter;
"1411733344.616389" => "rhels6.6", #ppc64
"1435823078.283602" => "rhels6.7", #ppc64
"1435823078.298912" => "rhels6.7", #x86_64
"1460645249.800975" => "rhels6.8", #ppc64
"1460645249.825876" => "rhels6.8", #x86_64
"1399449226.171922" => "rhels7", #x86_64
"1399449226.155578" => "rhels7", #ppc64
"1424360759.989976" => "rhels7.1", #x86_64

View File

@ -8,11 +8,11 @@ B<bmcdiscover> [B<-?>|B<-h>|B<--help>]
B<bmcdiscover> [B<-v>|B<--version>]
B<bmcdiscover> [B<-s> I<scan_method>] B<--range> I<ip_ranges> [B<-z>] [B<-w>] [B<-t>]
B<bmcdiscover> [B<-s> I<scan_method>] [B<-u> I<bmc_user>] [B<-p> I<bmc_passwd>] [B<-z>] [B<-w>] [B<-t>] B<--range> I<ip_ranges>
B<bmcdiscover> {B<-i>|B<--bmcip>} I<bmc_ip> {B<-u>|B<--bmcuser>} I<bmc_username> {B<-p>|B<--bmcpasswd>} I<bmc_password> B<--check>
B<bmcdiscover> B<-u> I<bmc_user> B<-p> I<bmc_passwd> B<-i> I<bmc_ip> B<--check>
B<bmcdiscover> {B<-i>|B<--bmcip>} I<bmc_ip> {B<-u>|B<--bmcuser>} I<bmc_username> {B<-p>|B<--bmcpasswd>} I<bmc_password> B<--ipsource>
B<bmcdiscover> [B<-u> I<bmc_user>] [B<-p> I<bmc_passwd>] B<-i> I<bmc_ip> B<--ipsource>
=head1 DESCRIPTION
@ -61,13 +61,13 @@ BMC user name.
BMC user password.
=item B<-c|--check>
=item B<--check>
Check
Check BMC administrator User/Password.
=item B<--ipsource>
BMC IP source
Display the BMC IP configuration.
=item B<-h|--help>
@ -104,7 +104,7 @@ Note: Input for IP range can be in the form: scanme.nmap.org, microsoft.com/24,
4. To check if the username or password is correct against the BMC:
bmcdiscover -i 10.4.23.254 -u USERID -p PASSW0RD -c
bmcdiscover -i 10.4.23.254 -u USERID -p PASSW0RD --check
5. Get BMC IP Address source, DHCP Address or static Address

View File

@ -1,6 +1,6 @@
=head1 NAME
B<lsvm> - Lists partition profile information for HMC-, DFM-, IVM-, KVM-, Vmware- and zVM-managed nodes. For Power 775, it lists the LPARs' I/O slots information and CEC configuration.
B<lsvm> - Lists partition profile information for HMC-, DFM-, IVM-, KVM-, VMware- and zVM-managed nodes. For Power 775, it lists the LPARs' I/O slots information and CEC configuration.
=head1 SYNOPSIS
@ -18,6 +18,10 @@ B<lsvm> [B<-l>| B<--long>] B<--p775> I<noderange>
B<lsvm> I<noderange>
=head2 For KVM and VMware
B<lsvm> I<noderange>
=head2 For zVM:
B<lsvm> I<noderange>
@ -44,9 +48,9 @@ The Memory Interleaving Mode has 3 valid options:
More information about this part, refer to the section Using the *vm commands to define partitions in xCAT DFM in the doc below.
XCAT_Power_775_Hardware_Management
=head2 For KVM and Vmware
=head2 For KVM and VMware
The virtual machines that defined in the hypervisor I<noderange> will be displayed. I<noderange> only can be hypervisor. The type of the hypervisor should be set: hypervisor.type before running the lsvm.
The virtual machines that defined in the hypervisor I<noderange> will be displayed. I<noderange> can only be hypervisor.
Note: Only the virtual machine which is in power on state can be listed by lsvm command.

View File

@ -26,7 +26,7 @@ B<mkvm> I<noderange> [B<vmcpus=> I<min/req/max>] [B<vmmemory=> I<min/req/max>] [
=head2 For KVM:
B<mkvm> I<noderange> [B<-m|--master> I<mastername>] [B<-s|--size> I<disksize>] [B<--mem> I<memsize>] [B<--cpus> I<cpucount>] [B<-f|--force>]
B<mkvm> I<noderange> [B<-s|--size> I<disksize>] [B<--mem> I<memsize>] [B<--cpus> I<cpucount>] [B<-f|--force>]
=head2 For Vmware:

View File

@ -4,9 +4,9 @@ B<pasu> - run the ASU to many nodes in parallel
=head1 SYNOPSIS
B<pasu> [B<-V>] [B<-d>] [B<-n>] [B<-l> I<user>] [B<-p> I<passwd>] [B<-f> I<fanout>] [B<-i> I<hostname-suffix>] I<noderange> I<command>
B<pasu> [B<-V>] [B<-d>] [B<-l> I<user>] [B<-p> I<passwd>] [B<-f> I<fanout>] [B<-i> I<hostname-suffix>] I<noderange> I<command>
B<pasu> [B<-V>] [B<-d>] [B<-n>] [B<-l> I<user>] [B<-p> I<passwd>] [B<-f> I<fanout>] [B<-i> I<hostname-suffix>] B<-b> I<batchfile> I<noderange>
B<pasu> [B<-V>] [B<-d>] [B<-l> I<user>] [B<-p> I<passwd>] [B<-f> I<fanout>] [B<-i> I<hostname-suffix>] B<-b> I<batchfile> I<noderange>
B<pasu> [B<-h> | B<--help>]
@ -25,11 +25,6 @@ to confirm that the IMMs are configured properly.
=over 10
=item B<-n|--nonodecheck>
Do not send the noderange to xcatd to expand it into a list of nodes. Use the noderange exactly as it is specified
to pasu. In this case, the noderange must be a simple list of comma-separated hostnames of the IMMs.
=item B<-l|--loginname> I<username>
The username to use to connect to the IMMs. If not specified, the row in the xCAT B<passwd> table with key "ipmi"

View File

@ -1 +0,0 @@
SUBSYSTEM=="pci", ATTRS{subsystem_vendor}=="0x15b3", ATTRS{class}=="0x020000", RUN+="/sbin/loadmlxeth"

View File

@ -38,6 +38,7 @@ if [ $BUILDARCH = "x86_64" ]; then
sed -i 's/\/lib64\/libmenu.so.5//' $DRACUTMODDIR/install
sed -i 's/\/lib64\/libsysfs.so.2//' $DRACUTMODDIR/install
sed -i 's/\/usr\/sbin\/iprconfig//' $DRACUTMODDIR/install
sed -i '/hwdb.bin/ d' $DRACUTMODDIR/install
sed -i 's/instmods ipr//' $DRACUTMODDIR/installkernel
fi
if [ "$HOSTOS" = "mcp" ]; then

View File

@ -588,8 +588,6 @@ inst "$moddir/restart" "/bin/restart"
inst "$moddir/dhclient.conf" "/etc/dhclient.conf"
inst "$moddir/dhclient-script" "/sbin/dhclient-script"
inst "$moddir/rsyslog.conf" "/etc/rsyslog.conf"
inst "$moddir/98-mlx.rules" "/etc/udev/rules.d/98-mlx.rules"
inst "$moddir/loadmlxeth" "/sbin/loadmlxeth"
dracut_install /sbin/rpc.statd /usr/sbin/sm-notify /etc/netconfig rpcbind /etc/host.conf /usr/sbin/rpc.idmapd
dracut_install ps free find #debug
inst_dir /var/lib/nfs

View File

@ -620,9 +620,7 @@ inst "$moddir/dhclient.conf" "/etc/dhclient.conf"
inst "$moddir/dhclient-script" "/sbin/dhclient-script"
inst "$moddir/rsyslog.conf" "/etc/rsyslog.conf"
inst "$moddir/99-imm.rules" "/etc/udev/rules.d/99-imm.rules"
inst "$moddir/98-mlx.rules" "/etc/udev/rules.d/98-mlx.rules"
inst "$moddir/setupimmnic" "/sbin/setupimmnic"
inst "$moddir/loadmlxeth" "/sbin/loadmlxeth"
if [ -n $version12 ];then
dracut_install rpcbind
else

View File

@ -1,4 +1,4 @@
%define version 2.11
%define version 2.12
%ifarch i386 i586 i686 x86
%define tarch x86
%endif

View File

@ -99,7 +99,9 @@ elif [ "$IPMIMFG" == 20301 -o "$IPMIMFG" == 19046 ] ; then
let idev=0
IFS=','
for p in $BMCPORT; do
unset IFS
ipmitool -d $idev raw 0xc 1 1 0xc0 $p > /dev/null
IFS=','
# after this change, we need to watch and wait to see that it
# actually takes effect. On port change, the service processor
# does not migrate the network configuration over

View File

@ -283,10 +283,11 @@ while :; do
destiny=''
dest=''
elif [ "$dest" = shell ]; then
echo "Dropping to debug shell, exit to check for further action"
echo "Dropping to debug shell, exit to run next destiny"
destiny=''
dest=''
/bin/bash
/bin/nextdestiny $XCATMASTER:$XCATPORT
elif [ "$dest" = runcmd ]; then
destiny=`/bin/nextdestiny $XCATMASTER:$XCATPORT`
dest=`echo $destiny|awk -F= '{print $1}'`

View File

@ -0,0 +1,2 @@
SUBSYSTEM=="pci", ATTRS{subsystem_vendor}=="15b3", ATTRS{class}=="0x020000", RUN+="/sbin/loadmlxeth"
SUBSYSTEM=="pci", ATTRS{subsystem_vendor}=="15b3", ATTRS{class}=="0x028000", RUN+="/sbin/loadmlxeth"

View File

@ -112,4 +112,6 @@ touch /etc/xcat/genesis-scripts-updated
%{rpminstallroot}/debian/rules
%{rpminstallroot}/etc/init.d/functions
%{rpminstallroot}/etc/udev/rules.d/99-imm.rules
%{rpminstallroot}/etc/udev/rules.d/98-mlx.rules
%{rpminstallroot}/sbin/setupimmnic
%{rpminstallroot}/sbin/loadmlxeth

View File

@ -7738,7 +7738,7 @@ sub update_dd_boot
}
print DDBOOT $l;
}
if ($l =~ /rmdev -l \${BASECUST_REMOVAL}/ && !$dontupdt5)
if ($l =~ /rmdev -l \$\{BASECUST_REMOVAL\}/ && !$dontupdt5)
{
print DDBOOT " #Remove ODM object definition\n";
print DDBOOT " odmdelete -o CuDv -q name=\${BASECUST_REMOVAL}\n";

View File

@ -113,9 +113,13 @@ sub bmcdiscovery_usage {
push @{ $rsp->{data} }, "Usage:";
push @{ $rsp->{data} }, "\tbmcdiscover [-?|-h|--help]";
push @{ $rsp->{data} }, "\tbmcdiscover [-v|--version]";
push @{ $rsp->{data} }, "\tbmcdiscover [-s scan_method] --range ip_range [-z] [-w] [-t]";
push @{ $rsp->{data} }, "\tbmcdiscover {-i|--bmcip} bmc_ip {-u|--bmcuser} bmc_user {-p|--bmcpasswd} bmc_password --check";
push @{ $rsp->{data} }, "\tbmcdiscover {-i|--bmcip} bmc_ip {-u|--bmcuser} bmc_user {-p|--bmcpasswd} bmc_password --ipsource";
push @{ $rsp->{data} }, "\tbmcdiscover [-s scan_method] [-u bmc_user] [-p bmc_passwd] [-z] [-w] [-t] --range ip_range\n";
push @{ $rsp->{data} }, "\tCheck BMC administrator User/Password:\n";
push @{ $rsp->{data} }, "\t\tbmcdiscover -u bmc_user -p bmc_password -i bmc_ip --check\n";
push @{ $rsp->{data} }, "\tDisplay the BMC IP configuration:\n";
push @{ $rsp->{data} }, "\t\tbmcdiscover [-u bmc_user] [-p bmc_passwd] -i bmc_ip --ipsource";
xCAT::MsgUtils->message( "I", $rsp, $::CALLBACK );
return 0;
@ -197,43 +201,43 @@ sub bmcdiscovery_processargs {
return 1;
}
#
# Get the default bmc account from passwd table
#
($bmc_user, $bmc_pass) = bmcaccount_from_passwd();
# overwrite the default user/pass with what is passed in
if ($::opt_U) {
$bmc_user = $::opt_U;
}
if ($::opt_P) {
$bmc_pass = $::opt_P;
}
#########################################
# Option -s -r should be together
######################################
if ( defined($::opt_R) )
{
######################################
# check if there is nmap or not
######################################
if ( -x '/usr/bin/nmap' )
{
$nmap_path="/usr/bin/nmap";
}
elsif ( -x '/usr/local/bin/nmap' )
{
$nmap_path="/usr/local/bin/nmap";
}
else
{
my $rsp;
push @{ $rsp->{data} }, "\tThere is no nmap in /usr/bin/ or /usr/local/bin/. \n ";
xCAT::MsgUtils->message( "E", $rsp, $::CALLBACK );
return 1;
}
($bmc_user, $bmc_pass) = bmcaccount_from_passwd();
if ($::opt_P) {
$bmc_pass = $::opt_P;
if (!$::opt_U) {
$bmc_user = '';
} else {
$bmc_user = $::opt_U;
}
}
scan_process($::opt_M,$::opt_R,$::opt_Z,$::opt_W,$request_command);
return 0;
######################################
# check if there is nmap or not
######################################
if ( -x '/usr/bin/nmap' )
{
$nmap_path="/usr/bin/nmap";
}
elsif ( -x '/usr/local/bin/nmap' )
{
$nmap_path="/usr/local/bin/nmap";
}
else
{
my $rsp;
push @{ $rsp->{data} }, "\tThere is no nmap in /usr/bin/ or /usr/local/bin/. \n ";
xCAT::MsgUtils->message( "E", $rsp, $::CALLBACK );
return 1;
}
scan_process($::opt_M,$::opt_R,$::opt_Z,$::opt_W,$request_command);
return 0;
}
if ( defined($::opt_C) && defined($::opt_S) ) {
@ -244,19 +248,20 @@ sub bmcdiscovery_processargs {
return 2;
}
####################################################
# --check option, requires -i and -p to be specified
####################################################
#########################################################
# --check option, requires -i, -u, and -p to be specified
#########################################################
if ( defined($::opt_C) ) {
if ( defined($::opt_P) && defined($::opt_I) ) {
my $option_u = defined $::opt_U ? $::opt_U : "none";
my $res=check_auth_process($::opt_I,$option_u,$::opt_P);
if ( defined($::opt_P) && defined($::opt_U) && defined($::opt_I) ) {
my $res=check_auth_process($::opt_I,$::opt_U,$::opt_P);
return $res;
}
else {
my $msg = "";
if (!defined($::opt_I)) {
$msg = "The check option requires a BMC IP. Specify the IP using the -i|--bmcip option.";
} elsif (!defined($::opt_U)) {
$msg = "The check option requires a user. Specify the user with the -u|--bmcuser option.";
} elsif (!defined($::opt_P)) {
$msg = "The check option requires a password. Specify the password with the -p|--bmcpasswd option.";
}
@ -271,9 +276,8 @@ sub bmcdiscovery_processargs {
# --ipsource option, requires -i, -p to be specified
####################################################
if ( defined($::opt_S) ) {
if ( defined($::opt_P) && defined($::opt_I) ) {
my $option_u = defined $::opt_U ? $::opt_U : "none";
my $res=get_bmc_ip_source($::opt_I,$option_u,$::opt_P);
if ( defined($bmc_user) && defined($bmc_pass) && defined($::opt_I) ) {
my $res=get_bmc_ip_source($::opt_I,$bmc_user,$bmc_pass);
return $res;
}
else {
@ -439,6 +443,7 @@ sub scan_process{
my $callback = $::CALLBACK;
my $children; # The number of child process
my %sp_children; # Record the pid of child process
my $bcmd;
my $sub_fds = new IO::Select; # Record the parent fd for each child process
if ( !defined($method) )
@ -451,7 +456,18 @@ sub scan_process{
# get live ip list
###########################################################
if ( $method eq "nmap" ) {
my $bcmd = join(" ",$nmap_path," -sn -n $range | grep for |cut -d ' ' -f5 |tr -s '\n' ' ' ");
#check nmap version first
my $ccmd = "$nmap_path -V | grep version";
my $version_result = xCAT::Utils->runcmd($ccmd, 0);
my @version_array = split / /, $version_result;
my $nmap_version = $version_array[2];
# the output of nmap is different for version under 4.75
if (xCAT::Utils->version_cmp($nmap_version,"4.75") <= 0) {
$bcmd = join(" ",$nmap_path," -sP -n $range | grep Host |cut -d ' ' -f2 |tr -s '\n' ' ' ");
} else {
$bcmd = join(" ",$nmap_path," -sn -n $range | grep for |cut -d ' ' -f5 |tr -s '\n' ' ' ");
}
$ip_list = xCAT::Utils->runcmd("$bcmd", -1);
if ($::RUNCMD_RC != 0) {
my $rsp = {};
@ -884,23 +900,25 @@ sub bmcdiscovery_ipmi {
$node =~ s/(.*)/\L$1/g;
}
} elsif ($output =~ /error : unauthorized name/){
xCAT::MsgUtils->message("I", {data=>["Warning: bmc username is incorrect for $node"]}, $::CALLBACK);
xCAT::MsgUtils->message("E", {data=>["BMC username is incorrect for $ip"]}, $::CALLBACK);
return 1;
} elsif ($output =~ /RAKP \S* \S* is invalid/) {
xCAT::MsgUtils->message("I", {data=>["Warning: bmc password is incorrect for $node"]}, $::CALLBACK);
xCAT::MsgUtils->message("E", {data=>["BMC password is incorrect for $ip"]}, $::CALLBACK);
return 1;
}
if ( defined($opz) || defined($opw) )
{
format_stanza($node, $ip);
if (defined($opw))
{
write_to_xcatdb($node, $ip,$request_command);
}
}
else{
my $rsp = {};
push @{ $rsp->{data} }, "$ip";
xCAT::MsgUtils->message("I", $rsp, $::CALLBACK);
}
if ( defined($opz) || defined($opw) )
{
format_stanza($node, $ip);
if (defined($opw))
{
write_to_xcatdb($node, $ip,$request_command);
}
}
else{
my $rsp = {};
push @{ $rsp->{data} }, "$ip";
xCAT::MsgUtils->message("I", $rsp, $::CALLBACK);
}
}
}

View File

@ -191,7 +191,7 @@ sub docfheaders {
my $idx = 0;
my $skip = 0;
my @meat = grep(!/^#/,@$content);
unless (grep(/^config \* {/,@meat)) {
unless (grep(/^config \* \{/,@meat)) {
# do not add the ssl configurations
# if conserver is not compiled with ssl support
my $cmd = "console -h 2>&1";

View File

@ -1060,35 +1060,35 @@ sub update_namedconf {
my $skip=0;
do {
#push @newnamed,"\t\t//listen-on-v6 { any; };\n";
if ($ctx->{forwarders} and $line =~ /forwarders {/) {
if ($ctx->{forwarders} and $line =~ /forwarders \{/) {
push @newnamed,"\tforwarders \{\n";
$skip=1;
foreach (@{$ctx->{forwarders}}) {
push @newnamed,"\t\t".$_.";\n";
}
push @newnamed,"\t};\n";
} elsif ($ctx->{slaves} and $line =~ /allow-transfer {/) {
} elsif ($ctx->{slaves} and $line =~ /allow-transfer \{/) {
push @newnamed,"\tallow-transfer \{\n";
$skip=1;
foreach (@{$ctx->{slaves}}) {
push @newnamed,"\t\t".$_.";\n";
}
push @newnamed,"\t};\n";
} elsif ($ctx->{slaves} and $line =~ /also-notify {/) {
} elsif ($ctx->{slaves} and $line =~ /also-notify \{/) {
push @newnamed,"\talso-notify \{\n";
$skip=1;
foreach (@{$ctx->{slaves}}) {
push @newnamed,"\t\t".$_.";\n";
}
push @newnamed,"\t};\n";
} elsif (defined($ctx->{dnslistenonifs}) and defined($ctx->{dnslistenonifs}->{ipv4}) and $line =~ /listen-on {/) {
} elsif (defined($ctx->{dnslistenonifs}) and defined($ctx->{dnslistenonifs}->{ipv4}) and $line =~ /listen-on \{/) {
push @newnamed,"\tlisten-on \{\n";
$skip=1;
foreach (@{$ctx->{dnslistenonifs}->{ipv4}}) {
push @newnamed,"\t\t".$_.";\n";
}
push @newnamed,"\t};\n";
} elsif (defined($ctx->{dnslistenonifs}) and defined($ctx->{dnslistenonifs}->{ipv6}) and $line =~ /listen-on-v6 {/) {
} elsif (defined($ctx->{dnslistenonifs}) and defined($ctx->{dnslistenonifs}->{ipv6}) and $line =~ /listen-on-v6 \{/) {
push @newnamed,"\tlisten-on-v6 \{\n";
$skip=1;
foreach (@{$ctx->{dnslistenonifs}->{ipv6}}) {

View File

@ -87,6 +87,7 @@ sub addnode
# we're processing the nics table and we found an
# existing entry for this ip so just add this
# ode name as an alias for the existing entry
chomp($hosts[$idx]);
my ($hip, $hnode, $hdom, $hother)= split(/ /, $hosts[$idx]);
# at this point "othernames", if any is just a space

View File

@ -2666,8 +2666,22 @@ sub got_backup_imm_builddate {
$fru->desc("Backup IMM Version");
$fru->value($sessdata->{backupimmversion}." (".$sessdata->{backupimmbuild}." ".$sessdata->{backupimmdate}.")");
$sessdata->{fru_hash}->{backupimm} = $fru;
}
get_imm_property(property=>"/v2/ibmc/trusted_buildid",callback=>\&got_trusted_imm,sessdata=>$sessdata);
} else {
initfru_with_mprom($sessdata);
}
}
sub got_trusted_imm {
my %res = @_;
my $sessdata = $res{sessdata};
if ($res{data}) {
my $fru = FRU->new();
$fru->rec_type("bios,uefi,firmware");
$fru->desc("Trusted IMM Build");
$fru->value($res{data});
$sessdata->{fru_hash}->{trustedimm} = $fru;
}
initfru_with_mprom($sessdata);
}
sub got_fpga_version {
my %res = @_;
@ -3396,10 +3410,15 @@ sub readcurrfrudevice {
}
my @data = @{$rsp->{data}};
if ($data[0] != $sessdata->{currfruchunk}) {
add_fruhash($sessdata);
my $text = "Received incorrect data from BMC for FRU ID: " . $sessdata->{currfruid};
xCAT::SvrUtils::sendmsg($text,$callback,$sessdata->{node},%allerrornodes);
return;
# Fix FRU 43,48 and 49 for GRS server that they can not return as much data as shall return
if ($data[0] gt 0) {
$sessdata->{currfrudone}=1;
} else {
my $text = "Received incorrect data from BMC for FRU ID: " . $sessdata->{currfruid};
xCAT::SvrUtils::sendmsg($text,$callback,$sessdata->{node},%allerrornodes);
add_fruhash($sessdata);
return;
}
}
shift @data;
push @{$sessdata->{currfrudata}},@data;

View File

@ -79,7 +79,7 @@ sub handled_commands {
#rvitals => 'nodehm:mgt',
#rinv => 'nodehm:mgt',
getrvidparms => 'nodehm:mgt',
lsvm => 'hypervisor:type',
lsvm => 'nodehm:mgt=ipmi',
rbeacon => 'nodehm:mgt',
revacuate => 'hypervisor:type',
vmstatenotify => 'hypervisor:type',
@ -1751,9 +1751,29 @@ sub rmvm {
my $disktype = $disk->parentNode()->getAttribute("device");
if ($disktype eq "cdrom") { next; }
my $file = $disk->getAttribute("file");
my $vol = $hypconn->get_storage_volume_by_path($file);
if ($vol) {
$vol->delete();
# try to check the existence first, if cannot find, do nothing.
# we do retry because we found sometimes the delete might fail
my $retry = 0;
my $vol;
while ($retry < 10) {
eval { $vol = $hypconn->get_storage_volume_by_path($file); };
if ($@) {
# Cannot find volumn, then stop delete
xCAT::MsgUtils->trace(0, "e", "kvm: $@") if ($retry == 0);
last;
}
if ($vol) {
eval {
# Need to call get_info() before deleting a volume, without that, delete() will sometimes fail. Issue #455
$vol->get_info();
$vol->delete();
};
if ($@) {
xCAT::MsgUtils->trace(0, "e", "kvm: $@");
}
}
$retry++;
}
}
}

View File

@ -120,14 +120,12 @@ sub process_request {
chmod(0700,$tempdir."$sshdir");
copy("/root/.ssh/id_rsa.pub","$tempdir$sshdir/authorized_keys");
chmod(0600,"$tempdir$sshdir/authorized_keys");
if (not $invisibletouch and -r "/etc/xcat/hostkeys/ssh_host_key") {
copy("/etc/xcat/hostkeys/ssh_host_key","$tempdir/etc/ssh_host_key");
if (not $invisibletouch and -r "/etc/xcat/hostkeys/ssh_host_rsa_key") {
copy("/etc/xcat/hostkeys/ssh_host_rsa_key","$tempdir/etc/ssh_host_rsa_key");
copy("/etc/xcat/hostkeys/ssh_host_dsa_key","$tempdir/etc/ssh_host_dsa_key");
chmod(0600,<$tempdir/etc/ssh_*>);
}
unless ($invisibletouch or -r "$tempdir/etc/ssh_host_key") {
system("ssh-keygen -t rsa1 -f $tempdir/etc/ssh_host_key -C '' -N ''");
unless ($invisibletouch or -r "$tempdir/etc/ssh_host_rsa_key") {
system("ssh-keygen -t rsa -f $tempdir/etc/ssh_host_rsa_key -C '' -N ''");
system("ssh-keygen -t dsa -f $tempdir/etc/ssh_host_dsa_key -C '' -N ''");
}
@ -200,17 +198,13 @@ CREAT_CONF_FILE:
chmod(0755,"$tftpdir/xcat/xnba/nets");
mkpath("$tftpdir/pxelinux.cfg");
chmod(0755,"$tftpdir/pxelinux.cfg");
if (! -r "$tftpdir/pxelinux.0") {
unless (-r "/usr/lib/syslinux/pxelinux.0" or -r "/usr/share/syslinux/pxelinux.0") {
$callback->({error=>["Unable to find pxelinux.0 "],errorcode=>[1]});
return;
}
if (-r "/usr/lib/syslinux/pxelinux.0") {
copy("/usr/lib/syslinux/pxelinux.0","$tftpdir/pxelinux.0");
} else {
copy("/usr/share/syslinux/pxelinux.0","$tftpdir/pxelinux.0");
}
chmod(0644,"$tftpdir/pxelinux.0");
if (-r "/usr/lib/syslinux/pxelinux.0") {
copy("/usr/lib/syslinux/pxelinux.0","$tftpdir/pxelinux.0");
} elsif (-r "/usr/share/syslinux/pxelinux.0") {
copy("/usr/share/syslinux/pxelinux.0","$tftpdir/pxelinux.0");
}
if (-r "$tftpdir/pxelinux.0") {
chmod(0644,"$tftpdir/pxelinux.0");
}
} elsif ($arch =~ /ppc/) {
mkpath("$tftpdir/pxelinux.cfg/p/");

View File

@ -371,8 +371,11 @@ sub process_request {
$callback->({error=> ["The node [$node] should have a correct IP address which belongs to the management network."], errorcode=>["1"]});
return;
}
# Other arch such as IBM system x need also to go into this function.
xCAT::Utils->cleanup_for_powerLE_hardware_discovery($request, $doreq);
if ($request->{arch}->[0] =~ /ppc/ and $request->{platform}->[0] =~ /PowerNV/) {
# This is a slow thing to do, and frequently breaks things thoroughly
xCAT::Utils->cleanup_for_powerLE_hardware_discovery($request, $doreq);
}
my $restartstring = "restart";
if (scalar @forcenics > 0) {

View File

@ -1070,6 +1070,11 @@ sub mkinstall
and -r "$pkgdir/1/boot/ppc64le/linux"
and -r "$pkgdir/1/boot/ppc64le/initrd"
)
or (
$arch eq "ppc64"
and -r "$pkgdir/1/suseboot/linux64"
and -r "$pkgdir/1/suseboot/initrd64"
)
or ($arch =~ /ppc/ and -r "$pkgdir/1/suseboot/inst64")
)
{
@ -1120,12 +1125,25 @@ sub mkinstall
xCAT::MsgUtils->trace($verbose_on_off,"d","sles->mkinstall: copy initrd.img and linux to $tftppath");
}
}
elsif ($arch =~ /ppc/)
{
elsif($arch eq "ppc64"){
unless ($noupdateinitrd) {
copy("$pkgdir/1/suseboot/inst64", "$tftppath");
@dd_drivers = &insert_dd($callback, $os, $arch, "$tftppath/inst64", undef, $driverupdatesrc, $netdrivers, $osupdir, $ignorekernelchk);
xCAT::MsgUtils->trace($verbose_on_off,"d","sles->mkinstall: copy inst64 to $tftppath");
if(-r "$pkgdir/1/suseboot/linux64" and -r "$pkgdir/1/suseboot/initrd64"){
#from sles11.3, suseboot/linux64 and suseboot/initrd64 are used for diskful
#network installation
#the previous suseboot/inst64 can not be run on Power8 BE
copy("$pkgdir/1/suseboot/linux64", "$tftppath");
copy("$pkgdir/1/suseboot/initrd64", "$tftppath");
#TODO: need to verify whether initrd64 and linux64 can be inserted into initrd
#@dd_drivers = &insert_dd($callback, $os, $arch,"$tftppath/initrd64" ,"$tftppath/linux64", undef, $driverupdatesrc, $netdrivers, $osupdir, $ignorekernelchk);
xCAT::MsgUtils->trace($verbose_on_off,"d","sles->mkinstall: copy initrd64 and linux64 to $tftppath");
}
elsif(-r "$pkgdir/1/suseboot/inst64"){
#suseboot/inst64 is used for network installation before sles11.3
#suseboot/inst64 can not be run on Power8 BE
copy("$pkgdir/1/suseboot/inst64", "$tftppath");
@dd_drivers = &insert_dd($callback, $os, $arch, "$tftppath/inst64", undef, $driverupdatesrc, $netdrivers, $osupdir, $ignorekernelchk);
xCAT::MsgUtils->trace($verbose_on_off,"d","sles->mkinstall: copy inst64 to $tftppath");
}
}
}
}
@ -1318,21 +1336,40 @@ sub mkinstall
kcmdline => $kcmdline
}
);
}
elsif ($arch =~ /ppc/)
}
elsif ($arch eq "ppc64")
{
$kernelpath = "$rtftppath/inst64";
xCAT::MsgUtils->trace($verbose_on_off,"d","sles->mkinstall: kcmdline=$kcmdline kernal=$kernelpath initrd=");
$bptab->setNodeAttribs(
$node,
{
kernel => $kernelpath,
initrd => "",
kcmdline => $kcmdline
}
);
if(-r "$tftppath/linux64" and -r "$tftppath/initrd64"){
#from sles11.3, suseboot/linux64 and suseboot/initrd64 are used for diskful
#network installation
#the previous suseboot/inst64 can not be run on Power8 BE
$kernelpath = "$rtftppath/linux64";
$initrdpath = "$rtftppath/initrd64";
xCAT::MsgUtils->trace($verbose_on_off,"d","sles->mkinstall: kcmdline=$kcmdline kernal=$kernelpath initrd=$initrdpath");
$bptab->setNodeAttribs(
$node,
{
kernel => $kernelpath,
initrd => $initrdpath,
kcmdline => $kcmdline
}
);
}
elsif(-r "$tftppath/inst64"){
#suseboot/inst64 is used for network installation before sles11.3
#suseboot/inst64 can not be run on Power8 BE
$kernelpath = "$rtftppath/inst64";
xCAT::MsgUtils->trace($verbose_on_off,"d","sles->mkinstall: kcmdline=$kcmdline kernal=$kernelpath initrd=");
$bptab->setNodeAttribs(
$node,
{
kernel => $kernelpath,
initrd => "",
kcmdline => $kcmdline
}
);
}
}
}
else
{

View File

@ -37,10 +37,11 @@ my %global_switch_type = (
mellanox => "Mellanox",
MLNX => "Mellanox",
MELLAN => "Mellanox",
IBM => "BNT",
IBM => "BNT"
);
#-------------------------------------------------------------------------------
=head1 xCAT_plugin:switchdiscover
=head2 Package Description
@ -423,7 +424,7 @@ sub process_request {
if (!$display_done) {
#display header
$format = "%-12s\t%-15s\t%-40.50s\t%-12s";
$format = "%-12s\t%-20s\t%-50s\t%-12s";
$header = sprintf $format, "ip", "name","vendor", "mac";
send_msg(\%request, 0, $header);
my $sep = "------------";
@ -801,8 +802,10 @@ sub nmap_scan {
sub snmp_scan {
my $request = shift;
my $ccmd;
my $result;
my $switches;
my $counter = 0;
my $nmap_version;
# snmpwalk command has to be available for snmp_scan
if (-x "/usr/bin/snmpwalk" ){
@ -819,13 +822,30 @@ sub snmp_scan {
##################################################
my $ranges = get_ip_ranges($request);
$ccmd = "nmap -V | grep version";
$result = xCAT::Utils->runcmd($ccmd, 0);
my @version_array = split / /, $result;
$nmap_version = $version_array[2];
if (exists($globalopt{verbose})) {
send_msg($request, 0, "version of nmap: $nmap_version\n");
}
#use nmap to find if snmp port is enabled
$ccmd = "/usr/bin/nmap -P0 -v -sU -p 161 -oA snmp_scan @$ranges | grep 'open port 161' ";
# only open port will be scan
# currently, we know nmap version 4.75 has different output for snmp_scan
# command.
# for version 4.75, the line as :"Host 10.4.25.1 appears to be up ... good."
# other higher version has line like this: "Discovered open port 161/udp on 10.4.25.1"
if (xCAT::Utils->version_cmp($nmap_version,"4.75") <= 0) {
$ccmd = "/usr/bin/nmap -P0 -v -sU -p 161 -oA snmp_scan @$ranges | grep up | grep good ";
} else {
$ccmd = "/usr/bin/nmap -P0 -v -sU -p 161 -oA snmp_scan @$ranges | grep 'open port 161' ";
}
if (exists($globalopt{verbose})) {
send_msg($request, 0, "Process command: $ccmd\n");
}
my $result = xCAT::Utils->runcmd($ccmd, 0);
$result = xCAT::Utils->runcmd($ccmd, 0);
if ($::RUNCMD_RC != 0)
{
send_msg($request, 1, "Could not process this command: $ccmd" );
@ -840,11 +860,14 @@ sub snmp_scan {
}
my @lines = split /\n/, $result;
# each line like this: "Discovered open port 161/udp on 10.4.25.1"
# only open port will be scan
foreach my $line (@lines) {
my @array = split / /, $line;
my $ip = $array[5];
my $ip;
if (xCAT::Utils->version_cmp($nmap_version,"4.75") <= 0) {
$ip = $array[1];
} else {
$ip = $array[5];
}
if (exists($globalopt{verbose})) {
send_msg($request, 0, "Run snmpwalk command to get information for $ip");
}
@ -885,7 +908,9 @@ sub get_snmpvendorinfo {
my $snmpwalk_vendor;
my $ccmd = "snmpwalk -Os -v1 -c public $ip sysDescr.0";
#Ubuntu only takes OID
#my $ccmd = "snmpwalk -Os -v1 -c public $ip sysDescr.0";
my $ccmd = "snmpwalk -Os -v1 -c public $ip 1.3.6.1.2.1.1.1";
if (exists($globalopt{verbose})) {
send_msg($request, 0, "Process command: $ccmd\n");
}
@ -922,7 +947,10 @@ sub get_snmpmac {
my $ip = shift;
my $mac;
my $ccmd = "snmpwalk -Os -v1 -c public $ip ipNetToMediaPhysAddress | grep $ip";
#Ubuntu only takes OID
#my $ccmd = "snmpwalk -Os -v1 -c public $ip ipNetToMediaPhysAddress | grep $ip";
my $ccmd = "snmpwalk -Os -v1 -c public $ip 1.3.6.1.2.1.4.22.1.2 | grep $ip";
if (exists($globalopt{verbose})) {
send_msg($request, 0, "Process command: $ccmd\n");
}
@ -937,6 +965,10 @@ sub get_snmpmac {
}
my ($desc,$mac) = split /: /, $result;
#trim the white space at begin and end of mac
$mac =~ s/^\s+|\s+$//g;
#replace space to :
$mac =~ tr/ /:/;
if (exists($globalopt{verbose})) {
send_msg($request, 0, "switch mac = $mac\n" );
@ -959,7 +991,9 @@ sub get_snmphostname {
my $ip = shift;
my $hostname;
my $ccmd = "snmpwalk -Os -v1 -c public $ip sysName";
#Ubuntu only takes OID
#my $ccmd = "snmpwalk -Os -v1 -c public $ip sysName";
my $ccmd = "snmpwalk -Os -v1 -c public $ip 1.3.6.1.2.1.1.5";
if (exists($globalopt{verbose})) {
send_msg($request, 0, "Process command: $ccmd\n");
}

View File

@ -949,19 +949,10 @@ sub genSSHNodeHostKey
# generate new hostkeys
#
xCAT::MsgUtils->message('I', "Generating new node hostkeys...");
xCAT::MsgUtils->message('I', "Generating SSH1 RSA Key...");
my $cmd =
"/usr/bin/ssh-keygen -t rsa1 -f /etc/xcat/hostkeys/ssh_host_key -C '' -N ''";
my $outref = xCAT::Utils->runcmd("$cmd", 0);
if ($::RUNCMD_RC != 0)
{
xCAT::MsgUtils->message('E', "Could not generate SSH1 RSA key.");
}
xCAT::MsgUtils->message('I', "Generating SSH2 RSA Key...");
$cmd =
my $cmd =
"/usr/bin/ssh-keygen -t rsa -f /etc/xcat/hostkeys/ssh_host_rsa_key -C '' -N ''";
$outref = xCAT::Utils->runcmd("$cmd", 0);
my $outref = xCAT::Utils->runcmd("$cmd", 0);
if ($::RUNCMD_RC != 0)
{
xCAT::MsgUtils->message('E', "Could not generate SSH2 RSA key.");
@ -1172,6 +1163,7 @@ sub initDB
$chtabcmds .= "$::XCATROOT/sbin/chtab key=dhcplease site.value=43200;";
$chtabcmds .= "$::XCATROOT/sbin/chtab key=auditnosyslog site.value=0;";
$chtabcmds .= "$::XCATROOT/sbin/chtab key=xcatsslversion site.value=TLSv1;";
$chtabcmds .= "$::XCATROOT/sbin/chtab key=auditskipcmds site.value=ALL;";
#$chtabcmds .= "$::XCATROOT/sbin/chtab key=useflowcontrol site.value=yes;"; # need to fix 4031
if ($::osname eq 'AIX')

View File

@ -585,13 +585,13 @@ sub do_discovery_process {
populate_vpd_hash();
populate_mp_hash();
while (not $quit) {
my $msg = fd_retrieve($broker);
if ((time()-$vintage)> 15) {
populate_site_hash();
populate_vpd_hash();
populate_mp_hash();
$vintage = time();
} # site table reread every 15 second
my $msg = fd_retrieve($broker);
my $data;
my $client;
my $clientn;
@ -616,7 +616,7 @@ sub do_discovery_process {
# xcatrequest xml, so go ahead and decompress it
my $bigdata;
IO::Uncompress::Gunzip::gunzip(\$data,\$bigdata);
$data = $bigdata
$data = $bigdata;
}
my $req = eval { XMLin($data, SuppressEmpty=>undef,ForceArray=>1) };
if ($req and $req->{command} and ($req->{command}->[0] eq "findme" and $sport < 1000)) { # only consider priveleged port requests to start with
@ -962,7 +962,6 @@ $SIG{TERM} = $SIG{INT} = sub {
kill 'USR2', $pid_UDP;
}
if ($pid_MON) {
kill 'INT', $pid_MON;
kill 'USR2', $pid_MON;
}
xCAT::Table::shut_dbworker;
@ -1294,6 +1293,8 @@ my @pendingconnections;
my $tconn;
my $sslfudgefactor = 0;
my $udpalive = 1;
# Make sure DB process is ready.
wait_db_process();
until ($quit) {
$SIG{CHLD} = \&ssl_reaper; # set here to ensure that signal handler is not corrupted during loop
while ($udpalive and $udpwatcher->can_read(0)) { # take an intermission to broker some state requests from udp traffic control
@ -2353,6 +2354,33 @@ sub becomeuser {
# If here, unable to validate given credential
return undef;
}
# Wait for the db process
sub wait_db_process {
my $retry = 100;
my $ready = 0;
# Make sure DB process is ready, so that no direct access
while($retry) {
if (!xCAT::Utils::is_process_exists($dbmaster)) {
sleep 0.1;
} else {
$ready = 1;
last;
}
$retry --;
}
if (!$ready) {
xCAT::MsgUtils->message("S","Error: xcat db process has not been started in 10 seconds.");
return -1;
}
# use create 1 to make sure nodelist and site object cached.
my $tmptab = xCAT::Table->new('site',-create=>1);
if(!$tmptab) {
return -1;
}
return 0;
}
sub populate_site_hash {
%::XCATSITEVALS=();
my $sitetab = xCAT::Table->new('site',-create=>0);

View File

@ -67,7 +67,7 @@ cert_opt = ca_default # Certificate field options
default_days = 7300 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = sha256 # which md to use.
default_md = sha1 # which md to use.
preserve = no # keep passed DN ordering
# A few difference way of specifying how similar the request should look

View File

@ -250,18 +250,27 @@ if [ "$OS" = "Linux" ]; then
echo "[Error] please make your $HOSTNAME has ability to access ports.ubuntu.com" >&2
exit 1
fi
echo "get distro name form /etc/lsb-release ......"
source /etc/lsb-release >/dev/null 2>&1
if [ -z "$DISTRIB_CODENAME" ]; then
echo "[Error] can't get DISTRIB_CODENAME " >&2
exit 1
fi
echo "DISTRIB_CODENAME=$DISTRIB_CODENAME ...[OK]"
cp /etc/apt/sources.list /etc/apt/sources.list.bak
sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ trusty main/d" /etc/apt/sources.list
sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ trusty-updates main/d" /etc/apt/sources.list
sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ trusty universe/d" /etc/apt/sources.list
sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ trusty-updates universe/d" /etc/apt/sources.list
sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ $DISTRIB_CODENAME main/d" /etc/apt/sources.list
sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ $DISTRIB_CODENAME-updates main/d" /etc/apt/sources.list
sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ $DISTRIB_CODENAME universe/d" /etc/apt/sources.list
sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ $DISTRIB_CODENAME-updates universe/d" /etc/apt/sources.list
cat <<-EOF >>/etc/apt/sources.list
deb http://ports.ubuntu.com/ubuntu-ports/ trusty main
deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main
deb http://ports.ubuntu.com/ubuntu-ports/ trusty universe
deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates universe
deb http://ports.ubuntu.com/ubuntu-ports/ $DISTRIB_CODENAME main
deb http://ports.ubuntu.com/ubuntu-ports/ $DISTRIB_CODENAME-updates main
deb http://ports.ubuntu.com/ubuntu-ports/ $DISTRIB_CODENAME universe
deb http://ports.ubuntu.com/ubuntu-ports/ $DISTRIB_CODENAME-updates universe
EOF
apt-get clean all
@ -354,18 +363,25 @@ EOF
sourceslist="$IMGROOTPATH/etc/apt/sources.list"
cp "$sourceslist" "${sourceslist}.bak"
echo "get distro name form $IMGROOTPATH/etc/lsb-release ......"
source $IMGROOTPATH/etc/lsb-release >/dev/null 2>&1
if [ -z "$DISTRIB_CODENAME" ]; then
echo "[Error] can't get DISTRIB_CODENAME " >&2
exit 1
fi
echo "DISTRIB_CODENAME=$DISTRIB_CODENAME ...[OK]"
sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ trusty main/d" $sourceslist
sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ trusty main/d" $sourceslist
sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ trusty-updates main/d" $sourceslist
sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ trusty universe/d" $sourceslist
sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ trusty-updates universe/d" $sourceslist
sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ $DISTRIB_CODENAME main/d" $sourceslist
sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ $DISTRIB_CODENAME-updates main/d" $sourceslist
sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ $DISTRIB_CODENAME universe/d" $sourceslist
sed -i "/deb http:\\/\\/ports.ubuntu.com\\/ubuntu-ports\\/ $DISTRIB_CODENAME-updates universe/d" $sourceslist
cat <<-EOF >>"$sourceslist"
deb http://ports.ubuntu.com/ubuntu-ports/ trusty main
deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main
deb http://ports.ubuntu.com/ubuntu-ports/ trusty universe
deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates universe
deb http://ports.ubuntu.com/ubuntu-ports/ $DISTRIB_CODENAME main
deb http://ports.ubuntu.com/ubuntu-ports/ $DISTRIB_CODENAME-updates main
deb http://ports.ubuntu.com/ubuntu-ports/ $DISTRIB_CODENAME universe
deb http://ports.ubuntu.com/ubuntu-ports/ $DISTRIB_CODENAME-updates universe
EOF
chroot "$IMGROOTPATH" apt-get clean all

View File

@ -76,7 +76,12 @@ clearpart --all --initlabel
# --useLilo
# --md5pass <crypted MD5 password for GRUB>
#
bootloader
#The bootloader config here is commented out
#For user customized partition file or partition script,
#the bootloader configuration should be specified in the user customized partition file/script
#For the xCAT default partition scheme, the bootloader configuration is in /tmp/partitioning
#which is generated in %pre section
##KICKSTARTBOOTLOADER#
#
# install or upgrade
@ -147,9 +152,19 @@ reboot
#INCLUDE_DEFAULT_PKGLIST#
%end
%pre
{
echo "Running Kickstart Pre-Installation script..."
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/pre.rh.rhels7#
} >>/tmp/pre-install.log 2>&1
%end
%post
mkdir -p /var/log/xcat/
{
cat >> /var/log/xcat/xcat.log << "EOF"
%include /tmp/pre-install.log
EOF
echo "Running Kickstart Post-Installation script..."
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/post.xcat#
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/post.rhels7#
} >>/var/log/xcat/xcat.log 2>&1
%end

View File

@ -75,7 +75,12 @@ clearpart --all --initlabel
# --useLilo
# --md5pass <crypted MD5 password for GRUB>
#
#KICKSTARTBOOTLOADER#
#The bootloader config here is commented out
#For user customized partition file or partition script,
#the bootloader configuration should be specified in the user customized partition file/script
#For the xCAT default partition scheme, the bootloader configuration is in /tmp/partitioning
#which is generated in %pre section
##KICKSTARTBOOTLOADER#
#

View File

@ -75,7 +75,13 @@ clearpart --all --initlabel
# --useLilo
# --md5pass <crypted MD5 password for GRUB>
#
#KICKSTARTBOOTLOADER#
#The bootloader config here is commented out
#For user customized partition file or partition script,
#the bootloader configuration should be specified in the user customized partition file/script
#For the xCAT default partition scheme, the bootloader configuration is in /tmp/partitioning
#which is generated in %pre section
##KICKSTARTBOOTLOADER#
#
# install or upgrade
#

View File

@ -18,11 +18,11 @@
#-----------------------------------------------------------
install_disk=""
rm /tmp/install_disk
rm -f /tmp/install_disk
tmpdir="/tmp/xcat.getinstalldisk"
mkdir -p $tmpdir
has_awk=$(find / -name "awk")
has_awk=$(find /usr/* -name "awk")
utolcmd="sed -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/"
@ -36,9 +36,9 @@ if [ -z "$install_disk" ]; then
# Get all partitions and disks from /proc/partitions file
if [ -z "$has_awk" ]; then
entries=$(cat /proc/partitions | sed 's/ */ /g' | cut -d " " -f5 | grep -v "name" | grep -e "[s|h]d.*$")
entries=$(cat /proc/partitions | sed 's/ */ /g' | cut -d " " -f5 | grep -v "name" | grep -e "[s|h|v]d.*$")
else
entries=$(awk -F ' ' '{print $4}' /proc/partitions | grep -v "name" | grep -e "[s|h]d.*$")
entries=$(awk -F ' ' '{print $4}' /proc/partitions | grep -v "name" | grep -e "[s|h|v]d.*$")
fi
# Classify entries by DEVTYPE
@ -133,10 +133,10 @@ if [ -z "$install_disk" ]; then
for disk in $disks; do
# Get disk's information: WWN, PATH and DRIVER
disk_info=$(udevadm info --query=property --name=$disk)
output_for_wwn=$(echo $disk_info | grep '\<ID_WWN\>' | cut -d "=" -f2 | $utolcmd)
disk_wwn=$(IFS= ;echo $output_for_wwn)
output_for_path=$(echo $disk_info | grep DEVPATH | cut -d "=" -f2 | $utolcmd)
disk_path=$(IFS= ;echo $output_for_path)
output_for_wwn=$(IFS= ;echo $disk_info | grep '\<ID_WWN\>' | cut -d "=" -f2)
disk_wwn=$(echo $output_for_wwn | $utolcmd)
output_for_path=$(IFS= ;echo $disk_info | grep DEVPATH | cut -d "=" -f2)
disk_path=$(echo $output_for_path | $utolcmd)
disk_driver=$(udevadm info --attribute-walk --name=$disk | grep DRIVERS| grep -v '""'| grep -v '"sd"'|
\head -n 1| sed -e 's/[^"]*"//' -e 's/"//' | $utolcmd)

View File

@ -421,6 +421,19 @@ updateflag.awk $MASTER 3002
cd /
# fix the issue#929@github, the "service network restart" in <sles post scripts>
# makes the 'network' service in start status, then it causes the
# services YaST2-Second-Stage.service and xcatpostinit1 services to be run in parallel.
# But the YaST2-Second-Stage.service calls the Yast2 which conflics with the zypper
# which is called in xcatpostinit1->otherpkgs.
# The correct services start order is 'YaST2-Second-Stage.service'->'network'->'xcatpostinit1' in serial.
# 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
service network stop
fi
if [ "$XCATDEBUGMODE" = "1" ] || [ "$XCATDEBUGMODE" = "2" ]; then
set +x
fi

View File

@ -191,6 +191,18 @@ echo "part swap --recommended --ondisk $instdisk" >> /tmp/partitioning
echo "part pv.01 --size 1 --grow --ondisk $instdisk" >> /tmp/partitioning
echo "volgroup system pv.01" >> /tmp/partitioning
echo "logvol / --vgname=system --name=root --size 1 --grow --fstype $FSTYPE" >> /tmp/partitioning
#specify "bootloader" configuration in "/tmp/partitioning" if there is no user customized partition file
BOOTLOADER="bootloader "
#specify the kernel options which will be persistent after installation
[ -n "#ENV:PERSKCMDLINE#" ] && BOOTLOADER=$BOOTLOADER" --append=#ENV:PERSKCMDLINE#"
#Specifies which drive the boot loader should be written to
#and therefore which drive the computer will boot from.
[ -n "$instdisk" ] && BOOTLOADER=$BOOTLOADER" --boot-drive=$(basename $instdisk)"
echo "$BOOTLOADER" >> /tmp/partitioning
#XCA_PARTITION_SCRIPT#

View File

@ -0,0 +1,22 @@
@base
@x11
openssl
ntp
rsync
nmap
perl-DBI
vsftpd
perl-IO-Tty
perl-Expect
perl-SNMP
unixODBC
perl-Net-DNS
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

View File

@ -0,0 +1,2 @@
xcat/xcat-core/xCATsn
xcat/xcat-dep/sles12/ppc64le/conserver-xcat

View File

@ -0,0 +1,126 @@
<?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>GMT</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>
<partitions config:type="list">
<partition>
<create config:type="boolean">true</create>
<loop_fs config:type="boolean">false</loop_fs>
<mountby config:type="symbol">device</mountby>
<partition_id config:type="integer">65</partition_id>
<partition_nr config:type="integer">1</partition_nr>
<resize config:type="boolean">false</resize>
<size>8225280</size>
</partition>
<partition>
<create config:type="boolean">true</create>
<crypt_fs config:type="boolean">false</crypt_fs>
<filesystem config:type="symbol">swap</filesystem>
<format config:type="boolean">true</format>
<loop_fs config:type="boolean">false</loop_fs>
<mount>swap</mount>
<mountby config:type="symbol">uuid</mountby>
<partition_id config:type="integer">130</partition_id>
<partition_nr config:type="integer">2</partition_nr>
<resize config:type="boolean">false</resize>
<size>auto</size>
</partition>
<partition>
<create config:type="boolean">true</create>
<crypt_fs config:type="boolean">false</crypt_fs>
<filesystem config:type="symbol">btrfs</filesystem>
<format config:type="boolean">true</format>
<loop_fs config:type="boolean">false</loop_fs>
<mount>/</mount>
<mountby config:type="symbol">uuid</mountby>
<partition_id config:type="integer">131</partition_id>
<partition_nr config:type="integer">3</partition_nr>
<size>100%</size>
</partition>
</partitions>
</drive>
<!-- XCAT-PARTITION-END -->
</partitioning>
<software>
<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>
<routing>
<ip_forward config:type="boolean">false</ip_forward>
<routes config:type="list"/>
</routing>
</networking>
<scripts>
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/pre.sles#
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/chroot.sles#
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/post.sles11#
</scripts>
</configure>
</profile>

View File

@ -0,0 +1,2 @@
xcat/xcat-core/xCATsn
xcat/xcat-dep/sles12/x86_64/conserver-xcat

View File

@ -1,5 +1,6 @@
openssh-server
ntp
ntpdate
gawk
nfs-common
snmpd

View File

@ -8,6 +8,7 @@ openssh-client
wget
vim
ntp
ntpdate
rsync
busybox-static
gawk

View File

@ -251,10 +251,8 @@ my @sysfilelist = (
"/etc/nsswitch.conf",
"/etc/ssh/ssh_host_rsa_key",
"/etc/ssh/ssh_config",
"/etc/ssh/ssh_host_key",
"/etc/ssh/sshd_config",
"/etc/ssh/ssh_host_dsa_key",
"/etc/ssh/ssh_host_key.pub",
"/root/.ssh/id_rsa",
"/root/.ssh/id_rsa.pub",
"/root/.ssh/authorized_keys",);

View File

@ -91,15 +91,18 @@ sub mount_chroot {
my $rootimage_dir = shift;
#postinstall script of some packages might access the /proc, /sys and /dev filesystem
#For Redhat7 or above, mount these directories readonly from host to avoid error messages
#For Redhat7 or above, mount /proc,/sys from host to avoid error messages
#For Redhat7 or above, create /dev according to /dev on the host to avoid error messages
#For Redhat6 or below, mount these directories might introduce error messages
if(majversion($osver) > 6){
system("mkdir -p $rootimage_dir/proc");
system("mount proc $rootimage_dir/proc -t proc -o ro");
system("mount proc $rootimage_dir/proc -t proc");
system("mkdir -p $rootimage_dir/sys");
system("mount sysfs $rootimage_dir/sys -t sysfs -o ro");
system("mount sysfs $rootimage_dir/sys -t sysfs");
system("mkdir -p $rootimage_dir/dev");
system("mount devtmpfs $rootimage_dir/dev -t devtmpfs -o ro");
#system("mount devtmpfs $rootimage_dir/dev -t devtmpfs");
system("cd /dev;find .|cpio -H newc -o >$rootimage_dir/dev/dev.archive;cd -");
system("cd $rootimage_dir/dev;cpio -idum<./dev.archive;rm -f ./dev.archive;cd -");
}
}
@ -109,9 +112,10 @@ sub umount_chroot {
my $rootimage_dir = shift;
if(majversion($osver) >6){
system("umount $rootimage_dir/proc");
system("umount $rootimage_dir/sys");
system("umount $rootimage_dir/dev");
system("umount -l $rootimage_dir/proc");
system("umount -l $rootimage_dir/sys");
#system("umount -l $rootimage_dir/dev");
system("rm -rf $rootimage_dir/dev/*");
}
}

View File

@ -0,0 +1,69 @@
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
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
#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

View File

@ -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

View File

@ -0,0 +1,2 @@
xcat/xcat-core/xCATsn
xcat/xcat-dep/sles12/ppc64le/conserver-xcat

View File

@ -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

View File

@ -0,0 +1,3 @@
-perl-doc
xcat/xcat-core/xCATsn
xcat/xcat-dep/sles12/x86_64/conserver-xcat

View File

@ -49,5 +49,5 @@ chroot $installroot \
locale-gen en_US.UTF-8 en_US
chroot $installroot \
update-locale
chroot $installroot \
DEBIAN_FRONTEND=noninteractive chroot $installroot \
dpkg-reconfigure locales

View File

@ -1 +0,0 @@
compute.ubuntu14.04.3.ppc64el.pkglist

View File

@ -0,0 +1,15 @@
bash
nfs-common
openssl
isc-dhcp-client
libc-bin
linux-image-generic-lts-wily
openssh-server
openssh-client
wget
vim
ntp
rsync
busybox-static
gawk
dnsutils

View File

@ -1 +0,0 @@
compute.ubuntu14.04.3.x86_64.pkglist

View File

@ -0,0 +1,15 @@
bash
nfs-common
openssl
isc-dhcp-client
libc-bin
linux-image-generic-lts-wily
openssh-server
openssh-client
wget
vim
ntp
rsync
busybox-static
gawk
dnsutils

View File

@ -3,12 +3,13 @@ nfs-common
openssl
isc-dhcp-client
libc-bin
linux-image-generic-lts-xenial
linux-image-generic
openssh-server
openssh-client
wget
vim
ntp
ntpdate
rsync
busybox-static
gawk

View File

@ -3,12 +3,13 @@ nfs-common
openssl
isc-dhcp-client
libc-bin
linux-image-generic-lts-xenial
linux-image-generic
openssh-server
openssh-client
wget
vim
ntp
ntpdate
rsync
busybox-static
gawk

View File

@ -1970,13 +1970,17 @@ sub mount_chroot {
#postinstall script of package installation
#might access the /proc, /sys and /dev filesystem
#mount them from host read-only
#mount /proc, /sys from host
#create /dev based on /dev/ on host
system("mkdir -p $rootimage_dir/proc");
system("mount proc $rootimage_dir/proc -t proc -o ro");
system("mount proc $rootimage_dir/proc -t proc");
system("mkdir -p $rootimage_dir/sys");
system("mount sysfs $rootimage_dir/sys -t sysfs -o ro");
system("mount sysfs $rootimage_dir/sys -t sysfs");
system("mkdir -p $rootimage_dir/dev");
system("mount devfs $rootimage_dir/dev -t devfs -o ro");
#system("mount devtmpfs $rootimage_dir/dev -t devtmpfs");
system("cd /dev;find .|cpio -H newc -o >$rootimage_dir/dev/dev.archive;cd -");
system("cd $rootimage_dir/dev;cpio -idum<./dev.archive;rm -f ./dev.archive;cd -");
if ($pkgdir) {
if (-d $pkgdir) {
@ -2009,21 +2013,22 @@ sub mount_chroot {
sub umount_chroot {
my $rootimage_dir = shift;
system("umount $rootimage_dir/proc");
system("umount $rootimage_dir/sys");
system("umount $rootimage_dir/dev");
system("umount -l $rootimage_dir/proc");
system("umount -l $rootimage_dir/sys");
#system("umount -l $rootimage_dir/dev");
system("rm -rf $rootimage_dir/dev/*");
system("umount $rootimage_dir/mnt/pkgdir");
system("umount -l $rootimage_dir/mnt/pkgdir");
rmdir("$rootimage_dir/mnt/pkgdir");
my @data = `grep /mnt/otherpkgdir /proc/mounts | cut -f2 -d' ' | sort -r`;
foreach (@data) {
`umount $_`;
`umount -l $_`;
}
rmdir("$rootimage_dir/mnt/otherpkgdir");
if (-d "$rootimage_dir/mnt/kerneldir") {
system("umount $rootimage_dir/mnt/kerneldir");
system("umount -l $rootimage_dir/mnt/kerneldir");
rmdir("$rootimage_dir/mnt/kerneldir");
}
}

20
xCAT-server/share/xcat/tools/xCATreg Normal file → Executable file
View File

@ -55,8 +55,8 @@ my $regresultdir = "$regrootdir/regresult";
my $todayregresultdir="";
my $maildir="$regrootdir/mail";
my $mailfile="";
my $rootdir = "$::XCATROOT/share/xcat/tools/autotest";
my %confkeys;
my $rootdir = "$::XCATROOT/share/xcat/tools/autotest";
my %confkeys;
my $mail_list = 0;
my $needhelp = 0;
my $branch = "master";
@ -524,7 +524,7 @@ sub copy_code {
return 1;
}
send_msg(2, "[$mn->$confkeys{$mn}][copy_code] copy ISO $iso to $mn successfully");
system ("sed -i 's|ISO=/\\S*|ISO=/$iso|g' $configfiledir/$regconf");
system ("sed -i 's|^ISO=/\\S*|ISO=/$iso|g' $configfiledir/$regconf");
}
if($mn =~ /sles/){
@ -548,7 +548,7 @@ sub copy_code {
return 1;
}
send_msg(2, "[$mn->$confkeys{$mn}][copy_code] copy ISO $iso to $mn successfully");
system ("sed -i 's|ISO=/\\S*|ISO=/$iso|g' $configfiledir/$regconf");
system ("sed -i 's|^ISO=/\\S*|ISO=/$iso|g' $configfiledir/$regconf");
if($os =~ /sles11/){
$res = system("xdsh $confkeys{$mn} \"mv /usr/lib/rpm/find-requires /usr/lib/rpm/find-requires.org\" && scp $osisodir/find-requires $confkeys{$mn}:/usr/lib/rpm/ > /dev/null");
@ -581,7 +581,7 @@ sub copy_code {
return 1;
}
send_msg(2, "[$mn->$confkeys{$mn}][copy_code] copy ISO $iso to $mn successfully");
system ("sed -i 's|ISO=/\\S*|ISO=/$iso|g' $configfiledir/$regconf");
system ("sed -i 's|^ISO=/\\S*|ISO=/$iso|g' $configfiledir/$regconf");
}
return 0;
}
@ -711,6 +711,7 @@ sub do_test {
my $diskless_installation_hierarchy_testcase="";
my $statelite_installation_hierarchy_by_ramdisk_testcase="";
my $statelite_installation_hierarchy_by_nfs_testcase="";
my $setup_dockerhost_testcase="";
my $batbundle="";
if((($mn =~ /sles/) || ($mn =~ /rh/)) && ($mn !~ /E/)){
$diskfull_installation_flat_testcase="reg_linux_diskfull_installation_flat";
@ -728,6 +729,7 @@ sub do_test {
}elsif($mn =~ /ubuntux/){
$diskfull_installation_flat_testcase="Ubuntu_full_installation_flat_x86_vm";
$diskless_installation_flat_testcase="Ubuntu_diskless_installation_flat_x86_vm";
$setup_dockerhost_testcase="Full_installation_flat_docker";
$batbundle="x_ubuntu_cmd.bundle";
}elsif($mn =~ /E/){
$diskfull_installation_flat_testcase="Full_installation_flat_p8_le";
@ -869,6 +871,12 @@ sub do_test {
send_msg(2, "[$mn->$confkeys{$mn}][do_test] do diskfull installation test in flat mode in $mn.....[done]");
last if($rc != 0);
#set up dockerhosts
send_msg(2, "[$mn->$confkeys{$mn}][do_test] setupdockerhost $mn.....");
$rc=system("ssh -t $confkeys{$mn} 'exec bash -l -i -c \"xcattest -f /opt/xcat/share/xcat/tools/autotest/default.conf -t $setup_dockerhost_testcase\"' >/dev/null 2>&1");
send_msg(2, "[$mn->$confkeys{$mn}][do_test] setup dockerhosts $mn.....[done]");
last if($rc != 0);
#commands bundle in flat mode test
send_msg(2, "[$mn->$confkeys{$mn}][do_test] doing all commands test in flat mode in $mn.....");
$rc=system("ssh -t $confkeys{$mn} 'exec bash -l -i -c \"xcattest -f /opt/xcat/share/xcat/tools/autotest/default.conf -b $batbundle\"' >/dev/null 2>&1");
@ -950,7 +958,7 @@ sub creat_report{
}elsif($k =~ /ubuntux/){
$batbundle="/$xcatcoredir/xCAT-test/autotest/bundle/x_ubuntu_cmd.bundle";
$totalcase=`cat $batbundle|wc -l`;
$totalcase+=2;
$totalcase+=3;
}elsif($k =~ /E/){
$batbundle="$xcatcoredir/xCAT-test/autotest/bundle/le_rhels_cmd.bundle" if($k =~ /rhLE/);
$batbundle="$xcatcoredir/xCAT-test/autotest/bundle/le_sles_cmd.bundle" if($k =~ /slesLE/);

View File

@ -25,17 +25,15 @@ AutoReqProv: no
# also need to fix Requires for AIX
%ifos linux
BuildArch: noarch
Requires: perl-IO-Socket-SSL perl-XML-Simple perl-XML-Parser perl-Digest-SHA1 perl(LWP::Protocol::https) perl-Net-HTTPS-NB perl-HTTP-Async
Requires: perl-IO-Socket-SSL perl-XML-Simple perl-XML-Parser perl-Digest-SHA1 perl(LWP::Protocol::https)
Obsoletes: atftp-xcat
%endif
# The aix rpm cmd forces us to do this outside of ifos type stmts
%if %notpcm
%ifos linux
# ifarch/ifnarch does not work for noarch package
#%ifnarch s390x
# PCM does not use or ship grub2-xcat
Requires: grub2-xcat
Requires: grub2-xcat perl-Net-HTTPS-NB perl-HTTP-Async
#%endif
%endif
%endif
@ -413,14 +411,15 @@ fi
ln -sf $RPM_INSTALL_PREFIX0/sbin/xcatd /usr/sbin/xcatd
if [ "$1" = "1" ]; then #Only if installing for the first time..
if [ -x /usr/lib/lsb/install_initd ]; then
/usr/lib/lsb/install_initd /etc/init.d/xcatd
elif [ -x /sbin/chkconfig ]; then
/sbin/chkconfig --add xcatd
else
echo "Unable to register init scripts on this system"
fi
if [ -x /sbin/chkconfig ]; then
/sbin/chkconfig --add xcatd
elif [ -x /usr/lib/lsb/install_initd ]; then
/usr/lib/lsb/install_initd /etc/init.d/xcatd
else
echo "Unable to register init scripts on this system"
fi
fi
if [ "$1" -gt "1" ]; then #only on upgrade...
#migration issue for monitoring
XCATROOT=$RPM_INSTALL_PREFIX0 $RPM_INSTALL_PREFIX0/sbin/chtab filename=monitorctrl.pm notification -d
@ -463,10 +462,11 @@ if [ $1 == 0 ]; then #This means only on -e
if [ -f "/proc/cmdline" ]; then # prevent running it during install into chroot image
/etc/init.d/xcatd stop
fi
if [ -x /usr/lib/lsb/remove_initd ]; then
if [ -x /sbin/chkconfig ]; then
/sbin/chkconfig --del xcatd
elif [ -x /usr/lib/lsb/remove_initd ]; then
/usr/lib/lsb/remove_initd /etc/init.d/xcatd
elif [ -x /sbin/chkconfig ]; then
/sbin/chkconfig --del xcatd
fi
rm -f /usr/sbin/xcatd #remove the symbolic

View File

@ -190,3 +190,5 @@ switchdiscover_range_r
switchdiscover_range_x
switchdiscover_range_z
switchdiscover_range_z_V
redhat_migration1
redhat_migration2

Some files were not shown because too many files have changed in this diff Show More