Fix master-slave recipe
Fix many breakages on the master-slave recipe:
- generation of the Prometheus bearer token
- sequence of resolution of variables
- reference to the Gerrit slave docker image
- service discovery of git-daemon
- missing includes in the git-ssh and git-daemon Makefiles
- missing GERRIT_KEY_PREFIX in git-ssh container's setup
- fix replication.config.template with more suitable sample values
- fix sequence of activation of the master-slave services
This change breaks the rule "one change = one thing", however, here
the thing is really "making master-slave recipe work".
Change-Id: Ic71ab16a4e83de60b4b2877727ad71abd79f117c
diff --git a/gerrit/add_secrets_aws_secrets_manager.sh b/gerrit/add_secrets_aws_secrets_manager.sh
index 3026cf3..2bccd2b 100755
--- a/gerrit/add_secrets_aws_secrets_manager.sh
+++ b/gerrit/add_secrets_aws_secrets_manager.sh
@@ -65,3 +65,8 @@
echo "Adding SMTP password..."
set-secret-string smtpPassword
+
+if [ -f "$SECRETS_DIRECTORY/prometheus_bearer_token" ]; then
+ echo "Adding Prometheus bearer token..."
+ set-secret-string prometheus_bearer_token
+fi
diff --git a/gerrit/replication.setup.template b/gerrit/replication.setup.template
index e4b7372..e5e018b 100644
--- a/gerrit/replication.setup.template
+++ b/gerrit/replication.setup.template
@@ -1,3 +1,3 @@
[remote-slave]
- url = git://replication.internal:29500/${name}.git
- adminUrl = ssh://gerrit@replication.internal:1022/var/gerrit/git/${name}.git
+ url = git://subdomain.hostedzonename:9418/${name}.git
+ adminUrl = ssh://gerrit@$subdomain.hostedzonename:1022/var/gerrit/git/${name}.git
diff --git a/gerrit/setup_gerrit.py b/gerrit/setup_gerrit.py
index c48d02f..fc15a6b 100755
--- a/gerrit/setup_gerrit.py
+++ b/gerrit/setup_gerrit.py
@@ -43,6 +43,7 @@
elif e.response['Error']['Code'] == 'ResourceNotFoundException':
# We can't find the resource that you asked for.
# Deal with the exception here, and/or rethrow at your discretion.
+ print("Secret name '%s' was not found" % secret_name)
raise e
else:
# Decrypts secret using the associated KMS CMK.
@@ -99,7 +100,7 @@
os.chmod(GERRIT_SSH_DIRECTORY, 0o700)
with open(GERRIT_REPLICATION_SSH_KEYS, 'w', encoding='utf-8') as f:
- f.write(get_secret(GERRIT_KEY_PREFIX + 'replication_user_id_rsa'))
+ f.write(get_secret(GERRIT_KEY_PREFIX + '_replication_user_id_rsa'))
os.chmod(GERRIT_REPLICATION_SSH_KEYS, 0o400)
file_loader = FileSystemLoader(GERRIT_CONFIG_DIRECTORY)
diff --git a/master-slave/Makefile b/master-slave/Makefile
index a84b575..6431c3d 100644
--- a/master-slave/Makefile
+++ b/master-slave/Makefile
@@ -1,5 +1,5 @@
-include setup.env
include ../Makefile.common
+include setup.env
CLUSTER_TEMPLATE:=cf-cluster.yml
SERVICE_MASTER_TEMPLATE:=cf-service-master.yml
@@ -8,14 +8,15 @@
AWS_FC_COMMAND=export AWS_PAGER=;aws cloudformation
.PHONY: create-all delete-all \
- cluster cluster-keys service-master dns-routing \
+ cluster cluster-keys service-master service-slave dns-routing \
+ delete-cluster delete-service-master delete-service-slave delete-dns-routing \
wait-for-cluster-creation wait-for-service-master-creation wait-for-dns-routing-creation \
wait-for-cluster-deletion wait-for-service-master-deletion wait-for-dns-routing-deletion \
gerrit-build gerrit-publish
create-all: cluster wait-for-cluster-creation \
- service-master service-slave \
- wait-for-service-master-creation wait-for-service-slave-creation \
+ service-slave wait-for-service-slave-creation \
+ service-master wait-for-service-master-creation \
dns-routing wait-for-dns-routing-creation
cluster: cluster-keys
@@ -57,7 +58,7 @@
ParameterKey=DockerRegistryUrl,ParameterValue=$(DOCKER_REGISTRY_URI) \
ParameterKey=CertificateArn,ParameterValue=$(SSL_CERTIFICATE_ARN) \
ParameterKey=GerritKeyPrefix,ParameterValue=$(GERRIT_KEY_PREFIX)\
- ParameterKey=DockerImage,ParameterValue=aws-gerrit/gerrit:$(IMAGE_TAG)
+ ParameterKey=GerritDockerImage,ParameterValue=aws-gerrit/gerrit:$(IMAGE_TAG)
dns-routing:
$(AWS_FC_COMMAND) create-stack \
diff --git a/master-slave/README.md b/master-slave/README.md
index b2e2e6d..59d7f80 100644
--- a/master-slave/README.md
+++ b/master-slave/README.md
@@ -121,6 +121,9 @@
* replication_user_id_rsa
* replication_user_id_rsa.pub
+Generate a random bearer token to be used for monitoring with Promtetheus:
+* `openssl rand -hex 20 > prometheus_bearer_token`
+
You will have to create the keys and place them in a directory.
#### Register Email Private Key
diff --git a/master-slave/cf-service-slave.yml b/master-slave/cf-service-slave.yml
index 45f84ac..7415836 100644
--- a/master-slave/cf-service-slave.yml
+++ b/master-slave/cf-service-slave.yml
@@ -263,6 +263,8 @@
Value: gerrit:1000:1000
- Name: AWS_REGION
Value: !Ref AWS::Region
+ - Name: GERRIT_KEY_PREFIX
+ Value: !Ref GerritKeyPrefix
MountPoints:
- SourceVolume: !Ref GerritGitVolume
ContainerPath: /var/gerrit/git
diff --git a/master-slave/git-daemon/Makefile b/master-slave/git-daemon/Makefile
index d9fe694..110b819 100644
--- a/master-slave/git-daemon/Makefile
+++ b/master-slave/git-daemon/Makefile
@@ -1,3 +1,4 @@
+include ../../Makefile.common
include ../setup.env
IMAGE_NAME:=git-daemon
diff --git a/master-slave/git-ssh/Makefile b/master-slave/git-ssh/Makefile
index 88db26b..1b05de0 100644
--- a/master-slave/git-ssh/Makefile
+++ b/master-slave/git-ssh/Makefile
@@ -1,3 +1,4 @@
+include ../../Makefile.common
include ../setup.env
IMAGE_NAME:=git-ssh
diff --git a/master-slave/git-ssh/setup_ssh.py b/master-slave/git-ssh/setup_ssh.py
index fc228d0..362df06 100644
--- a/master-slave/git-ssh/setup_ssh.py
+++ b/master-slave/git-ssh/setup_ssh.py
@@ -58,13 +58,13 @@
"""
-GERRIT_KEY_PREFIX = "gerrit_secret_"
+GERRIT_KEY_PREFIX = os.getenv("GERRIT_KEY_PREFIX", "gerrit_secret")
SSH_KEYS_DIRECTORY = "/home/gerrit/.ssh"
print("Installing SSH Keys from Secret Manager in directory: " + SSH_KEYS_DIRECTORY)
with open(SSH_KEYS_DIRECTORY + '/authorized_keys', 'w', encoding='utf-8') as f:
- f.write(get_secret(GERRIT_KEY_PREFIX + 'replication_user_id_rsa.pub'))
+ f.write(get_secret(GERRIT_KEY_PREFIX + '_replication_user_id_rsa.pub'))
os.chmod(SSH_KEYS_DIRECTORY, 0o700)
os.chmod(SSH_KEYS_DIRECTORY + '/authorized_keys', 0o600)