From 659d6528132d5a735fb32cb59487eba571424456 Mon Sep 17 00:00:00 2001 From: Brian Clemens Date: Fri, 15 Jan 2021 19:44:32 +0900 Subject: [PATCH] Move documentation --- README.md | 2 +- docs/Beowulf-Architecture.png | Bin 92809 -> 0 bytes docs/Contributing.md | 23 ------ docs/README.md | 22 ----- docs/architecture.md | 117 --------------------------- docs/introduction.md | 45 ----------- docs/rhel7-quickstart.md | 146 --------------------------------- docs/rhel8-quickstart.md | 147 ---------------------------------- docs/terms.md | 23 ------ 9 files changed, 1 insertion(+), 524 deletions(-) delete mode 100644 docs/Beowulf-Architecture.png delete mode 100644 docs/Contributing.md delete mode 100644 docs/README.md delete mode 100644 docs/architecture.md delete mode 100644 docs/introduction.md delete mode 100644 docs/rhel7-quickstart.md delete mode 100644 docs/rhel8-quickstart.md delete mode 100644 docs/terms.md diff --git a/README.md b/README.md index a070b086..98ba8a9b 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ #### Quick Links: -* [Documentation](docs/README.md) +* [Documentation](https://warewulf.readthedocs.io) * [GitHub](http://github.com/ctrliq/warewulf) ## About Warewulf diff --git a/docs/Beowulf-Architecture.png b/docs/Beowulf-Architecture.png deleted file mode 100644 index 8c75d9193c272d9ef70a2a73557561144c9aadbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92809 zcmeFYcQl+`_Xa%1h(X98B!rmgB0AA!2oj7EiQaqfz0X96lIUf05kjK(&P0glAxiY# zMS|$>uv-iICwf8>4RFobO6H*g`Kpr3r;M6ovBpxzaO(cRZ&c&m@M%0A(G#M+$(C)4Yumd=bq_V;Mp4lp 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%0As)`%;%acBU?LcLiM*^_lD9 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 ROG`^D*gw>-d4F8?e*ik>Dz5+l diff --git a/docs/Contributing.md b/docs/Contributing.md deleted file mode 100644 index 29bd092e..00000000 --- a/docs/Contributing.md +++ /dev/null @@ -1,23 +0,0 @@ -# Contributing - -Warewulf is an open source project and we invite your collaboration and help. - -## Contributor's Agreement -You are under no obligation whatsoever to provide any bug fixes, patches, or upgrades to the features, functionality -or performance of the source code ("Enhancements") to anyone; however, if you choose to make your Enhancements -available either publicly, or directly to the project, without imposing a separate written license agreement for such -Enhancements, then you hereby grant the following license: a non-exclusive, royalty-free perpetual license to -install, use, modify, prepare derivative works, incorporate into other computer software, distribute, and sublicense -such enhancements or derivative works thereof, in binary and source code form. - -## To Contribute -Here is the very high level guide to contributing: - -* For the project to a location of your choosing -* Clone your fork locally: `git clone http://github.com/$NAME/warewulf.git` -* Inside your fork, create a local branch: `cd warewulf; git checkout -b localchanges` -* Make the necessary changes and commit them: `git commit -a` -* Push your changes: `git push origin localchanges` -* Create a PR using GitHub: `https://github.com/$NAME/warewulf/pull/new/localchanges` - -*note: set your environment variable `NAME=github_username` before running the above commands.* diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index d011d1ee..00000000 --- a/docs/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Documentation for Warewulf - -The documentation for Warewulf is a work in progress and we are asking for contributions from the open source -community on this. Please see the [contributing](Contributing.md) document for how to help out this project. - -### Quickstarts - -* [RHEL-7 quickstart](rhel7-quickstart.md) -* [RHEL-8 quickstart](rhel8-quickstart.md) - -### Chapters -(all coming soon) - -* [Introduction](introduction.md) -* [Terms and Definitions](terms.md) -* [Architecture](architecture.md) -* [System Services and Dependencies](system_services.md) -* [Profiles](profiles.md) -* [Node Configurations](nodes.md) -* [Containers and VNFS images](containers.md) -* [Overlays](overlays.md) -* [SELinux](selinux.md) diff --git a/docs/architecture.md b/docs/architecture.md deleted file mode 100644 index 8462357e..00000000 --- a/docs/architecture.md +++ /dev/null @@ -1,117 +0,0 @@ -# Warewulf Cluster Architecture - -## System Architecture -Warewulf's primary design goal is to facilitate the typical architecture of an HPC style cluster. The roots of these -clusters originates from the foundational architecture that has influenced these architectures for the last 20-30 -years, commonly known as the "Beowulf". - -### The Beowulf -The original [Beowulf Cluster](https://en.wikipedia.org/wiki/Beowulf_cluster) was developed in 1996 by Dr. Thomas -Sterling and Dr. Donald Becker at Nasa. The architecture is defined as a group of similar compute worker nodes all -connected together using standard commodity equipment on a private network segment. The control node is dual homed -(has two network interface cards) with one of these network interface cards attached to the upstream network and the -other connected to the same private network which connects the compute worker nodes (as seen in the figure below). - -![Beowulf System Architecture](Beowulf-Architecture.png) - -This architecture is very advantageous for creating a scalable resource for HPC clustering but it is also only a -very simple portrayal of the base foundation. To this we must add storage, scheduling and resource management, -monitoring, interactive systems, and as the system grows, it maybe needed to have groups of nodes, that have -different features, architectures, vintages, memory configuration, GPUs, or interconnects. As the system grows, -the necessity for a scalable control surface also increases which can result in even more complexity. - -### Provisioning -Warewulf is designed to support not only the simplest of clusters, but also the most complicated, largest, and -specialized resources that are demanded today. But in all of these configurations, we go back to this standard -architecture illustrated above. This is because Warewulf is designed to "own" the network broadcast domain due to -how these worker nodes boot. - -As mentioned before, Warewulf is designed first and foremost to be a stateless provisioning subsystem. This means -that the worker nodes maintain no state about their configuration, operating system, or other when they are powered -off. The result of this is when these systems boot, they retain no knowledge on who they are, what they are supposed -to do, or how they got there. For these reasons, these systems will need to boot via -[PXE](https://en.wikipedia.org/wiki/Preboot_Execution_Environment). - -#### PXE -By Default, most servers will have network interface cards that support PXE. In a nutshell, PXE will allow the -network card to be seen by the BIOS as a bootable device. This means that the boot order may need to be configured -in the system's BIOS on the worker nodes to allow it to boot. If there is also another bootable device on these -systems, it might be necessary to set the network interface card to boot first. - -When the system boots via PXE, it will begin a chain reaction of events: - -1. The network card will register an option rom into the BIOS -1. The BIOS will run through all of its functions and finishes with boot devices -1. The boot devices are attempted to be booted in the defined order -1. When it gets to the network boot device, PXE is run from the firmware on the network card -1. PXE will request a Bootp/DHCP on the network -1. If the DHCP response includes a boot file name, it will download this file (iPXE boot image) over TFTP -1. Once iPXE is downloaded, it is loaded by the network card and it will request a configuration from the - server -1. The configuration will tell iPXE what to download and load - -Warewulf manages the entire process once the worker node's network device has begun the PXE process. - -#### Warewulf Server -Warewulf will configure and setup the controller's DHCP and TFTP services, as well as putting all the required -files into place but once the iPXE file has been sent and loaded on the nodes, all network communication from this -point on is being handled by the Warewulf server over HTTP. The order of events from this point on are as follows: - -1. iPXE requests it's configuration and Warewulf generates this on demand from the configured template -1. The default iPXE template tells iPXE to request a kernel, VNFS image, runtime kernel modules, and a system overlay -1. Each of the requested files will be "served" to the node - -#### Post PXE -Once the worker node has received all the required files, the kernel will be booted and the runtime components will be -loaded into the kernel's initial ram file system (initramfs). The order of this is very because each layer is -"layered" on top of the previous. The layers are implemented in the following order: - -1. VNFS/Container image -1. Kernel modules -1. System Overlay -1. Runtime Overlay (repeated at a given interval) - -As part of the provisioning process, the system boots after the System Overlay has been provisioned which means that -the Runtime Overlay occurs after `/sbin/init` has been called and the system. This delineation is important because -it clearly defines what should be in the system Vs. runtime overlay. More on overlays in the next section. - -Before calling `/sbin/init` (or `init` to override in the node configuration file), Warewulf must set up the system. -Again, this process occurs after the System Overlay has been provisioned. This is where the system initializes and -prepares for booting the runtime OS. Depending on the configuration, the system might boot directly in the initramfs -file system as it stands, or it could migrate the root file system to a different mount point (e.g. `tmpfs` or at -some point, hard drives). - -Other things that get done at this stage are setting up and enabling SELinux, IPMI, making any needed changes or -configurations to the file system before booting it, and starting up the `wwclient` which is responsible for loading -the runtime overlay. - -Lastly, the `init` process is executed with PID 1 and thus "boots" the VNFS container. This is where SysVInit, -Upstart, or Systemd takes over. - -#### Warewulf Overlays -As described above, Warewulf uses layers to provision. The first layer is static across any number of nodes, but -each node may require some custom configurations, for example, network. This means there must be a method for -leveraging a base file system which can be shared by many nodes and also be able to configure these file systems -with custom per-node options at a large scale. - -Typically, there are two major times this configuration needs to be done. Pre "boot" and post "boot". In this case, as -described above, we can consider the call to `/sbin/init` the delineation point and the proper way to consider the two -user configurable overlays: system and runtime. - -**System Overlay**: The system overlay is what will be present before `/sbin/init` is called. This gives the -administrator the ability to control the configuration of the booting system itself. For example, network -configuration is necessary to be configured on every node, but each node must have a different network configuration -otherwise the IP addresses will clash and this must be set before Systemd brings up the network device. The Warewulf -system overlay is the right place to configure this. - -**Runtime Overlays**: Some configurations happen after the system boots and continuously at periodic intervals. For -example user and group accounts. You probably don't want to reprovision a node to add a user or change a runtime -configuration, and this is where you will need to use the runtime overlay. - -Both overlays leverage a similar file system template structure. Each overlay (you can create any number of them) -can include text files, directories, links, and templates. Templates allow you to customize any of the content -within an overlay dynamically for each node that will be leveraging that template. - - - - diff --git a/docs/introduction.md b/docs/introduction.md deleted file mode 100644 index d8ba4a9c..00000000 --- a/docs/introduction.md +++ /dev/null @@ -1,45 +0,0 @@ -# Introduction -Warewulf is an operating system provisioning system for Linux. It was created in 2001 to facilitate and scale the -administration of HPC clusters in a way that allowed for simple, turn key solutions as well as support flexibility -and configurability at scale. - -Since its initial release, Warewulf has become the most popular open source and vendor-agnostic provisioning system -within the HPC ecosystem with worldwide adoption. Warewulf is known for its massive scalability and ease of use for -stateless (disk optional) provisioning. - -In a nutshell, node operating system images are containers. These containers are built into a bootable format called -a "Virtual Node File System" (VNFS) image which is provisioned out to nodes at boot. The VNFS and kernel can be -configured for any number of nodes which means you could have all of your nodes booting the exact same container -VNFS image. The subtle differences in operating system configurations between the nodes are handled in "overlays". - -On boot, each node receives, in the following order: - -1. iPXE boot image (tftp) -1. Linux kernel (http) -1. VNFS image (http) -1. Kernel module overlay (http) -1. System overlay (http) - -*note: once the node has booted, it will request a runtime overlay (privileged http) at a periodic interval.* - -All the images which are transferred for provisioning are prebuilt static components and the per node connection -processing is minimal. This means that Warewulf is as scalable as the physical infrastructure. - -### Warewulf Design Tenants -To enable simple, scalable, and flexible operating system management at scale. - -1. **Lightweight**: Warewulf needs to do it's job and stay out of the way. There should be no underlying system - dependencies, changes, or "stack" for the controller or worker nodes. - -1. **Simple**: Warewulf is used by hobbyists, researchers, scientists, as well as systems admnistrators and engineers. - This means that Warewulf must be simple to use and intuitive to understand. - -1. **Flexible**: Warewulf must remain highly flexible to be able to fit in any environment, from a computer lab with - graphical workstations, to an under-desk clusters, as well as massive centers providing traditional HPC - capabilities to thousands of users. - -1. **Agnostic**: From the underlying Linux distribution to the underlying hardware, Warewulf should be as agnostic - and standards compliant as possible. From ARM to X86, Atos to Dell, Warewulf can provision it all equally well - with no favorites. - -1. **Open Source**: It is imperative that Warewulf be and remain absolutely Open Source. diff --git a/docs/rhel7-quickstart.md b/docs/rhel7-quickstart.md deleted file mode 100644 index aaf02d5e..00000000 --- a/docs/rhel7-quickstart.md +++ /dev/null @@ -1,146 +0,0 @@ -## Quick Start for RHEL, CentOS, and Rocky Linux version 7 - -#### Install Warewulf and dependencies -``` -sudo yum install epel-release -sudo yum install golang tftp-server dhcp nfs-utils - -sudo systemctl stop firewalld -sudo systemctl disable firewalld - -git clone https://github.com/ctrliq/warewulf.git -cd warewulf -make all -sudo make install -``` - -#### Configure the controller: - -Edit the file `/etc/warewulf/warewulf.conf` and ensure that you've set the -appropriate configuration paramaters. Here are some of the defaults for reference: - -``` -ipaddr: 192.168.1.1 -netmask: 255.255.255.0 -warewulf: - port: 9873 - secure: true - update interval: 60 -dhcp: - enabled: true - range start: 192.168.1.150 - range end: 192.168.1.200 - template: default - systemd name: dhcpd -tftp: - enabled: true - tftproot: /var/lib/tftpboot - systemd name: tftp -nfs: - systemd name: nfs-server - exports: - - /home - - /var/warewulf -``` - -#### Configure system services 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: -This will pull a basic VNFS container from Docker Hub and import the default running -kernel from the controller node and set both in the "default" node profile. - -``` -sudo ./wwctl container pull docker://warewulf/centos-7 centos-7 --setdefault -sudo ./wwctl kernel build $(uname -r) --setdefault -``` - -#### Set up the default node profile - -The `--setdefault` arguments above will automatically set those entries in the default -profile, but if you wanted to set them by hand to something different, you can do the -following: - -``` -sudo ./wwctl profile set default -K $(uname -r) -C centos-7 -``` - -Next we set some default networking configurations for the first ethernet device. On -modern Linux distributions, the name of the device is not critical, as it will be setup -according to the HW address. Because all nodes will share the netmask and gateway -configuration, we can set them in the default profile as follows: - -``` -sudo ./wwctl profile set default --netdev eth0 -M 255.255.255.0 -G 192.168.1.1 -sudo ./wwctl profile list -``` - -#### Add a node and build node specific overlays - -Adding nodes can be done while setting configurations in one command. Here we are setting -the IP address of `eth0` and setting this node to be discoverable, which will then -automatically have the HW address added to the configuration as the node boots. - -Node names must be unique. If you have node groups and/or multiple clusters, designate -them using dot notation. - -Note that the full node configuration comes from both cascading profiles and node -configurations which always supersede profile configurations. - -``` -sudo ./wwctl node add n0000.cluster --netdev eth0 -I 192.168.1.100 --discoverable -sudo ./wwctl node list -a n0000 -``` - -### Warewulf Overlays - -There are two types of overlays: system and runtime overlays. - -System overlays are provisioned to the node before `/sbin/init` is called. This enables us -to prepopulate node configurations with content that is node specific like networking and -service configurations. - -Runtime overlays are provisioned after the node has booted and periodically during the -normal runtime of the node. Because these overlays are provisioned at periodic intervals, -they are very useful for content that changes, like users and groups. - -Overlays are generated from a template structure that is viewed using the `wwctl overlay` -commands. Files that end in the `.ww` suffix are templates and abide by standard -text/template rules. This supports loops, arrays, variables, and functions making overlays -extremely flexible. - -*note: When using the overlay subsystem, system overlays are never shown by default. So -when running `overlay` commands, you are always looking at runtime overlays unless the -`-s` option is passed.* - -All overlays are compiled before being provisioned. This accelerates the provisioning -process because there is less to do when nodes are being managed at scale. - -Here are some of the common `overlay` commands: - -``` -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: - -Once the above provisioning images are built, you can check the provisioning "rediness" -and then begin booting nodes. - -``` -sudo ./wwctl ready -sudo ./wwctl server start -sudo ./wwctl server status -``` - -#### Boot your compute node and watch it boot diff --git a/docs/rhel8-quickstart.md b/docs/rhel8-quickstart.md deleted file mode 100644 index 1b255256..00000000 --- a/docs/rhel8-quickstart.md +++ /dev/null @@ -1,147 +0,0 @@ -## Quick Start for RHEL, CentOS, and Rocky Linux version 8 - -#### Install Warewulf and dependencies -``` -sudo yum groupinstall "Development Tools" -sudo yum install epel-release -sudo yum install golang tftp-server dhcp-server nfs-utils - -sudo systemctl stop firewalld -sudo systemctl disable firewalld - -git clone https://github.com/ctrliq/warewulf.git -cd warewulf -make all -sudo make install -``` - -#### Configure the controller: - -Edit the file `/etc/warewulf/warewulf.conf` and ensure that you've set the -appropriate configuration paramaters. Here are some of the defaults for reference: - -``` -ipaddr: 192.168.1.1 -netmask: 255.255.255.0 -warewulf: - port: 9873 - secure: true - update interval: 60 -dhcp: - enabled: true - range start: 192.168.1.150 - range end: 192.168.1.200 - template: default - systemd name: dhcpd -tftp: - enabled: true - tftproot: /var/lib/tftpboot - systemd name: tftp -nfs: - systemd name: nfs-server - exports: - - /home - - /var/warewulf -``` - -#### Configure system services 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: -This will pull a basic VNFS container from Docker Hub and import the default running -kernel from the controller node and set both in the "default" node profile. - -``` -sudo ./wwctl container pull docker://warewulf/centos-8 centos-8 --setdefault -sudo ./wwctl kernel build $(uname -r) --setdefault -``` - -#### Set up the default node profile - -The `--setdefault` arguments above will automatically set those entries in the default -profile, but if you wanted to set them by hand to something different, you can do the -following: - -``` -sudo ./wwctl profile set default -K $(uname -r) -C centos-7 -``` - -Next we set some default networking configurations for the first ethernet device. On -modern Linux distributions, the name of the device is not critical, as it will be setup -according to the HW address. Because all nodes will share the netmask and gateway -configuration, we can set them in the default profile as follows: - -``` -sudo ./wwctl profile set default --netdev eth0 -M 255.255.255.0 -G 192.168.1.1 -sudo ./wwctl profile list -``` - -#### Add a node and build node specific overlays - -Adding nodes can be done while setting configurations in one command. Here we are setting -the IP address of `eth0` and setting this node to be discoverable, which will then -automatically have the HW address added to the configuration as the node boots. - -Node names must be unique. If you have node groups and/or multiple clusters, designate -them using dot notation. - -Note that the full node configuration comes from both cascading profiles and node -configurations which always supersede profile configurations. - -``` -sudo ./wwctl node add n0000.cluster --netdev eth0 -I 192.168.1.100 --discoverable -sudo ./wwctl node list -a n0000 -``` - -### Warewulf Overlays - -There are two types of overlays: system and runtime overlays. - -System overlays are provisioned to the node before `/sbin/init` is called. This enables us -to prepopulate node configurations with content that is node specific like networking and -service configurations. - -Runtime overlays are provisioned after the node has booted and periodically during the -normal runtime of the node. Because these overlays are provisioned at periodic intervals, -they are very useful for content that changes, like users and groups. - -Overlays are generated from a template structure that is viewed using the `wwctl overlay` -commands. Files that end in the `.ww` suffix are templates and abide by standard -text/template rules. This supports loops, arrays, variables, and functions making overlays -extremely flexible. - -*note: When using the overlay subsystem, system overlays are never shown by default. So -when running `overlay` commands, you are always looking at runtime overlays unless the -`-s` option is passed.* - -All overlays are compiled before being provisioned. This accelerates the provisioning -process because there is less to do when nodes are being managed at scale. - -Here are some of the common `overlay` commands: - -``` -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: - -Once the above provisioning images are built, you can check the provisioning "rediness" -and then begin booting nodes. - -``` -sudo ./wwctl ready -sudo ./wwctl server start -sudo ./wwctl server status -``` - -#### Boot your compute node and watch it boot diff --git a/docs/terms.md b/docs/terms.md deleted file mode 100644 index 1fbcb2d5..00000000 --- a/docs/terms.md +++ /dev/null @@ -1,23 +0,0 @@ -# Terms and Definitions - -### Controller -The controller node(s) are the resources responsible for management, control, and administration of the cluster. -Historically these systems have been called "master", "head", or "administrative" nodes, but we feel the term -"controller" is more appropriate and descriptive of the role of this system. - -### Workers -Worker nodes are the systems that are being provisioned by Warewulf. The roles of these systems could be "compute", -"storage", "GPU", "IO", etc. which would typically be used as a prefix, for example: "**compute worker node**" - -### Container -Containers are used by Warewulf as the template for the VNFS image. Warewulf containers can be any type of OCI or -Singularity standard image formats but maintained on disk as an "OCI bundle". Warewulf integrates with Docker, -Docker Hub, any OCI registery, Singularity, standard chroots, etc. - -### Virtual Node File System (VNFS) - -### Overlays - -### Kernel - -### Initramfs \ No newline at end of file