Awesome
This repository has been archived!
This IPFS-related repository has been archived, and all issues are therefore frozen. If you want to ask a question or open/continue a discussion related to this repo, please visit the official IPFS forums.
We archive repos for one or more of the following reasons:
- Code or content is unmaintained, and therefore might be broken
- Content is outdated, and therefore may mislead readers
- Code or content evolved into something else and/or has lived on in a different place
- The repository or project is not active in general
Please note that in order to keep the primary IPFS GitHub org tidy, most archived repos are moved into the ipfs-inactive org.
If you feel this repo should not be archived (or portions of it should be moved to a non-archived repo), please reach out and let us know. Archiving can always be reversed if needed.
Astral Boot
Simon Kirkby tigger@interthingy.com 20150304
This repository has been moved to gb format https://getgb.io/ , it’s cool.
Description
Astralboot is a golang server that provides network services to boot virtual and metal machines from pxe boot. The following services are provided
- DHCP , for ip allocation and boot information
- TFTP , simple file transfer
- HTTP , for serving images and configs
It can pull its data files out of ipfs, which means that they are downloaded on request and then stored locally.
Local file serving also works with local file system folders ( see INSTRUCTIONS for details )
Required for development
- golang dev environment
- running ipfs node
- a network under your control.
Warning
As this server has a naive dhcp server it can be dangerous to run in an office environment. Running this server can interfere with normal network services.
Installation
assumes a working golang environment.
git clone github.com/zignig/astralboot
cd astralboot
gb build
also the ipfs service, which is currently in alpha , is available from https://github.com/ipfs/go-ipfs
will need to be installed and running
Setup
Testing so far has been done on a virtual machine with two network interfaces, one on a home network and the other an isolated VM network.
This machine will probably need to have masquerading setup , this is not needed for astral boot , but is for the machines to access the internet.
enable forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
make it stick
edit /etc/sysctl.conf and change net.ipv4.ip_forward = 1
change the firewall
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
The test machines to be bootstrapped have one network interface attached to isolated VM network.
The default hashes for booting are included in the git repository , put them into place by running.
cp refs.toml.dist refs.toml
It is worth noting that this will need to be run as root , dhcp, tftp and http not running on the machine
Now you are good to go, run the astralboot binary
- If the config.toml file does not exists it will ask some questions to set up
- It will grab some files from ipfs ( or local file system )and load up the various operating system files.
- On the first run it will populate the leases.db file with empty ip addresses.
- All the services will start and it will be ready to serve.
Verbosity can be changed by adding -v , -vv and -vvv to the command line.
Now comes the fun bit ....
Running the server
Create a virtual machine that is connected to the isolated network that astralboot is serving on and configure it to PXE boot.
The boot sequence should happen in this order
- The new virtual server should ask for an ip address.
- Astral boot serves an address with extra information pointing back to the astral bootserver.
- A undionly.kpxe image is served to the machine.
- it asks again for an ip address ( it will get the same address ).
- A menu to select the operating system is presented on the boot line.
- Select the OS of you choice ( coreos , or debian at this point ).
- It will boot the server.
Debian will be fairly quick , coreos will take some time as the .gz file is 165 Mb , so it will take some time to download
To precache the files into ipfs, run ipfs refs -r HashFromConfigFile and it will download everything
Changing the Services
As the server boots it will show an implied config , this shows possible entries to the config file to change.
Developing boot services, To develop modified boot services it is possible to serve the files from disk rather than ifps Downloading the files can be done with the following ipfs commands
In the astralboot folder :
ipfs get -o=data “hash from the refs.toml file”
If the config has IPFS = false the local file system will be used.
Development
all comments, patches and pull requests welcome
TODO
- Better templating of preseed
- Add more operating systems
- More stuff