diff --git a/.github/workflows/releasebuild.yml b/.github/workflows/releasebuild.yml index 0521dfc9..6e25de75 100644 --- a/.github/workflows/releasebuild.yml +++ b/.github/workflows/releasebuild.yml @@ -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 - \ No newline at end of file diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 630afe47..fa6ff6cd 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -4,7 +4,7 @@ * Christian Goll @mslacken * Jeremy Siadal @jcsiadal * Niko Kivel @kivel -* Shannon V. Davidson +* Shannon V. Davidson * Brian Clemens @brianclemens * Michael L. Young @ajyounge * Ian Kaneshiro @ikaneshiro @@ -12,9 +12,9 @@ * MatthewHink @MatthewHink * WestleyR @WestleyK * Michael L. Young -* Yong Qin +* Yong Qin * Yoshiaki Senda -* Cooper, Trevor +* Cooper, Trevor * Masahiko Ohkubo * John Hanks @griznog * Rob Jansen diff --git a/README.md b/README.md index 44382003..53ab8058 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/etc/examples/prometheus.yml.ww b/etc/examples/prometheus.yml.ww index fb9995f0..021e532e 100644 --- a/etc/examples/prometheus.yml.ww +++ b/etc/examples/prometheus.yml.ww @@ -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 }} diff --git a/etc/examples/slurm.conf.ww b/etc/examples/slurm.conf.ww index f236b335..ddb65f5d 100644 --- a/etc/examples/slurm.conf.ww +++ b/etc/examples/slurm.conf.ww @@ -1,4 +1,4 @@ -# This file is autogenerated by warewulf +# This file is autogenerated by warewulf # Host: {{.BuildHost}} # Time: {{.BuildTime}} # Source: {{.BuildSource}} diff --git a/etc/examples/static-dhcpd.conf.ww b/etc/examples/static-dhcpd.conf.ww index a45815df..e3c2a63d 100644 --- a/etc/examples/static-dhcpd.conf.ww +++ b/etc/examples/static-dhcpd.conf.ww @@ -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}} diff --git a/internal/app/api/wwapic/README.md b/internal/app/api/wwapic/README.md index 2ea04b4c..80233ae6 100644 --- a/internal/app/api/wwapic/README.md +++ b/internal/app/api/wwapic/README.md @@ -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. \ No newline at end of file diff --git a/internal/app/api/wwapird/wwapird.go b/internal/app/api/wwapird/wwapird.go index d7984914..4af35e8b 100644 --- a/internal/app/api/wwapird/wwapird.go +++ b/internal/app/api/wwapird/wwapird.go @@ -109,4 +109,4 @@ func main() { if err := run(); err != nil { glog.Fatal(err) } -} \ No newline at end of file +} \ No newline at end of file diff --git a/internal/app/api/wwapird_curls/curls.sh b/internal/app/api/wwapird_curls/curls.sh index dcb2049c..a9f95d54 100644 --- a/internal/app/api/wwapird_curls/curls.sh +++ b/internal/app/api/wwapird_curls/curls.sh @@ -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 diff --git a/internal/app/wwctl/container/imprt/root.go b/internal/app/wwctl/container/imprt/root.go index 79a654b7..bd3a563b 100644 --- a/internal/app/wwctl/container/imprt/root.go +++ b/internal/app/wwctl/container/imprt/root.go @@ -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 diff --git a/internal/app/wwctl/container/show/root.go b/internal/app/wwctl/container/show/root.go index ddd5a9c0..24f2d7ca 100644 --- a/internal/app/wwctl/container/show/root.go +++ b/internal/app/wwctl/container/show/root.go @@ -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) { diff --git a/internal/app/wwctl/overlay/edit/main.go b/internal/app/wwctl/overlay/edit/main.go index 83a7d1a0..b093b461 100644 --- a/internal/app/wwctl/overlay/edit/main.go +++ b/internal/app/wwctl/overlay/edit/main.go @@ -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}} diff --git a/internal/pkg/api/routes/v1/routes.proto b/internal/pkg/api/routes/v1/routes.proto index bf350e09..6a51dc05 100644 --- a/internal/pkg/api/routes/v1/routes.proto +++ b/internal/pkg/api/routes/v1/routes.proto @@ -107,7 +107,7 @@ message NodeListResponse { // Request a node list message GetNodeList { enum ListType { - Simple = 0; + Simple = 0; Ipmi = 1; Network = 2; Long = 3; diff --git a/internal/pkg/help/help.go b/internal/pkg/help/help.go index 93726f76..1deda31b 100644 --- a/internal/pkg/help/help.go +++ b/internal/pkg/help/help.go @@ -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 diff --git a/overlays/host/etc/exports.ww b/overlays/host/etc/exports.ww index 33558262..75e280ef 100644 --- a/overlays/host/etc/exports.ww +++ b/overlays/host/etc/exports.ww @@ -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}} diff --git a/overlays/wwinit/etc/fstab.ww b/overlays/wwinit/etc/fstab.ww index d9b60f6e..58fc3767 100644 --- a/overlays/wwinit/etc/fstab.ww +++ b/overlays/wwinit/etc/fstab.ww @@ -1,4 +1,4 @@ -# This file is autogenerated by warewulf +# This file is autogenerated by warewulf # Host: {{.BuildHost}} # Time: {{.BuildTime}} # Source: {{.BuildSource}} diff --git a/overlays/wwinit/etc/sysconfig/network-scripts/ifcfg.ww b/overlays/wwinit/etc/sysconfig/network-scripts/ifcfg.ww index 22007f5f..5de10792 100644 --- a/overlays/wwinit/etc/sysconfig/network-scripts/ifcfg.ww +++ b/overlays/wwinit/etc/sysconfig/network-scripts/ifcfg.ww @@ -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 -}} diff --git a/overlays/wwinit/etc/systemd/network/10-persistent-net.link.ww b/overlays/wwinit/etc/systemd/network/10-persistent-net.link.ww index aea7b8b3..dd6dba1f 100644 --- a/overlays/wwinit/etc/systemd/network/10-persistent-net.link.ww +++ b/overlays/wwinit/etc/systemd/network/10-persistent-net.link.ww @@ -1,4 +1,4 @@ -# This file is autogenerated by warewulf +# This file is autogenerated by warewulf # Host: {{.BuildHost}} # Time: {{.BuildTime}} # Source: {{.BuildSource}} diff --git a/overlays/wwinit/etc/systemd/system/wwclient.service b/overlays/wwinit/etc/systemd/system/wwclient.service index 6957bf7d..388fd28d 100644 --- a/overlays/wwinit/etc/systemd/system/wwclient.service +++ b/overlays/wwinit/etc/systemd/system/wwclient.service @@ -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 diff --git a/overlays/wwinit/etc/udev/rules.d/70-ww4-netname.rules b/overlays/wwinit/etc/udev/rules.d/70-ww4-netname.rules index b15fac55..f93048a0 100644 --- a/overlays/wwinit/etc/udev/rules.d/70-ww4-netname.rules +++ b/overlays/wwinit/etc/udev/rules.d/70-ww4-netname.rules @@ -1,4 +1,4 @@ -# This file is autogenerated by warewulf +# This file is autogenerated by warewulf # Host: {{.BuildHost}} # Time: {{.BuildTime}} # Source: {{.BuildSource}} diff --git a/userdocs/contents/configuration.rst b/userdocs/contents/configuration.rst index 199cb288..2fc2f04d 100644 --- a/userdocs/contents/configuration.rst +++ b/userdocs/contents/configuration.rst @@ -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``) diff --git a/userdocs/contents/containers.rst b/userdocs/contents/containers.rst index 07b867ec..4b186545 100644 --- a/userdocs/contents/containers.rst +++ b/userdocs/contents/containers.rst @@ -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). diff --git a/userdocs/contents/installation.rst b/userdocs/contents/installation.rst index 8ebc54ec..985193ba 100644 --- a/userdocs/contents/installation.rst +++ b/userdocs/contents/installation.rst @@ -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 diff --git a/userdocs/contents/introduction.rst b/userdocs/contents/introduction.rst index 697fb74b..a1975527 100644 --- a/userdocs/contents/introduction.rst +++ b/userdocs/contents/introduction.rst @@ -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. \ No newline at end of file diff --git a/userdocs/contents/ipmi.rst b/userdocs/contents/ipmi.rst index 63959bcf..fe1a7a94 100644 --- a/userdocs/contents/ipmi.rst +++ b/userdocs/contents/ipmi.rst @@ -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 diff --git a/userdocs/contents/kernel.rst b/userdocs/contents/kernel.rst index edbd13de..0bde16e2 100644 --- a/userdocs/contents/kernel.rst +++ b/userdocs/contents/kernel.rst @@ -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. \ No newline at end of file diff --git a/userdocs/contents/nodeconfig.rst b/userdocs/contents/nodeconfig.rst index a80e7628..bd751dc2 100644 --- a/userdocs/contents/nodeconfig.rst +++ b/userdocs/contents/nodeconfig.rst @@ -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 diff --git a/userdocs/contents/profiles.rst b/userdocs/contents/profiles.rst index a2021b0b..2e9250d4 100644 --- a/userdocs/contents/profiles.rst +++ b/userdocs/contents/profiles.rst @@ -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 diff --git a/userdocs/contents/security.rst b/userdocs/contents/security.rst index 8bf0aa60..8f2c29b2 100644 --- a/userdocs/contents/security.rst +++ b/userdocs/contents/security.rst @@ -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 ======= diff --git a/userdocs/contributing/contributing.rst b/userdocs/contributing/contributing.rst index 132407ce..fa9c09ca 100644 --- a/userdocs/contributing/contributing.rst +++ b/userdocs/contributing/contributing.rst @@ -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 `_` are a way of -isolating your features from the main branch. Given that we’ve just cloned the +`Branches `_` are a way of +isolating your features from the main branch. Given that we’ve 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``: diff --git a/userdocs/contributing/development-environment-kvm.rst b/userdocs/contributing/development-environment-kvm.rst index 4d7dbf47..3c9111a5 100644 --- a/userdocs/contributing/development-environment-kvm.rst +++ b/userdocs/contributing/development-environment-kvm.rst @@ -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 diff --git a/userdocs/contributing/development-environment-vbox.rst b/userdocs/contributing/development-environment-vbox.rst index 0564c60a..f75fb756 100644 --- a/userdocs/contributing/development-environment-vbox.rst +++ b/userdocs/contributing/development-environment-vbox.rst @@ -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 diff --git a/userdocs/favicon.png b/userdocs/favicon.png index e67fff16..e48189eb 100644 Binary files a/userdocs/favicon.png and b/userdocs/favicon.png differ diff --git a/userdocs/logo.png b/userdocs/logo.png index f4f62649..c0bbaf78 100644 Binary files a/userdocs/logo.png and b/userdocs/logo.png differ diff --git a/userdocs/quickstart/el7.rst b/userdocs/quickstart/el7.rst index 80f6784e..cc70c5d2 100644 --- a/userdocs/quickstart/el7.rst +++ b/userdocs/quickstart/el7.rst @@ -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 diff --git a/userdocs/quickstart/el8.rst b/userdocs/quickstart/el8.rst index cff81602..7d6cf466 100644 --- a/userdocs/quickstart/el8.rst +++ b/userdocs/quickstart/el8.rst @@ -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 diff --git a/userdocs/quickstart/suse15.rst b/userdocs/quickstart/suse15.rst index ff623489..8f94db08 100644 --- a/userdocs/quickstart/suse15.rst +++ b/userdocs/quickstart/suse15.rst @@ -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`` diff --git a/warewulf-logo.png b/warewulf-logo.png index f5c8b44d..85671de2 100644 Binary files a/warewulf-logo.png and b/warewulf-logo.png differ