Merge pull request #587 from anderbubble/whitespace-cleanup

Whitespace cleanup
This commit is contained in:
Christian Goll
2022-12-09 09:48:28 +01:00
committed by GitHub
39 changed files with 142 additions and 143 deletions

View File

@@ -49,7 +49,7 @@ jobs:
name: Build using Rocky Linux
needs: distbuild
runs-on: ubuntu-latest
container:
container:
image: rockylinux/rockylinux
options: --privileged
steps:
@@ -91,7 +91,7 @@ jobs:
with:
name: warewulf-${{ env.VERSION }}-${{ env.RELEASE }}.suse.lp153.x86_64.rpm
path: warewulf-${{ env.VERSION }}-${{ env.RELEASE }}.suse.lp153.x86_64.rpm
- name: Upload Assets To Release
if: "!github.event.release.prerelease"
uses: xresloader/upload-to-github-release@v1
@@ -114,4 +114,3 @@ jobs:
update_latest_release: false
prerelease: true
tags: true

View File

@@ -5,22 +5,22 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
- Changed internal interacation between the on disk YAML format and the in memory
### Added
- Changed internal interacation between the on disk YAML format and the in memory
format. This enables the command line options to be autogenerated from the datastructures.
Also this keeps the options for profiles and node set/add commands in strict sync.
- Added `node edit/export/import` where the edit command exposes the YAML config for the
given nodes in an editor. Nodes can also be added with this command. The export command
given nodes in an editor. Nodes can also be added with this command. The export command
simply drops the YAML config for the given nodes. With the import command nodes can be
imported as YAML or as a CSV file. The CSV file must havr a header in where the first field
must always be the nodename, the rest of the fields are the same as the long commandline
options. Network device must have the form net.$NETNAME.$NETOPTION, which would e.g. be
options. Network device must have the form net.$NETNAME.$NETOPTION, which would e.g. be
net.default.ipaddr
- The default value (like kernel args) are no read in from the configuration file
- The default value (like kernel args) are no read in from the configuration file
default.conf. If this file couldn't be read built in default values will be used.
- Template files for NetworkManager are now present in the wwinit overlay. A interface must
have the type ethernet or infiniband that these will be brought up by NetworkManager
- Listings of container via `wwctl container list` will now show the creation,modification
- Listings of container via `wwctl container list` will now show the creation,modification
date and the size.
- Initial cut of the warewulf API. See https://github.com/hpcng/warewulf/pull/471
@@ -37,24 +37,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
files like prometheus.yml.ww or slurm.conf.ww which depend on the cluster nodes can be
placed. Also the new templated functions {{ abort }}, {{ IncludeBlock }} abd {{ no_backup }}
are allowed now.
- nodes and profiles can now have multiple system and runtime overlays, as a comma separated list.
The overlays of the profile and the nodes are combined.
- nodes and profiles can now have multiple system and runtime overlays, as a comma separated list.
The overlays of the profile and the nodes are combined.
- simple ipv6 support is now enabled. In `warewulf.conf` the option `ipaddr6`/`Ipv6net` must
be set to enable ipv6. If enabled on of these options is set a node will get a derived
ipv6 in the scheme `ipv6net:ipaddr4`. This address can also be overwritten for every
ipv6 in the scheme `ipv6net:ipaddr4`. This address can also be overwritten for every
node
- Multiple files can now created from a single `template.ww` file with the `{{ file FILENAME }}`
command in the template. The command is expanded to the magic template command
- Multiple files can now created from a single `template.ww` file with the `{{ file FILENAME }}`
command in the template. The command is expanded to the magic template command
`{{ /* file FILENAME */}}` which is picked up by wwctl and everything which comes after this
magic comment will be written to the file `FILENAME`. This mechanism is leveraged in the
magic comment will be written to the file `FILENAME`. This mechanism is leveraged in the
configuration files for the network, see `ifcfg.xml.ww` and `ifcgf.ww`.
- Networks can now have arbitrary keys value pairs in the profiles and on the node, so that
- Networks can now have arbitrary keys value pairs in the profiles and on the node, so that
things like bridges and mtu sizes can be set
- oci container tar balls can be imported with the 'file://$PATH' scheme
- uids and gids of a container can now get synced at import time, so that at least users with the
same name have the same uid. This is not necessarily needed for warewulf, but services like
munge.
### Changed
### Changed
- Provision interface is not tied to 'eth0' any more. The provision interface must be have the
'primary' flag now. The file `nodes.conf' must be changed accordingly.
- the provisioning network is now called primary and not default

View File

@@ -4,7 +4,7 @@
* Christian Goll <cgoll@suse.de> @mslacken
* Jeremy Siadal <jeremy.c.siadal@intel.com> @jcsiadal
* Niko Kivel <niko.kivel@psi.ch> @kivel
* Shannon V. Davidson <svdavidson@charter.net>
* Shannon V. Davidson <svdavidson@charter.net>
* Brian Clemens <brian@ctrliq.com> @brianclemens
* Michael L. Young <myoung@ciq.co> @ajyounge
* Ian Kaneshiro <iankane@umich.edu> @ikaneshiro
@@ -12,9 +12,9 @@
* MatthewHink <matthew_hink@yahoo.com> @MatthewHink
* WestleyR <westleyr@nym.hush.com> @WestleyK
* Michael L. Young <elgueromexicano@gmail.com>
* Yong Qin <yongq@nvidia.com>
* Yong Qin <yongq@nvidia.com>
* Yoshiaki Senda <yoshiaki@live.it>
* Cooper, Trevor <tcooper@sdsc.edu>
* Cooper, Trevor <tcooper@sdsc.edu>
* Masahiko Ohkubo <masahiko.ohkubo+github@gmail.com>
* John Hanks <griznog@gmail.com> @griznog
* Rob Jansen <jansen@cs.umn.edu>

View File

@@ -28,21 +28,21 @@ should) be leveraged as part of Warewulf. Additionally, some of the lessons lear
should be rolled into an updated architecture for provisioning management.
### Warewulf v4
Leveraging this legacy of provisioning and cluster management brings us to where we are today. The next generation
of Warewulf. Warewulf v4 is a complete rewrite in GoLang, taking in the legacy of what we've come to expect with
Leveraging this legacy of provisioning and cluster management brings us to where we are today. The next generation
of Warewulf. Warewulf v4 is a complete rewrite in GoLang, taking in the legacy of what we've come to expect with
Warewulf, bringing it into the present, and looking out into the future.
Warewulf v4 combines ultra scalability, flexibility, and simplicity with being light weight, non-intrusive, and a
great tool for scientists and seasoned system administrators alike. Warewulf empowers you to scalably and easily manage
Warewulf v4 combines ultra scalability, flexibility, and simplicity with being light weight, non-intrusive, and a
great tool for scientists and seasoned system administrators alike. Warewulf empowers you to scalably and easily manage
thousands of compute resources.
### Architecture
One of the design tenants of Warewulf is how to scalably administrate many thousands of compute nodes. Generally
speaking, operating system state introduce a surface for potential discrepancies and version creep between nodes and
thus Warewulf has always gone with the "single system image" approach to clustered operating system management.
One of the design tenants of Warewulf is how to scalably administrate many thousands of compute nodes. Generally
speaking, operating system state introduce a surface for potential discrepancies and version creep between nodes and
thus Warewulf has always gone with the "single system image" approach to clustered operating system management.
This means that you can have a single management node "image". For the last 20 years, we've been calling this a
Virtual Node File System (VNFS), but in hindsight, this is a container.
At its core, Warewulf v4 focuses on what has made Warewulf so widely loved: simplicity, ultra scalable, lightweight,
and an easy to manage solution built for both scientists and seasons system administrators to be able to design a
and an easy to manage solution built for both scientists and seasons system administrators to be able to design a
highly functional yet easy to maintain cluster no matter how big or small or customized it needs to be.

View File

@@ -1,4 +1,4 @@
# This file is autogenerated by warewulf
# This file is autogenerated by warewulf
# Host: {{.BuildHost}}
# Time: {{.BuildTime}}
# Source: {{.BuildSource}}
@@ -41,6 +41,6 @@ scrape_configs:
static_configs:
{{- range $node := $.AllNodes}}
- targets: ['{{ $node.Id.Get }}:9100']
labels:
labels:
instance: '{{ $node.Id.Get }}'
{{- end }}

View File

@@ -1,4 +1,4 @@
# This file is autogenerated by warewulf
# This file is autogenerated by warewulf
# Host: {{.BuildHost}}
# Time: {{.BuildTime}}
# Source: {{.BuildSource}}

View File

@@ -1,5 +1,5 @@
{{- if .Dhcp.Enabled }}
# This file is autogenerated by warewulf
# This file is autogenerated by warewulf
# Host: {{.BuildHost}}
# Time: {{.BuildTime}}
# Source: {{.BuildSource}}

View File

@@ -1,4 +1,4 @@
# wwapiclient is intended as and example grpc wwapid client.
Run wwapid to start the server
Run wwapid to start the server
```./wwapic``` will get the version.
This works with or without mTLS.

View File

@@ -109,4 +109,4 @@ func main() {
if err := run(); err != nil {
glog.Fatal(err)
}
}
}

View File

@@ -33,9 +33,9 @@ curl http://localhost:9871/v1/node?nodeNames=testnode1 # this works! case sensit
curl http://localhost:9871/v1/node?nodeNames=testnode%5B1-2%5D
# node add single discoverable node
curl -d '{"nodeNames": ["testApiNode0"], "discoverable": true}' -H "Content-Type: application/json" -X POST http://localhost:9871/v1/node
curl -d '{"nodeNames": ["testApiNode0"], "discoverable": true}' -H "Content-Type: application/json" -X POST http://localhost:9871/v1/node
curl -d '{"nodeNames": ["testApiNode1"], "discoverable": true}' -H "Content-Type: application/json" -X POST http://localhost:9871/v1/node
curl -d '{"nodeNames": ["testApiNode1"], "discoverable": true}' -H "Content-Type: application/json" -X POST http://localhost:9871/v1/node
# list the node we just added
@@ -45,7 +45,7 @@ curl http://localhost:9871/v1/node?nodeNames=testApiNode0
curl -d '{"nodeNames": ["testApiNode0"], "ipmiIpAddr": "10.0.8.220", "updateMask": "ipmiIpAddr,nodeNames"}' -H "Content-Type: application/json" -X PATCH http://localhost:9871/v1/node
# Node set with post:
curl -d '{"nodeNames": ["testApiNode0"], "ipmiIpaddr": "6.7.8.9"}' -H "Content-Type: application/json" -X POST http://localhost:9871/v1/nodeset
curl -d '{"nodeNames": ["testApiNode0"], "ipmiIpaddr": "6.7.8.9"}' -H "Content-Type: application/json" -X POST http://localhost:9871/v1/nodeset
# node status
curl http://localhost:9871/v1/nodestatus

View File

@@ -8,7 +8,7 @@ var (
Use: "import [OPTIONS] SOURCE [NAME]",
Short: "Import a container into Warewulf",
Long: `This command will pull and import a container into Warewulf from SOURCE,
optionally renaming it to NAME. The SOURCE must be in a supported URI format. Formats
optionally renaming it to NAME. The SOURCE must be in a supported URI format. Formats
are:
* docker://registry.example.org/example:latest
* docker-daemon://example:latest

