diff --git a/Makefile b/Makefile index 4494800..b2e9e2f 100644 --- a/Makefile +++ b/Makefile @@ -18,9 +18,11 @@ PROVISIONER_VERSION = v2.0.0 PROVISIONER_ARCHIVE = $(PROVISIONER_NAME)-$(subst _,-,$(ARCH))_$(PROVISIONER_VERSION) PROVISIONER_URL = https://github.com/radekg/terraform-provisioner-ansible/releases/download/$(PROVISIONER_VERSION)/$(PROVISIONER_ARCHIVE) -all: requirements install-provider install-provisioner secrets init-terraform +all: deps secrets init-terraform @echo "Success!" +deps: requirements plugins + plugins: install-provider install-provisioner requirements: diff --git a/README.md b/README.md index b80089d..f31fe9a 100644 --- a/README.md +++ b/README.md @@ -2,65 +2,12 @@ [Swarm](https://github.com/ethersphere/swarm) clusters configuration. -# Requirements +# Endpoints -In order to use this you will need secrets(passwords, certs, keys) contained within the [infra-pass](https://github.com/status-im/infra-pass) repository. If you can't see it ask jakub@status.im to get you access for it. +| | | +|----------------------|-------------------------------| +| Public Swarm Gateway | https://test-swarm.status.im/ | -In order for this to work first you need to install necessary Terraform plugins and get the right secrets from the [infra-pass](https://github.com/status-im/infra-pass) repo, to do that simply run: -``` -make -# alternatively -make plugins -make secrets -``` -This will put the necessary certificates, keys, and passwords are in place so you can deploy and configure hosts. +# Repo Usage -# Usage - -To provision a new fleet create a new Terraform workspace: -``` -terraform workspace new bug-test -``` -Then plan your fleet and if everything looks good provision it: -``` -terraform plan -terraform apply -``` -Once provisioned you can configure the hosts using Ansible: -``` -ansible-playbook ansible/main.yml -``` -Once finished your hosts should be accessible via SSH: -``` -ssh ${USER}@node-01.bug-test.eth.f.status.im -``` - -# Workspaces - -Each Terraform `workspace` has it's own path in the dynamic inventory and is a separate fleet of hosts. -You can see currently existing fleets using following command: -``` -terraform workspace list - default -* devel - test - perf-test -``` -You can select a fleet and see it's current state of the fleet: -``` -terraform workspace select perf-test -terraform show -``` -Or create a new workspace for yourself. -``` -terraform workspace new bug-test-01 -``` -The name of your workspace will be used in the DNS names of your hosts, for example: -``` -mail-01.bug-test-01.eth.f.status.im -``` -And it's state will be saved in the [Consul](https://www.consul.io/) cluster managed by the [infra-hq](https://github.com/status-im/infra-hq) repo. - -# Details - -Read the [Terraform and Ansible](https://github.com/status-im/infra-docs/blob/master/articles/ansible_terraform.md) article in our `infra-docs` repo. +For how to use this repo read the [`USAGE.md`](USAGE.md) file. diff --git a/USAGE.md b/USAGE.md new file mode 100644 index 0000000..dd73cc4 --- /dev/null +++ b/USAGE.md @@ -0,0 +1,87 @@ +# Getting Started + +All you should need to do is: +```bash +make +``` +But there are some caveats: + +## Secrets + +In order to use this you will need secrets(passwords, certs, keys) contained within the [infra-pass](https://github.com/status-im/infra-pass) repository. + +If you can't see it ask [@jakubgs](mailto:jakub@status.im) or anyone from [DevOps Team](https://github.com/orgs/status-im/teams/devops) to get you access for it. + +In order for this to work first you need to install necessary Terraform plugins and get the right secrets from the [infra-pass](https://github.com/status-im/infra-pass) repo, to do that simply run: +``` +make secrets +``` +This will put the necessary certificates, keys, and passwords are in place so you can deploy and configure hosts. + +## Dependencies + +Working with this repo requires several things: + +* [Terraform](https://www.terraform.io/) [Provisioners](https://www.terraform.io/docs/provisioners/index.html) and [Providers](https://www.terraform.io/docs/providers/) +* [Ansible](https://docs.ansible.com/) [Roles](https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html) + +These can be installed using. +```bash +make deps +``` + +# Usage + +To start work on a fleet you need to select a Terraform workspace. + +You can see currently existing fleets using following command: +```bash +terraform workspace list +* default + prod + test +``` +```bash +terraform workspace select prod +``` +You can view the current state of the fleet using: +```bash +terraform show +ansible localhost -m debug -a 'var=groups' +``` +Then plan your fleet and if everything looks good provision it: +```bash +terraform plan +terraform apply +``` +Once provisioned you can configure the hosts using Ansible: +```bash +ansible-playbook ansible/main.yml +``` +Once finished your hosts should be accessible via SSH: +```bash +ssh ${USER}@node-01.xyz.prod.status.im +``` + +# Workspaces + +Each Terraform `workspace` has it's own path in the dynamic inventory store in [Consul](https://www.consul.io/) and is a separate fleet of hosts. +You can create a new fleet and see it's current state of the fleet: +```bash +terraform workspace new beta +``` +The name of your workspace will be used in the DNS names of your hosts, for example: +``` +mail-01.bug-test-01.xyz.beta.status.im +``` +And it's state will be saved in the [Consul](https://www.consul.io/) cluster managed by the [infra-hq](https://github.com/status-im/infra-hq) repo. + +# Details + +For more details read our [`infra-docs`](https://github.com/status-im/infra-docs) repo: + +* [Terraform and Ansible](https://github.com/status-im/infra-docs/blob/master/articles/ansible_terraform.md) +* [Infra Naming Conventions](https://github.com/status-im/infra-docs/blob/master/articles/naming_conventions.md) +* [Infra Tips & Tricks](https://github.com/status-im/infra-docs/blob/master/articles/infra_tips_n_tricks.md) + +Or refer to `README.dm` files in specific Ansible roles and Terraform modules.