mirror of
https://github.com/davestephens/ansible-nas
synced 2024-12-27 03:53:06 +00:00
7e3eb3362a
and link to the testing page.
89 lines
4.8 KiB
Markdown
89 lines
4.8 KiB
Markdown
Ansible-NAS currently assumes you know your way around a server. This page is an
|
|
overview for absolute NAS beginners so they can decide if it is right for them.
|
|
|
|
## The big picture
|
|
|
|
To start off _really_ simple: A NAS ([Network Attached
|
|
Storage](https://en.wikipedia.org/wiki/Network-attached_storage)) is a server
|
|
mostly for home or other small networks that offers file storage. It's usually a
|
|
small box that sits in the corner and runs 24/7. These days, a NAS doesn't just
|
|
only handle files, but also offers other services, for instance video streaming
|
|
with [Plex](https://www.plex.tv/) or [Emby](https://emby.media/index.html). You
|
|
can buy consumer NAS boxes from [various
|
|
manufacturers](https://en.wikipedia.org/wiki/List_of_NAS_manufacturers) where
|
|
you just have to add the hard drives, or you can configure your own hardware and
|
|
use open-source software as the operating system.
|
|
|
|
One example of the second variant you'll see mentioned here is
|
|
[FreeNAS](https://freenas.org/). It is based on
|
|
[FreeBSD](https://www.freebsd.org/), which like Linux belongs to the family of
|
|
Unix-like operating systems. One strength of FreeBSD/FreeNAS is that it
|
|
includes the powerful ZFS file system
|
|
([OpenZFS](http://www.open-zfs.org/wiki/Main_Page), to be exact). However, it
|
|
does not support the [Docker](https://www.docker.com/) containers the way Linux
|
|
does. Also, the Linux ecosystem is larger. On the other hand, very few Linux
|
|
distributions include ZFS out of the box because of licensing issues.
|
|
|
|
Ansible-NAS in its default form attempts to have the best of both worlds by
|
|
using Docker on Linux with ZFS. This is possible because the
|
|
[Ubuntu](https://www.ubuntu.com/server) Linux distribution supports both
|
|
technologies. As the name says, Ansible-NAS uses
|
|
[Ansible](https://www.ansible.com/) server automation which is usually deployed
|
|
on big multi-machine enterprise systems, not small home servers the size of a
|
|
breadbox.
|
|
|
|
## Before you take the plunge
|
|
|
|
The commercial NAS vendors try to make setting up and running a NAS as simple
|
|
and painless as possible - for a fee, obviously. The open-source NAS software
|
|
providers have lots of resources to help you get started with your own hardware.
|
|
FreeNAS for instance comes with extensive documentation, good introductions to
|
|
ZFS and other topics, and a large community to lean on.
|
|
|
|
With Ansible-NAS, at this point at least, you're pretty much on your own. Though
|
|
there is a [Gitter](https://gitter.im/Ansible-NAS/Chat) chat room (see
|
|
[support](support.md)), you're expected to have some familiarity with the
|
|
technologies involved and be able to set up the basic stuff yourself.
|
|
|
|
As a to-do list, before you can even install Ansible-NAS, you'll have to:
|
|
|
|
1. Choose, buy, configure, and test your own **hardware**. If you're paranoid (a
|
|
good mindset when dealing with servers), you'll probably want an
|
|
uninterruptible power supply (UPS) of some sort as well as SMART monitoring
|
|
for your hard drives. See the [FreeNAS hardware
|
|
requirements](https://freenas.org/hardware-requirements/) as a guideline, but
|
|
remember you'll also be running Docker. If you use ZFS (see below), take into
|
|
account it [loves RAM](zfs/zfs_overview.md) and prefers to have the hard
|
|
drives all to itself.
|
|
|
|
1. Install **Ubuntu Server**, currently 20.04 LTS, and keep it updated. You'll
|
|
probably want to perform other basic setup tasks like hardening SSH and
|
|
including email notifications. There are [various
|
|
guides](https://devanswers.co/ubuntu-20-04-initial-server-setup/) for this,
|
|
but if you're just getting started, you'll probably need a book.
|
|
|
|
You will probably want to install a specialized filesystem for bulk storage such
|
|
as [ZFS](http://www.open-zfs.org/wiki/Main_Page) or
|
|
[Btrfs](https://btrfs.wiki.kernel.org/index.php/Main_Page). Both offer features
|
|
such as snapshots, checksumming and scrubbing to protect your data against
|
|
bitrot, ransomware and other nasties. Ansible-NAS historically prefers **ZFS**
|
|
because this lets you swap storage pools with
|
|
[FreeNAS](https://freenas.org/zfs/). A [brief introduction](zfs/zfs_overview.md)
|
|
to ZFS is included in the Ansible-NAS documentation, as well as [an
|
|
example](zfs/zfs_configuration.md) of a very simple ZFS setup.
|
|
|
|
After that, you can continue with the actual [installation](installation.md) of
|
|
Ansible-NAS.
|
|
|
|
## How to experiment
|
|
|
|
The easiest way to take Ansible-NAS for a spin is in a virtual machine, for
|
|
instance in [VirtualBox](https://www.virtualbox.org/) or
|
|
[libvirt](https://libvirt.org). You'll want to create three virtual hard drives
|
|
for testing: one of the actual NAS, and the two others to create a mirrored ZFS
|
|
pool. This will let you experiment with installing, configuring, and running a
|
|
complete system.
|
|
|
|
A [Vagrant](https://vagrantup.com) _Vagrantfile_ and launch script are also
|
|
available (`tests/test-vagrant.sh`), see the [testing](testing.md) page for more
|
|
details.
|