# Preparation

> Prepare resources for a serious deployment
---

**Hardware**


        Nodes, specs, disks, network, VIP, domain ...



**Linux OS**


        List of supported Linux OS distributions



**Software**


        Locale, Firewall, Ansible, Pigsty...



**Admin**


        User, Sudo, SSH, Accessibility...






--------

You can leverage IaC tools such as [**Terraform**](/docs/prepare/terraform) and [**Vagrant**](/docs/prepare/vagrant) to help you prepare the environment and do the chore.


**Ansible**


        Ansible 101, basic knowledge for pigsty users



**Sandbox**


        The four-node sandbox for learning & testing



**Vagrant**


        Provision local virtual machine with vagrant



**Terraform**


        Provision cloud servers with terraform





--------

Here's a checklist to help you prepare the environment for a serious Pigsty deployment in production environment.

|               Item                | Requirement                                         |                       Item                       | Requirement                                                 |
|:---------------------------------:|:----------------------------------------------------|:------------------------------------------------:|:------------------------------------------------------------|
|  [Node](/docs/prepare/hardware#node)   | `1C1G` at least, `2C2G` recommended, no upper limit |          [Spec](/docs/prepare/hardware#spec)          | `1` node at least, `2` for semi-HA, `3+` for real HA        |
|  [Disk](/docs/prepare/hardware#disk)   | `/data`, main mount point, `ext4` or `xfs`          |       [Network](/docs/prepare/hardware#network)       | static intranet, IPv4 address, nice to have Internet access |
|   [VIP](/docs/prepare/hardware#vip)    | Reserve an L2 IP for VIP (**OPTIONAL**)             |        [Domain](/docs/prepare/hardware#domain)        | Use local / public domain names (**OPTIONAL**)              |
| [Kernel](/docs/prepare/software#linux) | `Linux`, MacOS can be used as admin controller      |             [Distro](/docs/prepare/linux)             | EL (8/9), Debian (12), Ubuntu (22/24), `x86_64` / `aarch64` |
| [Locale](/docs/prepare/software#linux) | `C.UTF-8` or `C`                                    |      [Firewall](/docs/prepare/software#firewall)      | port: `80` / `443` / `22` / `5432`                          |
|    [User](/docs/prepare/admin#user)    | avoid using `root` & `postgres`                     |      [Sudo](/docs/prepare/admin#sudo-privileges)      | `nopass` sudo privilege                                     |
|     [SSH](/docs/prepare/admin#ssh)     | `nopass` via public key                             | [Accessible](/docs/prepare/admin#check-accessibility) | `ssh <ip\|alias> sudo ls` works                             |

---

Section pages:

- [Hardware](/docs/prepare/hardware/): Nodes, specs, disks, network, VIP, domain ...
- [Linux OS](/docs/prepare/linux/): List of compatible linux OS Distributions
- [Software](/docs/prepare/software/): Locale, Firewall, Ansible, Pigsty...
- [Admin](/docs/prepare/admin/): User, Locale, Sudo, SSH, accessibility...
- [Sandbox](/docs/prepare/sandbox/): The 4-node env for learning & testing
- [Vagrant](/docs/prepare/vagrant/): Provision local VM with vagrant
- [Terraform](/docs/prepare/terraform/): Provision cloud VM with terraform
