From 065078d0b6425faa9f26570da497934f42ca885d Mon Sep 17 00:00:00 2001
From: Olin Blodgett <nilo@nilosplace.net>
Date: Tue, 19 Apr 2022 15:30:21 -0400
Subject: [PATCH] Updated code for intermine production server setup

---
 Makefile                                      |  7 +++---
 custom_playbook_launch_intermine_instance.yml | 22 +++++++++++++++++++
 environments/intermineproduction/main.yml     | 15 +++++++++++++
 roles/setup_nvme_drive/tasks/main.yml         |  6 ++---
 tasks/start_gocd_agent.yml                    |  8 +++----
 5 files changed, 47 insertions(+), 11 deletions(-)
 create mode 100644 custom_playbook_launch_intermine_instance.yml
 create mode 100644 environments/intermineproduction/main.yml

diff --git a/Makefile b/Makefile
index 29de524..78a8eda 100644
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@ DOCKER_PULL_TAG  := latest
 DOCKER_BUILD_TAG := latest
 
 build: pull
-	docker build -t agrlocal/agr_ansible_run_unlocked:${DOCKER_BUILD_TAG} --build-arg REG=${REG} --build-arg DOCKER_PULL_TAG=${DOCKER_PULL_TAG} .
+	docker build --no-cache -t agrlocal/agr_ansible_run_unlocked:${DOCKER_BUILD_TAG} --build-arg REG=${REG} --build-arg DOCKER_PULL_TAG=${DOCKER_PULL_TAG} .
 
 registry-docker-login:
 ifneq ($(shell echo ${REG} | egrep "ecr\..+\.amazonaws\.com"),)
@@ -64,12 +64,11 @@ openvpn_server:
 	docker run -it -e PLAYBOOK_NAME="OpenVPN Server" agrlocal/agr_ansible_run_unlocked:latest ansible-playbook -e env=build -e WEBSERVER_INSTANCE_TYPE=t3.small -e SKIP_NVME_DRIVES=true -i hosts custom_playbook_launch_instance_bare.yml --vault-password-file=.password
 
 start_build_intermine_app_server:
-	docker run -it -e PLAYBOOK_NAME="Build Intermine App Server" -e SKIP_NVME_DRIVES=true -e START_GOCD_AGENT=true -e WEBSERVER_INSTANCE_TYPE=m4.xlarge agrlocal/agr_ansible_run_unlocked:latest ansible-playbook -e SKIP_NVME_DRIVES=true -e env=build -i hosts custom_playbook_launch_web_instance.yml --vault-password-file=.password
+	docker run -it -e PLAYBOOK_NAME="Build Intermine App Server" -e SKIP_NVME_DRIVES=true -e SETUP_NVME_DRIVE=true -e START_GOCD_AGENT=true -e WEBSERVER_INSTANCE_TYPE=i3.xlarge agrlocal/agr_ansible_run_unlocked:latest ansible-playbook -e SETUP_NVME_DRIVE=true -e SKIP_NVME_DRIVES=true -e env=build -i hosts custom_playbook_launch_intermine_instance.yml --vault-password-file=.password
 
 start_production_intermine_app_server:
-	docker run -it -e PLAYBOOK_NAME="Production Intermine App Server" -e SKIP_NVME_DRIVES=true -e WEBSERVER_INSTANCE_TYPE=m4.xlarge agrlocal/agr_ansible_run_unlocked:latest ansible-playbook -e SKIP_NVME_DRIVES=true -e START_GOCD_AGENT=true -e env=production -i hosts custom_playbook_launch_web_instance.yml --vault-password-file=.password
+	docker run -it -e PLAYBOOK_NAME="Production Intermine App Server" -e SKIP_NVME_DRIVES=true -e SETUP_NVME_DRIVE=true -e START_GOCD_AGENT=true -e WEBSERVER_INSTANCE_TYPE=i3.xlarge agrlocal/agr_ansible_run_unlocked:latest ansible-playbook -e SETUP_NVME_DRIVE=true -e SKIP_NVME_DRIVES=true -e env=intermineproduction -i hosts custom_playbook_launch_intermine_instance.yml --vault-password-file=.password
 
 CLUSTER_MACHINE_TYPE := i3.large
-
 start_node%:
 	docker run -it -e PLAYBOOK_NAME="Build ES Cluster $*" agrlocal/agr_ansible_run_unlocked:latest ansible-playbook -e CLUSTER_NODE=NODE$* -e COMPUTE_INSTANCE_TYPE=${CLUSTER_MACHINE_TYPE} -e SKIP_NVME_DRIVES=true -e env=build -i hosts playbook_launch_cluster_node.yml --vault-password-file=.password
