-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy path010_prepare_config_files.tf
114 lines (88 loc) · 4.85 KB
/
010_prepare_config_files.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
## ------------------------------------------------------------------------------------
## Create all templated files
## Note: Must use `null_resource` instead of `local_file` because `local_file generates
## files every-other-time (due to state checking PRIOR to deletion)
## ------------------------------------------------------------------------------------
resource "null_resource" "regenerate_config_files_from_data" {
# depends_on = [ null_resource.purge_and_clone_local_target_folder ]
depends_on = [aws_ec2_instance_connect_endpoint.example]
triggers = { always_run = "${timestamp()}" }
provisioner "local-exec" {
working_dir = path.module
command = <<-EOT
set -e
# Purge local folder before recreating
${path.module}/assets/src/bash/local/purge_local_target.sh
# Generate Tower config files
echo '${local.tower_env}' > ${path.module}/assets/target/tower_config/tower.env
echo '${local.tower_yml}' > ${path.module}/assets/target/tower_config/tower.yml
echo '${local.tower_sql}' > ${path.module}/assets/target/tower_config/tower.sql
# Generate Groundswell config files
echo '${local.groundswell_env}' > ${path.module}/assets/target/groundswell_config/groundswell.env
echo '${local.groundswell_sql}' > ${path.module}/assets/target/groundswell_config/groundswell.sql
# Generate docker-compose files
echo '${local.docker_compose}' > ${path.module}/assets/target/docker_compose/docker-compose.yml
# Generate Seqerakit
echo '${local.seqerakit_yml}' > ${path.module}/assets/target/seqerakit/setup.yml
# Generate Bash files for remote execution
echo '${local.cleanse_and_configure_host}' > ${path.module}/assets/target/bash/remote/cleanse_and_configure_host.sh
# Generate Ansible files
echo '${local.ansible_02_update_file_configurations}' > ${path.module}/assets/target/ansible/02_update_file_configurations.yml
echo '${local.ansible_03_pull_containers_and_run_tower}' > ${path.module}/assets/target/ansible/03_pull_containers_and_run_tower.yml
echo '${local.ansible_05_patch_groundswell}' > ${path.module}/assets/target/ansible/05_patch_groundswell.yml
echo '${local.ansible_06_run_seqerakit}' > ${path.module}/assets/target/ansible/06_run_seqerakit.yml
echo '${local.codecommit_seqerakit}' > ${path.module}/assets/target/bash/remote/codecommit_set_workspace_id.sh
# Generate SSH_Config
echo '${local.ssh_config}' > ${path.module}/ssh_config
chmod 644 ${path.module}/ssh_config
# Generate Docker Logging Configuration
echo '${local.docker_logging}' > ${path.module}/assets/target/docker_logging/daemon.json
# Generate Tower Connect files
echo '${local.data_studios_env}' > ${path.module}/assets/target/tower_config/data-studios.env
echo '${tls_private_key.connect_pem.private_key_pem}' > ${path.module}/assets/target/tower_config/data-studios-rsa.pem
# Generate EC2 PEM
echo "${tls_private_key.ec2_ssh_key.private_key_pem}" > ${path.module}/${local.ssh_key_name}
chmod 400 ${path.module}/${local.ssh_key_name}
EOT
interpreter = ["/bin/bash", "-c"]
}
}
## ------------------------------------------------------------------------------------
## Seqerakit - Compute Environments
## NOTE: This part messy.
## Generation is conditional and I append the CEs to the setup.yml.
## Use count and local shell rather than local_file resource.
## ------------------------------------------------------------------------------------
resource "null_resource" "aws_batch_manual" {
count = var.seqerakit_aws_use_forge == false && var.seqerakit_aws_use_batch == true ? 1 : 0
triggers = { always_run = "${timestamp()}" }
depends_on = [null_resource.regenerate_config_files_from_data]
provisioner "local-exec" {
command = <<-EOT
echo '${local.aws_batch_manual}' >> ${path.module}/assets/target/seqerakit/setup.yml
EOT
interpreter = ["/bin/bash", "-c"]
}
}
resource "null_resource" "aws_batch_forge" {
count = var.seqerakit_aws_use_forge == true && var.seqerakit_aws_use_batch == true ? 1 : 0
triggers = { always_run = "${timestamp()}" }
depends_on = [null_resource.regenerate_config_files_from_data]
provisioner "local-exec" {
command = <<-EOT
echo '${local.aws_batch_forge}' >> ${path.module}/assets/target/seqerakit/setup.yml
EOT
interpreter = ["/bin/bash", "-c"]
}
}
## ------------------------------------------------------------------------------------
## Flag for file transfer to start
# -------------------------------------------------------------------------------------
resource "null_resource" "allow_file_copy_to_start" {
triggers = { always_run = "${timestamp()}" }
depends_on = [
null_resource.regenerate_config_files_from_data,
null_resource.aws_batch_manual,
null_resource.aws_batch_forge,
]
}