Rotaie - Fornire il codice della licenza Plugin Sulla base di nome host
-
11-09-2019 - |
Domanda
Sto usando Nuovo Relic per Rails, ma solo bisogno di New Relic per monitorare il mio ambiente di una produzione. Tuttavia, ho un server di gestione temporanea che gestisce anche in modalità di produzione. Nuovo Relic rileva sia come esempi prod operativo della mia applicazione (come dovrebbe), ma io non voglio avere a pagare per il monitoraggio di due casi in cui solo voglio tenere d'occhio quello.
Nuovo Relic accetta una variabile di ambiente per la chiave di licenza:
license_key: <%= ENV['NEWRELIC_ACCOUNT_KEY'] %>
E 'possibile rilevare il nome host nel file di ambiente (vale a dire config / ambienti / production.rb) in modo che posso definire questa variabile d'ambiente in modo dinamico?
Entrambi gli ambienti vengono distribuiti dallo stesso repository Git, stessa base di codice sorgente, quindi non posso davvero cambiare nel codice per ogni Deploy - sarebbe meglio essere in grado di definire la variabile d'ambiente in modo dinamico in qualche modo
Ogni pensiero sarebbe apprezzato! Grazie!
Soluzione
L'agente di New Relic Rubino analizzerà il file di configurazione newrelic.yml
come ERB prima analisi come YAML. Pertanto, è possibile fare un sacco di trucchetti, come ad esempio:
production:
license_key: <%= Socket.gethostname == 'mission-critical.example.com' ? 'PAID_ACCOUNT_LICENSE_KEY' : 'FREE_LITE_ACCOUNT_LICENSE_KEY' %>
Questa analisi tutto accade in fase di avvio app.
Se il RAILS_ENV erano diversi da 'produzione' in quel server di gestione temporanea che viene eseguito "in modalità di produzione", allora si potrebbe utilizzare sezioni ambiente come suggerisce Steve Graham.
Altri suggerimenti
Avete creato un ambiente separato per la messa in scena? vale a dire sviluppo, test, produzione, e messa in scena? Vedi qui per le istruzioni ...
Dopo aver fatto questo, si può specificare il comportamento per tale ambiente in config/newrelic.yml
common: &default_settings
license_key: 'PASTE_YOUR_KEY_HERE'
…
development:
enabled: false
…
test:
enabled: false
…
production:
enabled: true
…
staging:
enabled: false
…
ecc, ecc
Il nome host è disponibile solo in un oggetto di richiesta, quindi no, non è disponibile quando le rotaie costruisce l'ambiente.
Vorrei solo impostare il proprio script deploy messa in scena da copiare production.rb per staging.rb e avviare l'applicazione in "messa in scena". Un'altra tecnica potrebbe essere quella di non tenere il newrelic.yml nel vostro scm e invece copiarlo, o collegarlo, da qualche altra parte per la directory deploy corrente.