diff --git a/custom_playbook_launch_intermine_instance.yml b/custom_playbook_launch_intermine_instance.yml
new file mode 100644
index 0000000..30f0a4f
--- /dev/null
+++ b/custom_playbook_launch_intermine_instance.yml
@@ -0,0 +1,22 @@
+---
+
+- import_playbook: playbook_launch_pre_tasks.yml
+- import_playbook: playbook_launch_web_instance.yml
+- import_playbook: playbook_launch_post_tasks.yml
+- import_playbook: playbook_launch_monitoring.yml
+
+- name: configure servers
+  hosts: launched
+  user: core
+  gather_facts: false
+
+  vars_files:
+    - "environments/{{ env }}/main.yml" # ENV must always be loaded first
+    - "environments/shared_secrets.yml"
+    - "environments/shared_variables.yml"
+    - "environments/shared_aws_instance_variables.yml"
+
+  tasks:
+    - name: Start GoCD agent
+      block:
+        - include_tasks: tasks/start_gocd_agent.yml
diff --git a/environments/intermineproduction/main.yml b/environments/intermineproduction/main.yml
new file mode 100644
index 0000000..004deed
--- /dev/null
+++ b/environments/intermineproduction/main.yml
@@ -0,0 +1,15 @@
+---
+  
+PLAYBOOK_NAME: "{{ lookup('env','PLAYBOOK_NAME') or 'No Name Specified' }}"
+THREADED: "{{ lookup('env','THREADED') or 'true' }}"
+NET: "intermineproduction"
+DOWNLOAD_HOST: "download.alliancegenome.org"
+FMS_API_URL: "https://fms.alliancegenome.org"
+GENERATE_REPORTS: "true"
+LOADER_TEST_SET: "false"
+NGINX_TAG: "{{ DOCKER_PULL_TAG }}"
+LOG_SERVER_HOST: "{{ lookup('env','LOG_SERVER_HOST') or 'logs.alliancegenome.org' }}" # Logging runs outside the docker network
+START_GOCD_AGENT: "{{ lookup('env','START_GOCD_AGENT') or false }}"
+
+INTERMINE_PGUSER: "{{ INTERMINE_PROD_PGUSER }}"
+INTERMINE_PGPASSWORD: "{{ INTERMINE_PROD_PGPASSWORD }}"
diff --git a/roles/setup_nvme_drive/tasks/main.yml b/roles/setup_nvme_drive/tasks/main.yml
index 9211b49..4b7b497 100644
--- a/roles/setup_nvme_drive/tasks/main.yml
+++ b/roles/setup_nvme_drive/tasks/main.yml
@@ -23,14 +23,14 @@
     mode: "711"
 
 - name: Create Partitions
-  shell: echo -e "p\nn\np\n1\n\n\nw" | fdisk /dev/nvme1n1
+  shell: echo -e "p\nn\np\n1\n\n\nw" | fdisk /dev/nvme0n1
 
 - name: Create File System
-  command: mkfs.ext4 -F /dev/nvme1n1p1
+  command: mkfs.ext4 -F /dev/nvme0n1p1
 
 - name: Mount Drive AS docker FS
   mount:
-    src: /dev/nvme1n1p1
+    src: /dev/nvme0n1p1
     path: /var/lib/docker
     state: mounted
     fstype: ext4
diff --git a/tasks/start_gocd_agent.yml b/tasks/start_gocd_agent.yml
index 45ebf40..08fc66b 100644
--- a/tasks/start_gocd_agent.yml
+++ b/tasks/start_gocd_agent.yml
@@ -2,7 +2,7 @@
   docker_image:
     name: "{{ GOCD_IMAGE }}"
     source: pull
-  when: "{{ START_GOCD_AGENT }}"
+  when: START_GOCD_AGENT == "true"
 
 - name: Run GoCD Agent 0
   docker_container:
@@ -18,7 +18,7 @@
       GO_SERVER_URL: "http://gocd.alliancegenome.org:8153/go"
     network_mode: "{{ NET }}"
     recreate: yes
-  when: "{{ START_GOCD_AGENT }}"
+  when: START_GOCD_AGENT == "true"
 
 - name: Run GoCD Agent 1
   docker_container:
@@ -34,7 +34,7 @@
       GO_SERVER_URL: "http://gocd.alliancegenome.org:8153/go"
     network_mode: "{{ NET }}"
     recreate: yes
-  when: "{{ START_GOCD_AGENT }}"
+  when: START_GOCD_AGENT == "true"
 
 - name: Run GoCD Agent 2
   docker_container:
@@ -50,4 +50,4 @@
       GO_SERVER_URL: "http://gocd.alliancegenome.org:8153/go"
     network_mode: "{{ NET }}"
     recreate: yes
-  when: "{{ START_GOCD_AGENT }}"
+  when: START_GOCD_AGENT == "true"