View File

@@ -10,7 +10,7 @@ var (
DisableFlagsInUseLine: true,
Use: "show [OPTIONS] CONTAINER",
Short: "Show root fs dir for container",
Long: `Shows the base directory for the chroot of the given container.
Long: `Shows the base directory for the chroot of the given container.
More information about the conainer can be shown with the '-a' option.`,
RunE: CobraRunE,
ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {

View File

@@ -70,7 +70,7 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
#
# Goto the documentation pages for more information: http://www.hpcng.org/...
# Keep the following for better reference
# This file is autogenerated by warewulf
# This file is autogenerated by warewulf
# Host: {{.BuildHost}}
# Time: {{.BuildTime}}
# Source: {{.BuildSource}}

View File

@@ -107,7 +107,7 @@ message NodeListResponse {
// Request a node list
message GetNodeList {
enum ListType {
Simple = 0;
Simple = 0;
Ipmi = 1;
Network = 2;
Long = 3;

View File

@@ -24,7 +24,7 @@ Additional help topics:{{range .Commands}}{{if .IsAdditionalHelpTopicCommand}}
{{rpad .CommandPath .CommandPathPadding}} {{.Short}}{{end}}{{end}}
{{end}}{{if .HasAvailableSubCommands}}
Use "{{.CommandPath}} COMMAND --help" for more information about a COMMAND.
{{end}}
{{end}}
`
// End UsageTemplate

View File

@@ -1,5 +1,5 @@
{{- if .Nfs.Enabled }}
# This file is autogenerated by warewulf
# This file is autogenerated by warewulf
# Host: {{.BuildHost}}
# Time: {{.BuildTime}}
# Source: {{.BuildSource}}

View File

@@ -1,4 +1,4 @@
# This file is autogenerated by warewulf
# This file is autogenerated by warewulf
# Host: {{.BuildHost}}
# Time: {{.BuildTime}}
# Source: {{.BuildSource}}

View File

@@ -30,6 +30,6 @@ IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
{{ if $netdev.Ipaddr6 -}}
IPV6ADDR="{{ $netdev.Ipaddr6 }}"
IPV6ADDR="{{ $netdev.Ipaddr6 }}"
{{ end -}}
{{ end -}}

View File

@@ -1,4 +1,4 @@
# This file is autogenerated by warewulf
# This file is autogenerated by warewulf
# Host: {{.BuildHost}}
# Time: {{.BuildTime}}
# Source: {{.BuildSource}}

View File

@@ -9,6 +9,6 @@ ExecStart=/warewulf/wwclient
ExecReload=/bin/kill -s SIGHUP "$MAINPID"
PIDFile=/var/run/wwclient.pid
TimeoutSec=60
[Install]
WantedBy=multi-user.target

View File

@@ -1,4 +1,4 @@
# This file is autogenerated by warewulf
# This file is autogenerated by warewulf
# Host: {{.BuildHost}}
# Time: {{.BuildTime}}
# Source: {{.BuildSource}}

View File

@@ -94,15 +94,15 @@ explained as follows:
* ``warewulf:update interval``: This defines the frequency (in seconds)
with which the Warewulf client on the compute node fetches overlay
updates.
* ``warewulf:autobuild overlays``: This determines whether per-node
overlays will automatically be rebuilt, e.g., when an underlying
overlay is changed.
* ``warewulf:host overlay``: This determines whether the special ``host``
overlay is applied to the Warewulf server during configuration. (The
host overlay is used to configure the dependent services.)
* ``warewulf:syslog``: This determines whether Warewulf server logs go
to syslog or are written directly to a log file. (e.g.,
``/var/log/warewulfd.log``)

View File

@@ -26,8 +26,8 @@ Here is an example of importing from Docker Hub.
$ sudo wwctl container import docker://warewulf/rocky rocky-8
Getting image source signatures
Copying blob d7f16ed6f451 done
Copying config da2ca70704 done
Copying blob d7f16ed6f451 done
Copying config da2ca70704 done
Writing manifest to image destination
Storing signatures
[LOG] info unpack layer: sha256:d7f16ed6f45129c7f4adb3773412def4ba2bf9902de42e86e77379a65d90a984
@@ -73,8 +73,8 @@ Once the container has been imported, you can list them all with the following c
.. code-block:: bash
$ sudo wwctl container list
CONTAINER NAME BUILT NODES
rocky-8 true 0
CONTAINER NAME BUILT NODES
rocky-8 true 0
Once a container has been imported and showing up in this list you can configure it to boot compute nodes.
@@ -97,7 +97,7 @@ You can also ``--bind`` directories from your host into the container when using
.. code-block:: bash
$ sudo wwctl container exec --bind /tmp:/mnt rocky-8 /bin/sh
[rocky-8] Warewulf>
[rocky-8] Warewulf>
.. note::
As with any mount command, both the source and the target must exist. This is why the example uses the ``/mnt/`` directory location, as it is almost always present and empty in every Linux distribution (as prescribed by the LSB file hierarchy standard).

View File

@@ -12,7 +12,7 @@ While the Warewulf project does not build binary RPMs, you can obtain them from
This is the easiest method to install Warewulf and can be done as follows:
.. code-block:: bash
sudo yum install -y https://repo.ctrliq.com/rhel/8/ciq-release.rpm
sudo yum install -y warewulf

View File

@@ -24,13 +24,13 @@ Features
========
* **Lightweight**: Warewulf provisions stateless operating system images and then gets out of the way. There should be no underlying system dependencies or changes to the provisioned cluster node operating systems.
* **Simple**: Warewulf is used by hobbyists, researchers, scientists, engineers and systems administrators because it is easy, lightweight, and simple.
* **Flexible**: Warewulf is highly flexible and can address the needs of any environment-- from a computer lab with graphical workstations, to under-the-desk clusters, to massive supercomputing centers providing traditional HPC capabilities to thousands of users.
* **Agnostic**: From the Linux distribution of choice to the underlying hardware, Warewulf is agnostic and standards compliant. From ARM to x86, Atos to Dell, Debian, SuSE, Rocky, CentOS, and RHEL, Warewulf can do it all.
* **Secure**: Warewulf is the only stateless provisioning system that will support SELinux out of the box. Just enable your node operating system container to support SELinux, and Warewulf do the rest!
* **Open Source**: For the last 20 years, Warewulf has remained open source and continues to be the golden standard for cluster provisioning.

View File

@@ -16,13 +16,13 @@ Here is a table outlining the fields on a Profile and Node level, along with the
============= =============== ======== ======= ================== =============
Field Parameter Profile Node Valid Values Default Value
============= =============== ======== ======= ================== =============
IpmiIpaddr --ipmi X
IpmiNetmask --ipminetmask X X
IpmiPort --ipmiport X X 623
IpmiGateway --ipmigateway X X
IpmiUserName --ipmiuser X X
IpmiPassword --ipmipass X X
IpmiInterface --ipmiinterface X X 'lan' or 'lanplus' lan
IpmiIpaddr --ipmi X
IpmiNetmask --ipminetmask X X
IpmiPort --ipmiport X X 623
IpmiGateway --ipmigateway X X
IpmiUserName --ipmiuser X X
IpmiPassword --ipmipass X X
IpmiInterface --ipmiinterface X X 'lan' or 'lanplus' lan
============= =============== ======== ======= ================== =============
Reviewing Settings
@@ -36,7 +36,7 @@ Profile View
.. code-block:: bash
$ sudo wwctl profile list -a
################################################################################
PROFILE NAME FIELD VALUE
default Id default
@@ -68,10 +68,10 @@ Node View
.. code-block:: bash
$ sudo wwctl node list node0001 -a
################################################################################
NODE FIELD PROFILE VALUE
node0001 Id -- node0001
node0001 Id -- node0001
node0001 Comment default This profile is automatically included for each node
node0001 Cluster -- --
node0001 Profiles -- default
@@ -105,7 +105,7 @@ The above views show you everything that is set on a Profile or Node level. That
.. code-block:: bash
$ sudo wwctl node list -i
NODE NAME IPMI IPADDR IPMI PORT IPMI USERNAME IPMI PASSWORD IPMI INTERFACE
============================================================================================================
node0001 192.168.99.10 -- admin supersecret lanplus

View File

@@ -15,7 +15,7 @@ You can see what kernel is included in a container by using the ``wwctl containe
$ sudo wwctl container list
CONTAINER NAME NODES KERNEL VERSION
alpine 0
alpine 0
rocky 0 4.18.0-348.12.2.el8_5.x86_64
rocky_updated 1 4.18.0-348.23.1.el8_5.x86_64
@@ -37,7 +37,7 @@ In this case you will also need to import a kernel specifically into Warewulf fo
$ sudo wwctl kernel import $(uname -r)
4.18.0-305.3.1.el8_4.x86_64: Done
This process will import not only the kernel image itself, but also all of the kernel modules and firmware associated to this kernel.
This process will import not only the kernel image itself, but also all of the kernel modules and firmware associated to this kernel.
Listing All Imported Kernels
----------------------------
@@ -47,7 +47,7 @@ Once the kernel has been imported, you can list them all with the following comm
.. code-block:: bash
$ sudo wwctl kernel list
VNFS NAME NODES
VNFS NAME NODES
4.18.0-305.3.1.el8_4.x86_64 0
Once a kernel has been imported and showing up in this list you can configure it to boot compute nodes.

View File

@@ -127,7 +127,7 @@ specified as an override at the node or profile.
$ sudo wwctl node set --kerneloverride $(uname -r) n0000
Are you sure you want to modify 1 nodes(s): y
$ sudo wwctl node list -a n0000 | grep KernelOverride
n0000 KernelOverride -- 4.18.0-305.3.1.el8_4.x86_64

View File

@@ -76,7 +76,7 @@ Now that we've created a new profile, let's create a configuration attribute in
$ sudo wwctl profile set --cluster cluster01 test_profile
? Are you sure you want to modify 1 profile(s)? [y/N] y█
$ sudo wwctl profile list -a test_profile | grep Cluster
test_profile Cluster cluster01
@@ -105,10 +105,10 @@ Cascading Profiles
In the previous example, we set a single node to have two profile configurations. We can also overwrite configurations as follows:
.. code-block:: bash
$ sudo wwctl profile set --comment "test comment" test_profile
Are you sure you want to modify 1 profile(s): y
$ sudo wwctl node list -a | head -n 6
################################################################################
NODE FIELD PROFILE VALUE
@@ -123,7 +123,7 @@ And if we delete the superseded profile attribute from ``test_profile`` we can n
$ sudo wwctl profile set --comment UNDEF test_profile
Are you sure you want to modify 1 profile(s): y
$ sudo wwctl node list -a | head -n 6
################################################################################
NODE FIELD PROFILE VALUE
@@ -143,7 +143,7 @@ All profile configurations can be overwritten by a node configuration as can be
$ sudo wwctl node set --comment "This value takes precedent" n0000
Are you sure you want to modify 1 nodes(s): y
$ sudo wwctl node list -a | head -n 6
################################################################################
NODE FIELD PROFILE VALUE

View File

@@ -28,7 +28,7 @@ In Warewulf there are two ways to secure the provisioning process:
#. The provisioning connections and transfers are not secure due to not being able to manage a secure root of trust through a PXE process. The best way to secure the provisioning process is to enact a vLAN used specifically for provisioning. Warewulf supports this but you must consult your switch documentation and features to implement a default vLAN for provisioning and ensure that the runtime operating system is configured for a different tagged vLAN once booted.
#. Warewulf will leverage hardware "asset tags" which almost all vendors support. It is a configurable string that is configured in firmware and accessible only via root or physical access. During provisioning (as well as post provisioning via ``wwclient``) Warewulf, can use the asset tag as a secure token. If you have setup your hardware with an asset tag, you simply need to tell Warewulf what that asset tag is. When the asset tag is defined in Warewulf (``wwctl node set --assetkey "..."``), it will only provision and communicate with requests from that system matching that asset tag.
#. Warewulf will leverage hardware "asset tags" which almost all vendors support. It is a configurable string that is configured in firmware and accessible only via root or physical access. During provisioning (as well as post provisioning via ``wwclient``) Warewulf, can use the asset tag as a secure token. If you have setup your hardware with an asset tag, you simply need to tell Warewulf what that asset tag is. When the asset tag is defined in Warewulf (``wwctl node set --assetkey "..."``), it will only provision and communicate with requests from that system matching that asset tag.
Summary
=======

View File

@@ -40,8 +40,8 @@ To contribute to Warewulf, you should obtain a GitHub account and fork the `Ware
Step 2. Checkout a new branch
-----------------------------
`Branches <https://guides.github.com/introduction/flow>`_` are a way of
isolating your features from the main branch. Given that weve just cloned the
`Branches <https://guides.github.com/introduction/flow>`_` are a way of
isolating your features from the main branch. Given that weve just cloned the
repo, we will probably want to make a new branch from master in which to work on
our new feature. Lets call that branch ``new-feature``:

View File

@@ -9,12 +9,12 @@ Create CentOS 7 development virtual machine under KVM
# KVM is running on server called master1 which is not my desktop
ssh -X master1
# On master1 server
wget -P /global/downloads/centos http://mirror.mobap.edu/centos/7.8.2003/isos/x86_64/CentOS-7-x86_64-Everything-2003.iso
qemu-img create -o preallocation=metadata -f qcow2 /global/images/centos-7.qcow2 32G
# install wwdev Centos 7 development VM
sudo virt-install --virt-type kvm --name centos7-wwdev --ram 8192 \
--disk /global/images/centos-7.qcow2,format=qcow2 \
@@ -22,22 +22,22 @@ Create CentOS 7 development virtual machine under KVM
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=rhel7.0 \
--location=/global/downloads/centos/CentOS-7-x86_64-Everything-2003.iso
# Complete installation using virt-manager
# To start virt-manager on non-local server
ssh -X master1
sudo -E virt-manager
# Login to VM and install @development group and go language
ssh root@wwdev
# Disable selinux by modifying /etc/sysconfig/selinux
vi /etc/sysconfig/selinux
SELINUX=disabled
# disable firewall
systemctl stop firewalld
systemctl disable firewalld
@@ -49,11 +49,11 @@ Turn off default network dhcp on server master1
# shutdown all VMs
sudo virsh net-destroy default
sudo virsh net-edit default
# remove dhcp lines from XML
sudo virsh net-start default
Build and install warewulf on wwdev
@@ -62,7 +62,7 @@ Build and install warewulf on wwdev
.. code-block:: bash
ssh wwdev
# Fedora prerequisites
sudo dnf -y install tftp-server tftp
sudo dnf -y install dhcp
@@ -72,7 +72,7 @@ Build and install warewulf on wwdev
sudo dnf install libassuan.x86_64 libassuan-devel.x86_64
sudo dnf golang
sudo dnf nfs-utils
# Centos prerequisites
sudo yum -y install tftp-server tftp
sudo yum -y install dhcp
@@ -82,44 +82,44 @@ Build and install warewulf on wwdev
sudo yum install gpgme-devel
sudo yum install libassuan.x86_64 libassuan-devel.x86_64
sudo yum install https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm
sudo yum install golang
sudo yum install golang
sudo yum install nfs-utils
# Install Warewulf and dependencies
git clone https://github.com/hpcng/warewulf.git
cd warewulf
make all
sudo make install
# Configure the controller
Edit the file /etc/warewulf/warewulf.conf and ensure that you've ser the approprite configuration parameters
# Configure system service automatically
sudo wwctl configure dhcp # Create the default dhcpd.conf file and start/enable service
sudo wwctl configure tftp # Install the base tftp/PXE boot files and start/enable service
sudo wwctl configure nfs # Configure the exports and create an fstab in the default system overlay
sudo wwctl configure ssh # Build the basic ssh keys to be included by the default system overlay
# Pull and build the VNFS container and kernel
sudo wwctl container import docker://warewulf/centos-8 centos-8 --setdefault
sudo wwctl kernel import build $(uname -r) --setdefault
# Set up the default node profile
sudo wwctl profile set default -K $(uname -r) -C centos-7
sudo wwctl profile set default --netdev eth0 -M WW_server_subnet_mask -G WW_server_ip
sudo wwctl profile list
# Add a node and build node specific overlays
sudo wwctl node add n0000.cluster --netdev eth0 -I n0000_ip --discoverable
sudo wwctl node list -a n0000
# Review Warewulf overlays
sudo wwctl overlay list -l
sudo wwctl overlay list -ls
sudo wwctl overlay edit default /etc/hello_world.ww
sudo wwctl overlay build -a
# Start the Warewulf daemon
sudo wwctl ready
sudo wwctl server start

View File

@@ -10,41 +10,41 @@ I have VirtualBox running on my desktop.
.. code-block:: console
# On the host with VirtualBox execute below. In my example using 10.0.8.0/24 as the private vlan for my experiment with Warewulf
VBoxManage natnetwork add --netname wwnatnetwork --network "10.0.8.0/24" --enable --dhcp off
2. Create a Centos 7 development Virtual machine (wwdev) to be used as the Warewulf Server. Enable two Network adapters one with a standard NAT and SSH port mapping such that you can access this VM from the host machine. Assign the second network adapter to the NAT Network created in step #1. Assign sufficient memory (e.g: 4GB) to the VM.
2. Create a Centos 7 development Virtual machine (wwdev) to be used as the Warewulf Server. Enable two Network adapters one with a standard NAT and SSH port mapping such that you can access this VM from the host machine. Assign the second network adapter to the NAT Network created in step #1. Assign sufficient memory (e.g: 4GB) to the VM.
.. code-block:: console
# Download a Centos7 or SL7 ISO and mount it to the optical drive to boot and install OS for the wwdev VM.
# Attach Network adapter #1 of the wwdev VM to the standard NAT via VM Settings -> Network option.
# Attach Network adapter #1 of the wwdev VM to the standard NAT via VM Settings -> Network option.
# By default VirtualBox puts the Network Adapter into 10.0.2.0/24 network and assigns 10.0.2.15 IP address.
# Also add a rule to the port forwarding table under the standard NAT configuration to allow SSH
# from localhost (127.0.0.1) some high port e.g 2222 to the guest IP 10.0.2.15 port 22 such that
# you can SSH from your host/desktop to the wwdev VM.
# Next attach the second Network adapter #2 to the NAT Network and you should be able to choose
# Also add a rule to the port forwarding table under the standard NAT configuration to allow SSH
# from localhost (127.0.0.1) some high port e.g 2222 to the guest IP 10.0.2.15 port 22 such that
# you can SSH from your host/desktop to the wwdev VM.
# Next attach the second Network adapter #2 to the NAT Network and you should be able to choose
# the 'wwnatnetwork' created above in step #1 from the drop down list.
3. Build and install warewulf on wwdev
.. code-block:: console
# Login to wwdev VM and install @development group and go language
ssh localhost -p 2222 #(should prompt for a user account password on wwdev VM)
# Disable selinux by modifying /etc/sysconfig/selinux
vi /etc/sysconfig/selinux
SELINUX=disabled
# Disable firewall
systemctl stop firewalld
systemctl disable firewalld
# Centos prerequisites
sudo yum -y install tftp-server tftp
sudo yum -y install dhcp
@@ -53,20 +53,20 @@ I have VirtualBox running on my desktop.
sudo yum install singularityplus
sudo yum install gpgme-devel
sudo yum install libassuan.x86_64 libassuan-devel.x86_64
# Upgrade git to v2+
sudo yum install https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm
sudo yum install git
sudo yum install golang
sudo yum install nfs-utils
# Install Warewulf and dependencies
git clone https://github.com/hpcng/warewulf.git
cd warewulf
make all
sudo make install
# Static assign an IP to adapter #2 which is in the wwnatnetwork.
$ Edit the file /etc/sysconfig/networking-scripts/ifcfg-enp0s9 # adapter name at the end might be different for you
# Add lines like to below to assign an ip in 10.0.8.0/24 wwnatnetwork, I choose 10.0.8.4
@@ -78,9 +78,9 @@ I have VirtualBox running on my desktop.
NETMASK=255.255.255.0
GATEWAY=10.0.8.1
# Bring the enp0s9 interface online and verify ip assignment
# Configure the Warewulf controller
$ Edit the file /etc/warewulf/warewulf.conf and ensure that you've set the approprite configuration parameters.
$ Edit the file /etc/warewulf/warewulf.conf and ensure that you've set the approprite configuration parameters.
# My conf file looks like below:
ipaddr: 10.0.8.4
netmask: 255.255.255.0
@@ -103,39 +103,39 @@ I have VirtualBox running on my desktop.
exports:
- /home
- /var/warewulf
# Configure system service automatically
sudo wwctl configure dhcp --persist # Create the default dhcpd.conf file and start/enable service
sudo wwctl configure tftp --persist # Install the base tftp/PXE boot files and start/enable service
sudo wwctl configure nfs --persist # Configure the exports and create an fstab in the default system overlay
sudo wwctl configure ssh --persist # Build the basic ssh keys to be included by the default system overlay
# Pull and build the VNFS container and kernel
sudo wwctl container import docker://warewulf/centos-7 centos-7 --setdefault
sudo wwctl kernel import build $(uname -r) --setdefault
# Set up the default node profile
sudo wwctl profile set default -K $(uname -r) -C centos-7
sudo wwctl profile set default --netdev eth0 -M 255.255.255.0 -G 10.0.8.4
sudo wwctl profile list
# Add a node and build node specific overlays
# IP address of my nodes start from 150 as set in the warewulf.conf file above
sudo wwctl node add n0000.cluster --netdev eth0 -I 10.0.8.150 --discoverable
sudo wwctl node list -a n0000
# Review Warewulf overlays
sudo wwctl overlay list -l
sudo wwctl overlay list -ls
sudo wwctl overlay edit default /etc/hello_world.ww
sudo wwctl overlay build -a
# Start the Warewulf daemon
sudo wwctl ready
sudo wwctl server start
sudo wwctl server status
4. Create a new guest VM instance inside the VirtualBox to be the warewulf client/compute node. Under the system configuration make sure to select the optical and network options only for the boot order. The default iPXE used by VirtualBox does not come with bzImage capability which is needed for warewulf. Download the ipxe.iso available at ipxe.org and mount the ipxe.iso to the optical drive. Enable one Network adapter for this VM and assign it to the NAT Network created in step #1 above.
4. Create a new guest VM instance inside the VirtualBox to be the warewulf client/compute node. Under the system configuration make sure to select the optical and network options only for the boot order. The default iPXE used by VirtualBox does not come with bzImage capability which is needed for warewulf. Download the ipxe.iso available at ipxe.org and mount the ipxe.iso to the optical drive. Enable one Network adapter for this VM and assign it to the NAT Network created in step #1 above.
.. code-block:: console

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 49 KiB

View File

@@ -8,7 +8,7 @@ Install Warewulf and dependencies
.. code-block:: bash
sudo yum install -y golang tftp-server dhcp nfs-utils
git clone https://github.com/hpcng/warewulf.git
cd warewulf
make all

View File

@@ -125,7 +125,7 @@ Once those configurations have been set, you can view the changes by listing the
sudo wwctl profile list -a
Add a node
Add a node
==========
Adding nodes can be done while setting configurations in one command. Here we are setting

View File

@@ -10,17 +10,17 @@ Install Warewulf and dependencies
sudo zypper install -t pattern devel_basis
sudo zypper install go
sudo zypper install tftp dhcp-server nfs-kernel-server
sudo systemctl stop firewalld
sudo systemctl disable firewalld
git clone https://github.com/hpcng/warewulf.git
cd warewulf
PREFIX=/usr SYSCONFDIR=/etc TFTPDIR=/srv/tftproot LOCALSTATEDIR=/var/lib make genconfig
make all
sudo make install
The standard configuration template for the dhcpd service is installed at the wrong location, you have to fix this with
The standard configuration template for the dhcpd service is installed at the wrong location, you have to fix this with
.. code-block:: bash
@@ -29,7 +29,7 @@ The standard configuration template for the dhcpd service is installed at the wr
Install Warewulf from the open build service
============================================
You can also just install the 'warewulf4' package with ``zypper`` from the openbuild service. Up to date versions are available on the devel project
You can also just install the 'warewulf4' package with ``zypper`` from the openbuild service. Up to date versions are available on the devel project
``https://build.opensuse.org/project/show/network:cluster``

Binary file not shown.

Before

Width:  |  Height:  |  Size: 932 KiB

After

Width:  |  Height:  |  Size: 932 KiB