示例#1
0
 def __init__(self,
              filename='deployfish.yml',
              env_file=None,
              import_env=False,
              interpolate=True,
              tfe_token=None,
              use_aws_section=True):
     self.__raw = self.load_config(filename)
     # Setup our boto3_session here because we might need it when retrieving
     # the terraform file from S3
     if use_aws_section:
         build_boto3_session(self)
     else:
         build_boto3_session()
     self.import_env = import_env
     self.env_file = env_file
     self.tfe_token = tfe_token
     self.environ = None
     self.terraform = None
     if interpolate:
         if 'terraform' in self.__raw:
             self.replace_terraform()
             if 'workspace' in self.__raw['terraform']:
                 self.terraform = TerraformE(yml=self.__raw['terraform'],
                                             api_token=self.tfe_token)
             else:
                 self.terraform = Terraform(yml=self.__raw['terraform'])
         else:
             self.terraform = None
         self.replace()
示例#2
0
 def reload_terraform(self, replacers):
     """
     Since the statefile URL, when using ``terraform workspace``, can be different by environment/service,
     we may need to reload the terraform file for each new service.
     """
     if 'terraform' in self.__raw:
         if 'workspace' in self.__raw['terraform']:
             workspace = self.__raw['terraform']['workspace'].format(
                 **replacers)
             organization = self.__raw['terraform']['organization'].format(
                 **replacers)
             if (not self.terraform
                     or (self.terraform
                         and self.terraform.workspace != workspace)):
                 self.terraform = TerraformE(
                     workspace,
                     organization,
                     self.__raw['terraform']['lookups'],
                     api_token=self.tfe_token)
         else:
             state_file_url = self.__raw['terraform']['statefile'].format(
                 **replacers)
             if (not self.terraform or
                 (self.terraform
                  and self.terraform.state_file_url != state_file_url)):
                 self.terraform = Terraform(state_file_url,
                                            yml=self.__raw['terraform'])
     else:
         self.terraform = None
示例#3
0
 def __init__(self, filename='deployfish.yml', env_file=None, import_env=False, interpolate=True, tfe_token=None):
     self.__raw = self.load_config(filename)
     self.import_env = import_env
     self.env_file = env_file
     self.environ = None
     self.tfe_token = tfe_token
     self.terraform = None
     if interpolate:
         if 'terraform' in self.__raw:
             self.replace_terraform()
             if 'workspace' in self.__raw['terraform']:
                 self.terraform = TerraformE(yml=self.__raw['terraform'], api_token=self.tfe_token)
             else:
                 self.terraform = Terraform(yml=self.__raw['terraform'])
         else:
             self.terraform = None
         self.replace()