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()
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
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()