Getting started Architecture Concepts Workflow definition Scheduling workflow Operators Command reference Language API -Ruby Modifiez la valeur du paramètre pour chaque environnement avec Digdag (RubyOnRails) Implémentation par lots dans l'environnement RubyOnRails à l'aide de Digdag
Je vais créer un fichier de paramètres d'environnement au format YAML pour Digdag dans l'exemple d'application du didacticiel Ruby on Rails, obtenir la variable d'environnement de la tâche Ruby, la définir dans la variable d'environnement Digdag et vérifier jusqu'à ce que je puisse obtenir la variable d'environnement Digdag à partir d'une autre tâche Ruby. ..
L'exemple de code d'application pour le didacticiel Ruby on Rails n'est pas pertinent pour cette discussion, mais nous allons le charger et ajouter le flux de travail Digdag à ce projet pour une utilisation dans la prochaine implémentation par lots.
https://github.com/yasslab/sample_app
$ digdag init workflow
$ cd workflow
$ digdag run workflow.dig
Si le résultat suivant s'affiche, il n'y a pas de problème avec l'environnement Workflow de Digdag ~
résultat
2020-07-15 22:01:56 +0900 [INFO](0017@[0:default]+workflow+setup): echo>: start 2020-07-15T00:00:00+00:00
start 2020-07-15T00:00:00+00:00
2020-07-15 22:01:57 +0900 [INFO](0017@[0:default]+workflow+disp_current_date): echo>: 2020-07-15 00:00:00 +00:00
2020-07-15 00:00:00 +00:00
2020-07-15 22:01:57 +0900 [INFO](0017@[0:default]+workflow+repeat): for_each>: {order=[first, second, third], animal=[dog, cat]}
2020-07-15 22:01:57 +0900 [INFO](0018@[0:default]+workflow+repeat^sub+for-0=order=0=first&1=animal=1=cat): echo>: first cat
first cat
2020-07-15 22:01:57 +0900 [INFO](0019@[0:default]+workflow+repeat^sub+for-0=order=1=second&1=animal=0=dog): echo>: second dog
second dog
2020-07-15 22:01:58 +0900 [INFO](0020@[0:default]+workflow+repeat^sub+for-0=order=1=second&1=animal=1=cat): echo>: second cat
second cat
2020-07-15 22:01:58 +0900 [INFO](0022@[0:default]+workflow+repeat^sub+for-0=order=2=third&1=animal=1=cat): echo>: third cat
third cat
2020-07-15 22:01:58 +0900 [INFO](0021@[0:default]+workflow+repeat^sub+for-0=order=2=third&1=animal=0=dog): echo>: third dog
third dog
2020-07-15 22:01:58 +0900 [INFO](0017@[0:default]+workflow+repeat^sub+for-0=order=0=first&1=animal=0=dog): echo>: first dog
first dog
2020-07-15 22:01:58 +0900 [INFO](0017@[0:default]+workflow+teardown): echo>: finish 2020-07-15T00:00:00+00:00
finish 2020-07-15T00:00:00+00:00
$ cd workflow
$ mkdir config
$ vi environment.yml
J'ai défini l'url, l'utilisateur, le mot de passe pour chaque développement, mise en scène et production. Parcourez cette variable d'environnement à partir de la tâche Digdag.
environment.yml
development:
url: development.jp
user: development_user
password: development_password
staging:
url: staging.jp
user: staging_user
password: staging_password
production:
url: procuction.jp
user: procuction_user
password: procuction_password
workflow
Sous le dossiertasks
Créer un dossier
Créez-y environment.rb. Cette classe lit les variables d'environnement à partir du fichier YAML et les enregistre dans les variables d'environnement Digdag.
$ cd workflow
$ mkdir tasks
environment.rb
require 'yaml'
class Environment
def load
environment = Digdag.env.params['environment']
environment = case environment
when 'stg'
'staging'
when 'prd'
'production'
else
'development'
end
#Obtenez les variables d'environnement de l'environnement correspondant
config = YAML.load_file('config/environment.yml')[environment]
config.each do |key, value|
#Enregistrer dans la variable d'environnement Digdag
Digdag.env.store(key.to_sym => value)
end
end
end
$ digdag init workflow
Supprimez le code généré automatiquement et ajoutez le code suivant
workflow.dig
timezone: UTC
+load_environment:
rb>: Environment.load
require: 'tasks/environment'
+print_environment_value:
sh>: echo url:${url} user:${user} password:${password}
+print_ruby:
rb>: DigdagEnvironment.show
require: 'tasks/digdag_environment'
■ Tâche load_environment: tâche permettant de définir la variable d'environnement correspondante sur la variable d'environnement Digdag à partir des paramètres d'environnement lorsque Digdag est exécuté. ■ print_environment_value: tâche qui génère des variables d'environnement Digdag à partir d'une tâche shell ■ print_ruby: tâche de sortie des variables d'environnement Digdag à partir de la classe Ruby
Essayez de l'exécuter à partir de l'environnement de développement.
$digdag run workflow.dig -p environment=development --rerun
Résultat d'exécution dans l'environnement de développement
2020-07-15 22:49:35 +0900 [INFO](0017@[0:default]+workflow+load_environment): rb>: Environment.load
2020-07-15 22:49:35 +0900 [INFO](0017@[0:default]+workflow+print_environment_value): sh>: echo url:development.jp user:development_user password:development_password
url:development.jp user:development_user password:development_password
2020-07-15 22:49:36 +0900 [INFO](0017@[0:default]+workflow+print_ruby): rb>: DigdagEnvironment.show
url: development.jp
user: development_user
password: development_password
Vient ensuite l'environnement Staging
$digdag run workflow.dig -p environment=stg --rerun
Résultat d'exécution dans un environnement de préparation
2020-07-15 22:55:33 +0900 [INFO](0017@[0:default]+workflow+load_environment): rb>: Environment.load
2020-07-15 22:55:33 +0900 [INFO](0017@[0:default]+workflow+print_environment_value): sh>: echo url:staging.jp user:staging_user password:staging_password
url:staging.jp user:staging_user password:staging_password
2020-07-15 22:55:34 +0900 [INFO](0017@[0:default]+workflow+print_ruby): rb>: DigdagEnvironment.show
url: staging.jp
user: staging_user
password: staging_password
Enfin l'environnement de production
$digdag run workflow.dig -p environment=prd --rerun
Résultat d'exécution dans l'environnement de production
2020-07-15 22:56:30 +0900 [INFO](0017@[0:default]+workflow+load_environment): rb>: Environment.load
2020-07-15 22:56:30 +0900 [INFO](0017@[0:default]+workflow+print_environment_value): sh>: echo url:procuction.jp user:procuction_user password:procuction_password
url:procuction.jp user:procuction_user password:procuction_password
2020-07-15 22:56:31 +0900 [INFO](0017@[0:default]+workflow+print_ruby): rb>: DigdagEnvironment.show
Maintenant que les paramètres de la variable d'environnement sont terminés, je vais essayer de créer un lot avec les données de l'application du didacticiel RubyOnRails de la prochaine fois.
Recommended Posts