]> git.immae.eu Git - perso/Immae/Config/Ansible.git/blame - roles/contexts/fretlink/templates/environment.j2
New configuration as of 2019-08-21
[perso/Immae/Config/Ansible.git] / roles / contexts / fretlink / templates / environment.j2
CommitLineData
b7b8fe64
IB
1# vim: filetype=sh
2# Macaron
3# openssl rand -hex 32
4# URI: postgres:///db_name
5
6DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
7if ! $(echo "$PATH" | grep -q "$DIR/toolbox/scripts"); then
8 PATH="$DIR/toolbox/scripts:$PATH"
9fi
10
d4357f69
IB
11p() {
12 if [ -z "$2" ]; then
13 pass show Travail/Fretlink/$1
14 else
15 pass show Travail/Fretlink/$1 | grep "^$2:" | sed -e "s/^$2: //"
16 fi | head -n1
17}
18
b7b8fe64
IB
19build_macaroon() {
20 if [ "$1" = "--old" ]; then
21 shift
22 action="old-realms"
23 ttl=""
24 else
25 action="new"
26 ttl="--no-ttl"
27 fi
28
29 if [ -z "$1" -o -z "$2" -o -z "$3" -o -z "$4" ]; then
30 echo "build_macaroon [--old] secret src-key-id target realm" >&2
31 return
32 fi
33
34 secret="$1"
35 src="$2"
36 target="uri://fretlink/$3"
37 realm="$4"
38
90b63575 39 pushd "$HOME/workdir/haskell-commons" >/dev/null 2>/dev/null
b7b8fe64 40 MACAROON_PRIVATE_KEY="$secret" MACAROON_SECRET="$secret" stack exec macaroon-bakery -- $action --location "$target" --key-id "$src" $ttl "$realm"
90b63575 41 popd 2>/dev/null >/dev/null
b7b8fe64
IB
42}
43
e7270a0e
IB
44function capitalize() {
45 echo "$1" | sed -e 's!\(^\|-\)\(.\)!\U\2!g'
46}
47
b7b8fe64
IB
48APP=$(basename $(pwd))
49
50FL_APPS_HOST="localhost"
51FL_APPS_SCHEME="http"
52
80ed46d4
IB
53FL_ADMIN_USER_PORT=8078
54FL_ADMIN_USER_SECRET="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/AdminUser subkey=Secret') }}"
55FL_ADMIN_USER_PRIVATE_KEY="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/AdminUser subkey=PrivateKey') }}"
56FL_ADMIN_USER_URL="$FL_APPS_SCHEME://$FL_APPS_HOST:$FL_ADMIN_ROOT_PORT/api/"
57
b7b8fe64
IB
58FL_ADMIN_ROOT_PORT=8079
59FL_ADMIN_ROOT_PRIVATE_KEY="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/AdminRoot subkey=PrivateKey') }}"
60FL_ADMIN_ROOT_URL="$FL_APPS_SCHEME://$FL_APPS_HOST:$FL_ADMIN_ROOT_PORT/api/"
61
62FL_APP_PORT=8080
63FL_APP_MONGO_URI="mongodb://localhost:27017/fretlink"
64FL_APP_SECRET="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/App subkey=Secret') }}"
65FL_APP_URL="$FL_APPS_SCHEME://$FL_APPS_HOST:$FL_APP_PORT"
66
67FL_CARRIER_DIRECTORY_PORT=8082
68FL_CARRIER_DIRECTORY_SECRET="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/CarrierDirectory subkey=Secret') }}"
69FL_CARRIER_DIRECTORY_PRIVATE_KEY="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/CarrierDirectory subkey=PrivateKey') }}"
bf4da466 70FL_CARRIER_DIRECTORY_URL="$FL_APPS_SCHEME://$FL_APPS_HOST:$FL_CARRIER_DIRECTORY_PORT/api"
b7b8fe64
IB
71
72FL_NOTIFIER_PORT=8081
73FL_NOTIFIER_SECRET="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/Notifier subkey=Secret') }}"
74FL_NOTIFIER_PRIVATE_KEY="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/Notifier subkey=PrivateKey') }}"
75FL_NOTIFIER_URL="$FL_APPS_SCHEME://$FL_APPS_HOST:$FL_NOTIFIER_PORT/api"
76
80ed46d4
IB
77FL_THIRD_PARTIES_PORT=8086
78FL_THIRD_PARTIES_SECRET="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/ThirdParties subkey=Secret') }}"
79
b7b8fe64
IB
80FL_PRICER_PORT=8083
81FL_PRICER_PRIVATE_KEY="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/Pricer subkey=PrivateKey') }}"
80ed46d4 82FL_PRICER_SECRET="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/Pricer subkey=Secret') }}"
b7b8fe64
IB
83
84FL_FREIGHT_PORT=8084
85FL_FREIGHT_SECRET="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/Freight subkey=Secret') }}"
86
80ed46d4
IB
87FL_HOMEPAGE_PORT=8085
88
b7b8fe64 89FL_BOOKKEEPING_SECRET="dummy"
39894a77 90FL_LANE_EXPLORER_SECRET="dummy"
b7b8fe64
IB
91
92FL_PSQL_HOST="{{ lookup('passwordstore', 'Travail/Fretlink/Psql/Local subkey=Host') }}"
93FL_PSQL_PORT="{{ lookup('passwordstore', 'Travail/Fretlink/Psql/Local subkey=Port') }}"
94FL_PSQL_USER="{{ lookup('passwordstore', 'Travail/Fretlink/Psql/Local subkey=User') }}"
95FL_PSQL_PASSWORD="{{ lookup('passwordstore', 'Travail/Fretlink/Psql/Local') }}"
96
b7b8fe64
IB
97FL_TOOLBOX_AGENT_MACAROON="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/ToolboxAgent') }}"
98
e7270a0e
IB
99export FRETLINK_ENV="$APP ${FL_ENV:-local}"
100
b7b8fe64
IB
101if [ -f "local.env.example" ]; then
102 source local.env.example
103fi
104
105if [ "$APP" != "app" ]; then
106 name="${APP//-/_}"
107 port_var="FL_${name^^}_PORT"
108 secret_var="FL_${name^^}_SECRET"
109 private_key_var="FL_${name^^}_PRIVATE_KEY"
110
111 if [ -n "${!secret_var}" ]; then
112 export MACAROON_SECRET="${!secret_var}"
113 fi
114 if [ -n "${!private_key_var}" ]; then
115 export MACAROON_PRIVATE_KEY="${!private_key_var}"
116 fi
117 export PORT="${!port_var}"
118 export PG_URI="postgres:///$name"
119
120 if [ -z "$FL_ENV" ]; then
121 export POSTGRESQL_ADDON_HOST="$FL_PSQL_HOST"
122 export POSTGRESQL_ADDON_PORT="$FL_PSQL_PORT"
123 export POSTGRESQL_ADDON_USER="$FL_PSQL_USER"
124 export POSTGRESQL_ADDON_PASSWORD="$FL_PSQL_PASSWORD"
125 export POSTGRESQL_ADDON_DB="$name"
80ed46d4 126 export PG_URI="postgresql://$POSTGRESQL_ADDON_USER:$POSTGRESQL_ADDON_PASSWORD@localhost:$POSTGRESQL_ADDON_PORT/$POSTGRESQL_ADDON_DB"
b7b8fe64 127 else
e7270a0e
IB
128 key=Psql/$(capitalize $FL_ENV)/$(capitalize $APP)
129 export POSTGRESQL_ADDON_HOST=$(p $key Host)
130 export POSTGRESQL_ADDON_PORT=$(p $key Port)
131 export POSTGRESQL_ADDON_USER=$(p $key User)
132 export POSTGRESQL_ADDON_PASSWORD=$(p $key)
133 export POSTGRESQL_ADDON_DB=$(p $key Database)
80ed46d4 134 export PG_URI="postgresql://$POSTGRESQL_ADDON_USER:$POSTGRESQL_ADDON_PASSWORD@$POSTGRESQL_ADDON_HOST:$POSTGRESQL_ADDON_PORT/$POSTGRESQL_ADDON_DB"
b7b8fe64 135 fi
80ed46d4
IB
136
137 export GRAYLOG_HOST="localhost"
138 export GRAYLOG_PORT="1111"
139 export ENVIRONMENT_NAME="local"
140 export APPLICATION_NAME="$APP"
141 export SENTRY_DSN="test"
142 export ACCEPTED_ORIGINS="*"
b7b8fe64
IB
143fi
144
145if [ "$APP" = "app" ]; then
146 export FRETLINK_MONGO_URI="$FL_APP_MONGO_URI"
147 export FRETLINK_PORT="$FL_APP_PORT"
148 export FRETLINK_BASE_URL="$FL_APP_URL"
149
150 # Dummies mandatory but not defined by default
151 export FRETLINK_SMTP_PASSWORD="password"
152 export FRETLINK_AMAZON_PUBLIC_KEY="password"
153 export FRETLINK_AMAZON_PRIVATE_KEY="password"
154 export FRETLINK_GMAPS_API_KEY="password"
bf4da466 155 export FRETLINK_PASSWORD_REQUEST_SECRET="password"
b7b8fe64
IB
156
157 # secret
158 export FRETLINK_MACAROON_SECRET=$FL_APP_SECRET
159
160 # carrier directory
bf4da466 161 export CARRIER_DIRECTORY_URI="$FL_CARRIER_DIRECTORY_URL/"
b7b8fe64 162 export FRETLINK_CARDIR_URL="$FL_CARRIER_DIRECTORY_URL"
80ed46d4 163 export FRETLINK_CARDIR_URL_FRONTEND="$FL_CARRIER_DIRECTORY_URL"
b7b8fe64 164 export FRETLINK_CARDIR_ENABLED="true"
bf4da466 165 export FRETLINK_CARDIRV3_ACCESS_KEY="$(build_macaroon $FL_CARRIER_DIRECTORY_SECRET carrier-directory carrier-directory carrier-directory::read)"
b7b8fe64
IB
166
167 # notifier
168 export FRETLINK_NOTIFIER_API=$FL_NOTIFIER_URL
39894a77 169 export FRETLINK_NOTIFIER_ACCESS_KEY="$(build_macaroon $FL_NOTIFIER_SECRET notifier notifier messaging)"
b7b8fe64
IB
170 export FRETLINK_NOTIFIER_TRANSPOREON_ACCESS_KEY="$(build_macaroon --old $FL_NOTIFIER_PRIVATE_KEY notifier notifier external)"
171 export FRETLINK_NOTIFIER_TRANSPOREON_ENABLED="true"
172
39894a77
IB
173 export FRETLINK_NOTIFIER_ENABLED="true"
174 export FRETLINK_NOTIFIER_AMQP_ENABLED="true"
175 export FRETLINK_NOTIFIER_AMQP_TLS="{{ lookup('passwordstore', 'Travail/Fretlink/Rabbitmq/Local/Notifier subkey=TLS') }}"
176 export FRETLINK_NOTIFIER_AMQP_USER="{{ lookup('passwordstore', 'Travail/Fretlink/Rabbitmq/Local/Notifier subkey=User') }}"
177 export FRETLINK_NOTIFIER_AMQP_PASSWORD="{{ lookup('passwordstore', 'Travail/Fretlink/Rabbitmq/Local/Notifier') }}"
178 export FRETLINK_NOTIFIER_AMQP_HOSTS="{{ lookup('passwordstore', 'Travail/Fretlink/Rabbitmq/Local/Notifier subkey=Hosts') }}"
179 export FRETLINK_NOTIFIER_AMQP_QUEUE="{{ lookup('passwordstore', 'Travail/Fretlink/Rabbitmq/Local/Notifier subkey=Queue') }}"
180 export FRETLINK_NOTIFIER_AMQP_EXCHANGE="{{ lookup('passwordstore', 'Travail/Fretlink/Rabbitmq/Local/Notifier subkey=Exchange') }}"
181 export FRETLINK_NOTIFIER_AMQP_PORT="{{ lookup('passwordstore', 'Travail/Fretlink/Rabbitmq/Local/Notifier subkey=Port') }}"
182 export FRETLINK_NOTIFIER_AMQP_VHOST="{{ lookup('passwordstore', 'Travail/Fretlink/Rabbitmq/Local/Notifier subkey=Vhost') }}"
183
80ed46d4
IB
184 # pricer
185 export FRETLINK_PRICER_USE_CARGO_OUTPUT="true"
186 export FRETLINK_PRICER_SHIPPER_PRICE_V2_KEY=$(build_macaroon $FL_PRICER_SECRET pricer pricer pricing::cargo)
187 export FRETLINK_PRICER_SHIPPER_PRICE_KEY=$(build_macaroon --old $FL_PRICER_SECRET pricer pricer internal-cargo-pricing)
188 export FRETLINK_PRICER_CARRIER_SUGGESTION_KEY=$(build_macaroon --old $FL_PRICER_SECRET pricer pricer internal-cargo-pricing)
189 export FRETLINK_PRICER_MACAROON="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/PricerDev') }}"
190 export FRETLINK_PRICER_URL="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/PricerDev subkey=Url') }}"
39894a77 191
b7b8fe64
IB
192 # admin-root
193 export FRETLINK_ADMINROOT_URL=$FL_ADMIN_ROOT_URL
194 export FRETLINK_ADMINROOT_ACCESS_KEY="$(build_macaroon $FL_ADMIN_ROOT_PRIVATE_KEY admin-root admin-root admin-root::token-delivery)"
195
196 # geodata
197 export FRETLINK_GEODATA_API="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/GeodataDev subkey=Url') }}"
198 export FRETLINK_GEODATA_ACCESS_KEY="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/GeodataDev') }}"
bf4da466 199 export GEODATA_URI="$FRETLINK_GEODATA_API"
b7b8fe64
IB
200fi
201
202if [ "$APP" = "admin-root" ]; then
203 export BASE_URL=$FL_APPS_HOST
204 export API_ROOT="http://$BASE_URL:$PORT/api"
205 export UI_ROOT="http://$BASE_URL:$PORT/admin"
206 export TOK="$(build_macaroon $FL_ADMIN_ROOT_PRIVATE_KEY admin-root admin-root admin-root::provisioning)"
207
208 export CARDIR_MACAROON_SECRET=$FL_CARRIER_DIRECTORY_SECRET
209 export NOTIFIER_MACAROON_SECRET=$FL_NOTIFIER_SECRET
210 export BOOKKEEPING_MACAROON_SECRET=$FL_BOOKKEEPING_SECRET
39894a77 211 export LANE_EXPLORER_MACAROON_SECRET=$FL_LANE_EXPLORER_SECRET
b7b8fe64
IB
212fi
213
80ed46d4
IB
214if [ "$APP" = "admin-user" ]; then
215 export BASE_URL=$FL_APPS_HOST
216 export API_ROOT="http://$BASE_URL:$PORT/api"
217 export UI_ROOT="http://$BASE_URL:$PORT/admin"
218 export ACCEPTED_ORIGINS="http://$BASE_URL:$PORT/admin"
219 export TOK="$(build_macaroon $FL_ADMIN_USER_PRIVATE_KEY admin-user admin-user admin-user::provisioning)"
220 export ADMIN_TOKEN="$(build_macaroon $FL_ADMIN_USER_SECRET admin-user admin-user admin-user::user-management)"
221 export SERVICE_TOKEN="$(build_macaroon $FL_ADMIN_USER_SECRET admin-user admin-user admin-user::some-service)"
222fi
223
224if [ "$APP" = "homepage" ]; then
225 export HOMEPAGE_API_KEY="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/HomepageDev subkey=ApiKey') }}"
226 export HOMEPAGE_API_ROOT_REDIRECT="https://next.www.fretlink.com"
227 export HOMEPAGE_API_BLOG_URL="https://blog.fretlink.com"
228 export HOMEPAGE_API_CIO_API_KEY="123"
229 export HOMEPAGE_API_CIO_SITE_ID="321"
230 fi
231
b7b8fe64
IB
232if [ "$APP" = "carrier-directory" ]; then
233 export ADMIN_BASE_URL=$FL_APP_URL
bf4da466 234 export ACCESS_KEY="$(build_macaroon $FL_CARRIER_DIRECTORY_SECRET carrier-directory carrier-directory carrier-directory::read)"
b7b8fe64
IB
235fi
236
237if [ "$APP" = "notifier" ]; then
238 export MAILGUN_API_KEY="dummy"
239 export MAILGUN_DOMAIN="dummy"
240 export TEMPLATES_ASSETS_BASE_URL="http://dummy/"
241 export TRANSPOREON_USER="{{ lookup('passwordstore', 'Travail/Fretlink/Transporeon/ApiTest subkey=Login') }}"
242 export TRANSPOREON_PASSWORD="{{ lookup('passwordstore', 'Travail/Fretlink/Transporeon/ApiTest') }}"
80ed46d4 243 export TRANSPOREON_HOST="{{ lookup('passwordstore', 'Travail/Fretlink/Transporeon/ApiTest subkey=Host') }}"
b7b8fe64
IB
244 export TRANSPOREON_CALLBACK_USER="{{ lookup('passwordstore', 'Travail/Fretlink/Transporeon/NotifierCallbackTest subkey=Login') }}"
245 export TRANSPOREON_CALLBACK_PASSWORD="{{ lookup('passwordstore', 'Travail/Fretlink/Transporeon/NotifierCallbackTest') }}"
246
247 # Used by curl
248 # v2
249 #export MACAROON="$(build_macaroon $FL_NOTIFIER_SECRET notifier notifier external)"
250 # v1
251 export MACAROON="$(build_macaroon --old $FL_NOTIFIER_PRIVATE_KEY notifier notifier external)"
80ed46d4 252 export MONITORING_MACAROON="$(build_macaroon --old $FL_NOTIFIER_PRIVATE_KEY notifier notifier monitoring)"
b7b8fe64
IB
253
254 # To push transporeon cargos to app
90b63575
IB
255 export TRANSPOREON_APP_PUSH_URL="http://localhost:8080/api/transporeon/cargo"
256 export TRANSPOREON_APP_PUSH_MACAROON="$(build_macaroon $FL_APP_SECRET notifier app app::transporeon-cargos-write)"
39894a77
IB
257
258 # AMQP
259 export AMQP_VHOST="notifier"
260 export AMQP_USER="notifier"
261 export AMQP_PASSWORD="notifier"
262 export AMQP_QUEUE="notifier"
263 export AMQP_SERVER="localhost"
264 export AMQP_TLS="false"
b7b8fe64
IB
265fi
266
80ed46d4
IB
267if [ "$APP" = "third-parties" ]; then
268 export PROCTER_GAMBLE_APP_PUSH_MACAROON="$(build_macaroon $FL_APP_SECRET third-parties app app::proctergamble-cargos-write)"
269 export PROCTER_GAMBLE_APP_PUSH_URL="$FL_APPS_SCHEME://$FL_APPS_HOST:$FL_APP_PORT/api/proctergamble/cargo"
270 export TRANSPOREON_APP_PUSH_MACAROON="$(build_macaroon $FL_APP_SECRET third-parties app app::transporeon-cargos-write)"
271 export TRANSPOREON_APP_PUSH_URL="$FL_APPS_SCHEME://$FL_APPS_HOST:$FL_APP_PORT/api/transporeon/cargo"
272 export PROCTER_GAMBLE_CALLBACK_USER="{{ lookup('passwordstore', 'Travail/Fretlink/ProcterGamble/NotifierCallbackTest subkey=Login') }}"
273 export PROCTER_GAMBLE_CALLBACK_PASSWORD="{{ lookup('passwordstore', 'Travail/Fretlink/ProcterGamble/NotifierCallbackTest') }}"
274 export TRANSPOREON_CALLBACK_USER="{{ lookup('passwordstore', 'Travail/Fretlink/Transporeon/NotifierCallbackTest subkey=Login') }}"
275 export TRANSPOREON_CALLBACK_PASSWORD="{{ lookup('passwordstore', 'Travail/Fretlink/Transporeon/NotifierCallbackTest') }}"
276fi
277
b7b8fe64
IB
278if [ "$APP" = "pricer" ]; then
279 export GOOGLE_AUTH_CLIENT_ID="dummy"
280fi
281
282if [ "$APP" = "toolbox" ]; then
283 export AGENT_HOST=$FL_APP_URL
284 export AGENT_PATH="/"
285 export AGENT_MACAROON=$FL_TOOLBOX_AGENT_MACAROON
286fi