Update deployments/automation/FOG Project/Deploy FOG Project.md
All checks were successful
Automatic Documentation Deployment / Sync Docs to https://kb.bunny-lab.io (push) Successful in 6s
All checks were successful
Automatic Documentation Deployment / Sync Docs to https://kb.bunny-lab.io (push) Successful in 6s
This commit is contained in:
306
deployments/automation/FOG Project/Deploy FOG Project.md
Normal file
306
deployments/automation/FOG Project/Deploy FOG Project.md
Normal file
@@ -0,0 +1,306 @@
|
||||
## Purpose
|
||||
If you want to deploy the FOG Project software in your homelab environment to remotely image devices via PXE boot, follow the instructions below to get through the process.
|
||||
|
||||
!!! info "assumptions"
|
||||
It is assumed that you are deploying FOG Project in [Ubuntu Server 26.04](https://releases.ubuntu.com/26.04/ubuntu-26.04-live-server-amd64.iso) or newer. This documentation does not account for distro-specific issues in other operating systems.
|
||||
|
||||
It is also assumed that you allocate at least 4-cores and 8GB of RAM with at least 256GB of storage for the OS and FOG images.
|
||||
|
||||
!!! warning "Potential Netplan Misconfiguration"
|
||||
If the FOG server cannot resolve DNS names or reach external networks, verify that the Netplan configuration includes both:
|
||||
|
||||
- `nameservers` pointing to valid DNS servers
|
||||
- a default route pointing to the network gateway
|
||||
|
||||
Check the Netplan configuration:
|
||||
|
||||
```sh
|
||||
cd /etc/netplan
|
||||
ls
|
||||
sudo nano <netplan file>
|
||||
```
|
||||
|
||||
Ensure it looks similar to this:
|
||||
|
||||
```yaml
|
||||
network:
|
||||
version: 2
|
||||
ethernets:
|
||||
ens18:
|
||||
addresses:
|
||||
- 192.168.3.9/24
|
||||
routes:
|
||||
- to: default
|
||||
via: 192.168.3.1
|
||||
match:
|
||||
macaddress: bc:24:11:5c:eb:c9
|
||||
nameservers:
|
||||
addresses:
|
||||
- 192.168.3.25
|
||||
- 192.168.3.26
|
||||
search: []
|
||||
set-name: ens18
|
||||
```
|
||||
|
||||
Apply the configuration safely and temporarily with `sudo netplan try` and if connectivity still works, accept the changes permanently by running `sudo netplan apply`. Otherwise, Netplan will roll back the changes automatically.
|
||||
|
||||
### Update & Snapshot the GuestVM
|
||||
Before we take a checkpoint/snapshot and install FOG Project, we want to ensure that the GuestVM is fully updated. After the updates are complete, shutdown the GuestVM, take a snapshot, and boot it back up.
|
||||
|
||||
```sh
|
||||
sudo apt update -y && sudo apt upgrade -y && sudo apt autoremove
|
||||
sudo poweroff
|
||||
```
|
||||
|
||||
### Download FOG Project Tarball
|
||||
Download the most recent FOG Project tarball from the [official website](https://fogproject.org/download.php) then extract it.
|
||||
|
||||
```sh
|
||||
curl -L https://api.github.com/repos/FOGProject/fogproject/tarball/1.5.10.1826 -o FOGProject-fogproject-1.5.10.1826-0-g2309704.tar.gz
|
||||
tar -xzvf FOGProject-fogproject-1.5.10.1826-0-g2309704.tar.gz
|
||||
cd FOGProject-fogproject-2309704/bin
|
||||
sudo ./installfog.sh
|
||||
```
|
||||
|
||||
### Install FOG Project (External DHCP Server)
|
||||
The steps below will guide you on a high-level through the external DHCP-server based deployment of FOG Project. Steps will be different if you want FOG itself handing out DHCP addresses and DNS records itself, which I do not recommend.
|
||||
|
||||
#### Question Steps
|
||||
- What version of Linux would you like to run the installation for? > `2`
|
||||
- What type of installation would you like to do? > `N`
|
||||
- Would you like to change the default network interface from ens18? > `N`
|
||||
- Would you like to setup a router address for the DHCP server? > `N`
|
||||
- Would you like DHCP to handle DNS? > `N`
|
||||
- Would you like to use the FOG server for DHCP service? > `N`
|
||||
- This version of FOG has internationalization support, would you like to install the additional language packs? > `N`
|
||||
- Would you like to enable secure HTTPS on your FOG server? > `N`
|
||||
- Would you like to change the hostname? > `N`
|
||||
- Are you ok with sending this information? > `N`
|
||||
- Are you sure you wish to continue? > `Y`
|
||||
|
||||
!!! example "Summary Example"
|
||||
* Here are the settings FOG will use:
|
||||
* Base Linux: Debian
|
||||
* Detected Linux Distribution: Ubuntu
|
||||
* Interface: ens18
|
||||
* Server IP Address: 192.168.3.9
|
||||
* Server Subnet Mask: 255.255.255.0
|
||||
* Hostname: lab-fog-01
|
||||
* Installation Type: Normal Server
|
||||
* Internationalization: No
|
||||
* Image Storage Location: /images
|
||||
* Using FOG DHCP: No
|
||||
* DHCP will NOT be setup but you must setup your
|
||||
| current DHCP server to use FOG for PXE services.
|
||||
|
||||
* On a Linux DHCP server you must set: next-server and filename
|
||||
|
||||
* On a Windows DHCP server you must set options 066 and 067
|
||||
|
||||
* Option 066/next-server is the IP of the FOG Server: (e.g. 192.168.3.9)
|
||||
* Option 067/filename is the bootfile: (e.g. undionly.kkpxe or snponly.efi)
|
||||
* Send OS Name, OS Version, and FOG Version: No
|
||||
|
||||
### Database Schema Update/Install
|
||||
At this point, you will be prompted to login to the website hosted by FOG Project to setup the database, navigate to the URL provided. (e.g. http://192.168.3.9/fog/management)
|
||||
|
||||
- Click the "**Install/Update Now**" button
|
||||
- Be patient, there is no progress bar, but eventually it will state "Install / Update Successful!" and will provide a link to the FOG Project login screen.
|
||||
- Return to the SSH session and press **[ENTER]** to proceed with the setup.
|
||||
- After a minute or two, you will see a success dialog such as below, where you can now login to the FOG web portal to start using FOG Project
|
||||
|
||||
!!! success "Installation Complete"
|
||||
You can now login to the FOG Management Portal using the information listed below. The login information is only if this is the first install.
|
||||
This can be done by opening a web browser and going to:
|
||||
http://192.168.3.9/fog/management
|
||||
|
||||
Default User Information
|
||||
|
||||
- **Username**: fog
|
||||
- **Password**: password
|
||||
|
||||
**Changed configurations**:
|
||||
The FOG installer changed configuration files and created the
|
||||
following backup files from your original files:
|
||||
|
||||
- /etc/vsftpd.conf <=> /etc/vsftpd.conf.1777937213
|
||||
- /etc/exports <=> /etc/exports.1777937213
|
||||
|
||||
## Disorganized Next Steps (Under Construction)
|
||||
|
||||
After DHCP is correctly pointing clients to the FOG server (Options 66/67 or `next-server`/`filename`), the next phase is **PXE boot workflow + host registration and image management**—not user authentication at boot.
|
||||
|
||||
Short answer: **No, you do not need to create a PXE login user.** FOG does not use traditional authentication during PXE boot. Instead, it uses a **menu-driven iPXE environment** and **host registration + task assignment** from the web UI.
|
||||
|
||||
---
|
||||
|
||||
## What Actually Happens After DHCP is Set
|
||||
|
||||
Once DHCP is configured:
|
||||
|
||||
1. Client boots → gets IP + bootfile
|
||||
2. Loads **iPXE from FOG**
|
||||
3. Connects to FOG server
|
||||
4. Displays **FOG PXE menu**
|
||||
5. From there:
|
||||
|
||||
* Register host
|
||||
* Deploy image
|
||||
* Run tasks
|
||||
|
||||
---
|
||||
|
||||
## Recommended Next Sections for Your Document
|
||||
|
||||
You should continue with something like this:
|
||||
|
||||
---
|
||||
|
||||
### Validate PXE Boot
|
||||
|
||||
Before doing anything else, confirm PXE is working end-to-end.
|
||||
|
||||
* Boot a test machine on the same network
|
||||
* Ensure:
|
||||
|
||||
* It gets an IP from DHCP
|
||||
* It downloads `undionly.kpxe` (BIOS) or `snponly.efi` (UEFI)
|
||||
* It reaches the **FOG iPXE menu**
|
||||
|
||||
Expected result: You see a FOG menu (not a login prompt)
|
||||
|
||||
---
|
||||
|
||||
### Register a Host in FOG
|
||||
|
||||
FOG needs to know about devices before imaging.
|
||||
|
||||
#### Option 1: Register via PXE Menu (most common)
|
||||
|
||||
From the PXE menu:
|
||||
|
||||
* Select: **Perform Full Host Registration and Inventory**
|
||||
* Enter:
|
||||
|
||||
* Hostname
|
||||
* Optional description/location
|
||||
|
||||
This creates a host object in FOG.
|
||||
|
||||
#### Option 2: Pre-create in Web UI
|
||||
|
||||
* Go to: `FOG Management → Hosts → Create New Host`
|
||||
* Add:
|
||||
|
||||
* MAC address
|
||||
* Hostname
|
||||
|
||||
---
|
||||
|
||||
### Create and Capture an Image
|
||||
|
||||
Before deploying, you need an image stored in FOG.
|
||||
|
||||
#### Create Image Definition
|
||||
|
||||
* Navigate: `Images → Create New Image`
|
||||
* Set:
|
||||
|
||||
* Name
|
||||
* Image Type:
|
||||
|
||||
* `Single Disk - Resizable` (most common)
|
||||
* Storage group (default is fine)
|
||||
|
||||
---
|
||||
|
||||
#### Assign Image to Host
|
||||
|
||||
* Go to the host you registered
|
||||
* Set the **Image** field to your new image
|
||||
|
||||
---
|
||||
|
||||
#### Capture Image (Upload from a reference machine)
|
||||
|
||||
On your “golden image” machine:
|
||||
|
||||
1. Boot via PXE
|
||||
2. Register it (if not already)
|
||||
3. In Web UI:
|
||||
|
||||
* Select host
|
||||
* Click **Capture**
|
||||
4. Reboot machine → it uploads disk to FOG
|
||||
|
||||
---
|
||||
|
||||
### Deploy Image to a Host
|
||||
|
||||
Once an image exists:
|
||||
|
||||
1. Assign image to target host
|
||||
2. Schedule a **Deploy Task**
|
||||
3. Boot target machine via PXE
|
||||
|
||||
No login required — it will automatically start imaging if a task is assigned.
|
||||
|
||||
---
|
||||
|
||||
## Important Clarification (This Answers Your Question Directly)
|
||||
|
||||
> “Do we need to set up a user to login via PXE?”
|
||||
|
||||
**No.** FOG uses:
|
||||
|
||||
* MAC address identification
|
||||
* Task-based automation
|
||||
* Optional menu interaction
|
||||
|
||||
There is:
|
||||
|
||||
* ❌ No PXE login system by default
|
||||
* ❌ No per-user authentication during boot
|
||||
* ✅ Central control via the web UI
|
||||
|
||||
---
|
||||
|
||||
## Optional (Advanced Sections You Might Add Later)
|
||||
|
||||
If you want to make your doc more complete:
|
||||
|
||||
### Secure the Environment
|
||||
|
||||
* Change default credentials (`fog/password`)
|
||||
* Enable HTTPS (you skipped this earlier)
|
||||
* Restrict PXE boot via VLANs or DHCP policies
|
||||
|
||||
### UEFI vs BIOS Handling
|
||||
|
||||
* BIOS → `undionly.kpxe`
|
||||
* UEFI → `snponly.efi`
|
||||
|
||||
### Automating Deployments
|
||||
|
||||
* Auto-assign hosts
|
||||
* Use host groups
|
||||
* Schedule multicast deployments
|
||||
|
||||
### Storage Optimization
|
||||
|
||||
* Separate `/images` to a larger disk
|
||||
* NFS tuning
|
||||
|
||||
---
|
||||
|
||||
## Suggested Next Heading for Your Doc
|
||||
|
||||
```md
|
||||
### Validate PXE Boot and Access FOG Menu
|
||||
```
|
||||
|
||||
followed by:
|
||||
|
||||
```md
|
||||
### Register Hosts and Prepare Images
|
||||
```
|
||||
Reference in New Issue
Block a user