mirror of
https://github.com/status-im/infra-swarm.git
synced 2025-02-21 11:58:14 +00:00
78 lines
2.5 KiB
Makefile
78 lines
2.5 KiB
Makefile
#!/usr/bin/env bash
|
|
|
|
OS = $(strip $(shell uname -s))
|
|
ARCH = linux_amd64
|
|
ifeq ($(OS),Darwin)
|
|
ARCH = darwin_amd64
|
|
endif
|
|
|
|
PLUGIN_DIR = ~/.terraform.d/plugins
|
|
|
|
PROVIDER_NAME = terraform-provider-ansible
|
|
PROVIDER_VERSION = v0.0.4
|
|
PROVIDER_ARCHIVE = $(PROVIDER_NAME)-$(ARCH).zip
|
|
PROVIDER_URL = https://github.com/nbering/terraform-provider-ansible/releases/download/$(PROVIDER_VERSION)/$(PROVIDER_ARCHIVE)
|
|
|
|
PROVISIONER_NAME = terraform-provisioner-ansible
|
|
PROVISIONER_VERSION = v0.0.1
|
|
PROVISIONER_TMP = /tmp/${PROVISIONER_NAME}
|
|
PROVISIONER_URL = https://github.com/radekg/${PROVISIONER_NAME}
|
|
|
|
PLATFORM = linux
|
|
ifeq ($(OS),Darwin)
|
|
PLATFORM = darwin
|
|
endif
|
|
|
|
all: requirements install-provider install-provisioner secrets cleanup
|
|
echo "Success!"
|
|
|
|
plugins: install-provider install-provisioner
|
|
|
|
requirements:
|
|
ansible-galaxy install --force -r ansible/requirements.yml
|
|
|
|
install-unzip:
|
|
ifeq (, $(shell which unzip)) \
|
|
$(error "No unzip in PATH, consider doing apt install unzip") \
|
|
endif
|
|
|
|
install-provider:
|
|
if [ ! -e $(PLUGIN_DIR)/$(ARCH)/$(PROVIDER_NAME)_$(PROVIDER_VERSION) ]; then \
|
|
mkdir -p $(PLUGIN_DIR); \
|
|
wget $(PROVIDER_URL) -P $(PLUGIN_DIR); \
|
|
unzip -o $(PLUGIN_DIR)/$(PROVIDER_ARCHIVE) -d $(PLUGIN_DIR); \
|
|
fi
|
|
|
|
install-provisioner:
|
|
if [ ! -e $(PLUGIN_DIR)/$(ARCH)/$(PROVISIONER_NAME)_$(PROVISIONER_VERSION) ]; then \
|
|
mkdir -p $(PROVISIONER_TMP); \
|
|
git clone $(PROVISIONER_URL) $(PROVISIONER_TMP); \
|
|
cd $(PROVISIONER_TMP); \
|
|
go get github.com/hashicorp/terraform; \
|
|
go get github.com/mitchellh/go-homedir; \
|
|
go get github.com/mitchellh/go-linereader; \
|
|
go get github.com/mitchellh/mapstructure; \
|
|
go get golang.org/x/crypto/ssh; \
|
|
go get github.com/satori/go.uuid; \
|
|
make install; \
|
|
make build-$(PLATFORM); \
|
|
fi
|
|
|
|
secrets:
|
|
pass services/consul/ca-crt > ansible/files/consul-ca.crt
|
|
pass services/consul/ca-key > ansible/files/consul-ca.key
|
|
pass services/consul/client-crt > ansible/files/consul-client.crt
|
|
pass services/consul/client-key > ansible/files/consul-client.key
|
|
pass cloud/GoogleCloud/json > google-cloud.json
|
|
echo "\
|
|
# secrets extracted from password-store\n\
|
|
digitalocean_token = \"$(shell pass cloud/DigitalOcean/token)\"\n\
|
|
cloudflare_token = \"$(shell pass cloud/Cloudflare/token)\"\n\
|
|
cloudflare_email = \"$(shell pass cloud/Cloudflare/email)\"\n\
|
|
alicloud_access_key = \"$(shell pass cloud/Alibaba/access-key)\"\n\
|
|
alicloud_secret_key = \"$(shell pass cloud/Alibaba/secret-key)\"\n\
|
|
" > terraform.tfvars
|
|
|
|
cleanup:
|
|
rm -rf $(PLUGIN_DIR)/$(ARCHIVE)
|