Here is how the config directory looks like now
```
configs/X.X.X.X/
|-- ipsec
| |-- apple
| | |-- desktop.mobileconfig
| | |-- laptop.mobileconfig
| | `-- phone.mobileconfig
| |-- manual
| | |-- cacert.pem
| | |-- desktop.p12
| | |-- desktop.ssh.pem
| | |-- ipsec_desktop.conf
| | |-- ipsec_desktop.secrets
| | |-- ipsec_laptop.conf
| | |-- ipsec_laptop.secrets
| | |-- ipsec_phone.conf
| | |-- ipsec_phone.secrets
| | |-- laptop.p12
| | |-- laptop.ssh.pem
| | |-- phone.p12
| | `-- phone.ssh.pem
| `-- windows
| |-- desktop.ps1
| |-- laptop.ps1
| `-- phone.ps1
|-- ssh-tunnel
| |-- desktop.pem
| |-- desktop.pub
| |-- laptop.pem
| |-- laptop.pub
| |-- phone.pem
| |-- phone.pub
| `-- ssh_config
`-- wireguard
|-- desktop.conf
|-- desktop.png
|-- laptop.conf
|-- laptop.png
|-- phone.conf
`-- phone.png
```

## Motivation and Context
This refactoring is focused to aim to the 1.0 release
## How Has This Been Tested?
Deployed to several cloud providers with various options enabled and disabled
## Types of changes
- [x] Refactoring
## Checklist:
- [x] I have read the **CONTRIBUTING** document.
- [x] My code follows the code style of this project.
- [x] My change requires a change to the documentation.
- [x] I have updated the documentation accordingly.
- [x] All new and existing tests passed.
---
README.md | 8 +-
config.cfg | 18 ++-
input.yml | 71 +++++-----
playbooks/cloud-post.yml | 2 +-
playbooks/win_script_rebuild.yml | 67 ---------
roles/client/tasks/main.yml | 6 +-
roles/common/handlers/main.yml | 6 +
roles/common/tasks/freebsd.yml | 13 +-
roles/{vpn => common}/tasks/iptables.yml | 0
roles/common/tasks/ubuntu.yml | 35 ++---
roles/{vpn => common}/templates/rules.v4.j2 | 31 ++--
roles/{vpn => common}/templates/rules.v6.j2 | 24 ++--
roles/ssh_tunneling/defaults/main.yml | 2 +
roles/ssh_tunneling/tasks/main.yml | 134 +++++++++++-------
roles/ssh_tunneling/templates/known_hosts.j2 | 3 -
roles/{vpn => strongswan}/defaults/main.yml | 32 ++---
roles/{vpn => strongswan}/handlers/main.yml | 6 -
roles/{vpn => strongswan}/meta/main.yml | 0
.../tasks/client_configs.yml | 17 +--
roles/strongswan/tasks/distribute_keys.yml | 27 ++++
.../tasks/ipsec_configuration.yml | 8 +-
roles/{vpn => strongswan}/tasks/main.yml | 6 -
roles/{vpn => strongswan}/tasks/openssl.yml | 59 ++++----
roles/{vpn => strongswan}/tasks/ubuntu.yml | 3 -
.../templates/100-CustomLimitations.conf.j2 | 0
.../templates/client_ipsec.conf.j2 | 0
.../templates/client_ipsec.secrets.j2 | 0
.../templates/client_windows.ps1.j2 | 0
.../templates/ipsec.conf.j2 | 2 +-
.../templates/ipsec.secrets.j2 | 0
.../templates/mobileconfig.j2 | 0
.../templates/openssl.cnf.j2 | 0
.../templates/strongswan.conf.j2 | 0
roles/vpn/tasks/distribute_keys.yml | 27 ----
roles/wireguard/defaults/main.yml | 28 +++-
roles/wireguard/tasks/keys.yml | 6 +-
roles/wireguard/tasks/main.yml | 6 +-
roles/wireguard/templates/client.conf.j2 | 4 +-
roles/wireguard/templates/server.conf.j2 | 6 +-
server.yml | 21 +--
tests/update-users.sh | 32 ++++-
users.yml | 15 +-
42 files changed, 360 insertions(+), 365 deletions(-)
delete mode 100644 playbooks/win_script_rebuild.yml
rename roles/{vpn => common}/tasks/iptables.yml (100%)
rename roles/{vpn => common}/templates/rules.v4.j2 (69%)
rename roles/{vpn => common}/templates/rules.v6.j2 (77%)
create mode 100644 roles/ssh_tunneling/defaults/main.yml
delete mode 100644 roles/ssh_tunneling/templates/known_hosts.j2
rename roles/{vpn => strongswan}/defaults/main.yml (51%)
rename roles/{vpn => strongswan}/handlers/main.yml (63%)
rename roles/{vpn => strongswan}/meta/main.yml (100%)
rename roles/{vpn => strongswan}/tasks/client_configs.yml (65%)
create mode 100644 roles/strongswan/tasks/distribute_keys.yml
rename roles/{vpn => strongswan}/tasks/ipsec_configuration.yml (87%)
rename roles/{vpn => strongswan}/tasks/main.yml (84%)
rename roles/{vpn => strongswan}/tasks/openssl.yml (79%)
rename roles/{vpn => strongswan}/tasks/ubuntu.yml (95%)
rename roles/{vpn => strongswan}/templates/100-CustomLimitations.conf.j2 (100%)
rename roles/{vpn => strongswan}/templates/client_ipsec.conf.j2 (100%)
rename roles/{vpn => strongswan}/templates/client_ipsec.secrets.j2 (100%)
rename roles/{vpn => strongswan}/templates/client_windows.ps1.j2 (100%)
rename roles/{vpn => strongswan}/templates/ipsec.conf.j2 (94%)
rename roles/{vpn => strongswan}/templates/ipsec.secrets.j2 (100%)
rename roles/{vpn => strongswan}/templates/mobileconfig.j2 (100%)
rename roles/{vpn => strongswan}/templates/openssl.cnf.j2 (100%)
rename roles/{vpn => strongswan}/templates/strongswan.conf.j2 (100%)
delete mode 100644 roles/vpn/tasks/distribute_keys.yml
diff --git a/README.md b/README.md
index be4ce6b..2308c31 100644
--- a/README.md
+++ b/README.md
@@ -123,9 +123,9 @@ Install strongSwan, then copy the included ipsec_user.conf, ipsec_user.secrets,
#### Ubuntu Server 18.04 example
1. `sudo apt-get install strongswan libstrongswan-standard-plugins`: install strongSwan
-2. `/etc/ipsec.d/certs`: copy `