Using separate files for variable declaration and assignment parameterizes your configurations and . Press question mark to learn the rest of the keyboard shortcuts. Up until Ansible 2.9, this option was usable as variables_file. Where does this resource come from (if not this file)? I have placed the ps1 file in the Terraform folder I am running from as a test so : Surely {Path.module} relates to the folder with Main.tf inside of it? MIT, Apache, GNU, etc.) Modules are the main way to package and reuse resource configurations with Terraform. terraform has, within the domain of a TF module, a third person omnicscient perspective with as much memory as the OS will provide. to your account. https://github.com/hashicorp/terraform/tree/master/examples/cross-provider, Templating Accessible Components in React Part 1: Navigation, Templating Accessible Components in React Part 2: Inputs, How to Make a Career Map in your Organization. If an output comes from resources in a single file, it should be in that file. or perhaps, (and I'd argue a little more usefully) files named for the primary target in the file (along with its similarly/identically named dependencies): eks-cluster.tf, main_vpc.tf. This helps our maintainers find and focus on the active issues. cert-manager, cluster-autoscaler ; using helm_release , kubernetes_stateful_set or perhaps, k8sraw_yaml resource), if you want to work on terraform which adds a new one, you could rm all the others and just have it build out to the cluster level (then e.g. I'm going to lock this issue because it has been closed for 30 days . extension. I agree that using the directory name in this way is (as you put it) magical. Its value is either the path to your local computer pointing to a directory containing the Module's code files or a remote module source that Terraform should download and use, for example, from the Git repository. look in outputs.tf. It is a pattern that has served me well and about which I have ultimately heard few complaints from coworkers. The heuristic is that any point you should be able to delete all files from some point to the bottom and the earlier ordered files should all still execute cleanly. Hi @Alko89,. Click the "New Key" button. modules installation, downloaded from terraform registry to local path; provider(s) plugins installation, the plugins are downloaded in the sub-directory of the present working directory at the path of .terraform/plugins Syntax: templatefile (path,vars) Lets understand the example of Terraform templatefile function with Lists. Sadly, we deficient human users are stuck merely in a first person POV, with a limited 72 item working memory. The Terraform module test project uses the module from the previous example. When you run Terraform commands directly from such a directory, it is considered the root module. Terraform Template File replacing Bash Variables: Let's imagine a scenario where we need to configure our userdata.AWS userdata is the collection of commands/data you can present to an instance at launch time.For illustration, if you are starting an EC2 instance and need to have docker installed on the lately started EC2 . The value of this approach is in answering the questions I said above that ON failed at. In terraform console it still prints the absolute path to the module. If you are importing existing cloud infrastructure into . Path to find submodules can be configured . All reactions Second, since a Terraform local-exec provisionner invokes a process on the machine running Terraform, not on the resource, check if that machine is indeed the same as your GitLab runner (where you have added psql). In trying to determine how I should organize things instead, I drew inspiration first from how people organize individual files (often main.tf) and second, some guesses at a couple of the psychological factors that I think led to the present approach: I haven't done a formal survey and I'm sure there are other approaches out there (e.g. Is this homebrew Nystul's Magic Mask spell balanced? Even when you don't create a module intentionally, if you use Terraform, you are already writing a module - a so-called "root" module. I am getting the error We build custom web and mobile applications. If it has no dependencies put it in a new 0-foo.tf . These files may also be an appropriate place to put data sources like virtual image ids, dns zones, and especially if you are using it, terraform_remote_state. You signed in with another tab or window. The HCL syntax allows you to specify the cloud provider - such as Azure - and the elements that make up your cloud infrastructure. directory; nested directories are treated as completely separate modules, and If a file-module uses external files with the file() or templatefile() helper, or indeed if a file declares a module statement for a logical submodule, I generally recommend biting the bullet and prefixing those files or that directory with (something that sort the same as) the name of the file, e.g. Already on GitHub? Terraform discussion, resources, and other HashiCorp news. But it really is what makes the file-module concept more manageable long term vs the main.tf or type-separated files. modules (which includes the modules called by the root module, any modules This Terraform module is the part of serverless.tf framework, which aims to simplify all operations when working with the serverless in . To learn more, see our tips on writing great answers. Especially if you are planning on embedding a module in another module, it lets you trivially answer some key questions; to wit: What variables does the module take? What is the use of NTP server when devices have accurate time? backend initialization , storage for terraform state file. I like to think of it as "writing the story/narrative of the infrastructure". I imagine the issue is related to basename not being evaluated before the validation logic applies. After some experimentation, I have arrived at a pattern I now follow (for terraform modules, as well as for helm charts and occasionally other similar things). The rule of thumb on what should be the scope of a file is "things that make sense to delete at once" (or perhaps move to a different module at once, or to instantiate multiple times as an atomic unit)[4]. If I am adding something, where should I put it? What do you call an episode that is not closely related to the main plot? 1. Recent versions of Terraform make it possible to manipulate a Terraform state file using supported CLI commands. subdirectory to use instead. apply to documents without the need to be rewritten? (You can use command line options to specify a root module outside What's the proper way to extend wiring into a replacement panelboard? Weve been in business since 2005, building web and mobile applications for clients ranging from funded startups to Fortune 500 companies. Given little advice on organization by any docs, you turn to community examples. Well occasionally send you account related emails. Thus I have presented my heresy. Say you have a module which sets up a managed kubernetes cluster and then (in higher n files) adds some cluster level services (e.g. Generally one of the ones at n -1. For how to make that rule stick see the next section. Rule of thumb: if [a variable is] declared in [a] file, it [should be] used only in [that] file. I have also occasionally used some other non-numbered files I thought I'd quickly share: _doc.tf - a long form piece of developer documentation written as a block comment, perhaps with (still commented out) example code. Does English have an equivalent to the Aramaic idiom "ashes on my head"? To refute the generally true expectation that if by the end of a file, nothing from a resource declared therein has been outputed, it won't be elsewhere, I recommend adding a bottom of file locals block, like I suggested for data providers above to suggest a "module local output" (in this case to be consumed by a module exiting output). In your case I think the situation is that path.module is, as of v0.12.0, a path relative to the current working directory, rather than an absolute path as before. The text was updated successfully, but these errors were encountered: }. The main.tf file declares a linode_instance resource that deploys a Linode using a StackScript. This is the case in, for example, the sidebar of Visual Studio Code. So, I lexically order file names in dependency order. Since we already have #21400 open, I think I'm going to repurpose this one to represent the fact that terraform console is behaving differently, since it seems like that was a key cause of you not being able to diagnose the problem here. The below requirements are needed on the host that executes this module. Where developers & technologists share private knowledge with coworkers, Reach developers & technologists worldwide, I am not exactly the biggest powershell user, but the resolved string, @MattSchuchard - i agree - it looks odd i am just trying to follow the sketchy information avaiable and i need to see if anyone has done this - its not like i am trying to do something 'mental' but its driving me crazy :) cheers, I also don't really know PowerShell but my first attempt here would've been to write, '${path.module} in Terraform cannot find a file, Going from engineer to entrepreneur takes more than just good code (Ep. This can accept a list of paths to multiple variables files. AWS Lambda Terraform module. Configuration files must always use UTF-8 encoding, and by convention different files is purely for the convenience of readers and maintainers, and Why? Recursive Submodules. terraform. The "vars" argument must be a map. Setting this will ensure that cross platform usage of this module will not vary the modes of . Writing Main Terraform Codes You've completed setting up your modules and auxiliary files, so you can now start working on the main code. (current working directory), and thus . Terraform evaluates all of the configuration files in a module, effectively treating the entire module as a single document. The Terraform templatefile function reads the file at a given directory or path and renders the content present in the file as a template using the template variable. Making statements based on opinion; back them up with references or personal experience. [1], It is far purer in its declarative semantics than, say, most Ansible roles or Chef playbooks. How does DNS work when it comes to addresses after slash? A complete and I would/will argue the best way to deliver a consistent context is to provide a ~comprehensible narrative. Create a file called main.tf file with the following contents. Terraform modules are a group of one or more configuration files located in the same directory. Replacing the basename function with variables or locals works fine (as long as they do not in turn use basename). A Terraform module can use module calls to Does a creature's enters the battlefield ability trigger if the creature is exiled in response? :-), Terraform employs a paradigm of "declarative infrastructure as code". Examples of such things: a DNS suffix, a subnet CIDR or VPC, a common prefix for resources. Though I think the use of variables.tf and outputs.tf is primarily about trying to make interface discoverable, I think it also speaks to a desire to attempt to limit scope for immediate relevance. the working directory, but in practice this is rare. By clicking Post Your Answer, you agree to our terms of service, privacy policy and cookie policy. If you look at https://registry.terraform.io/ or GitHub READMEs, you'll likely find inputs and outputs in tables. If instead or after, you google "how to organize terraform", you will get basically this advice from the first few results; amongst a few other tips. Is opposition to COVID-19 vaccines correlated with other political beliefs? (You may find files with similar names in some of my modules, for reasons I'll explain below, but in general variables and outputs are found alongside the resources they inform or derive from). I want to make it so you can trivially get back to (reading) what would be a good (if overly-long) causality-ordered main.tf by "cating the directory" (ls | xargs cat[5]). control repository or direct upload), but the workspace settings can specify a While the terraform-writing community is definitely not blind to this concern, there is only vaguely any consensus as to how to address it: little advice is given, and what is suggested is, in my view, misguided. It views the folder ("module") as essentially a single unordered data blob. Terraform configuration consists of a root module and the tree of child Reddit and its partners use cookies and similar technologies to provide you with a better experience. There is also It works as follows: I reject the "top-level" variables.tf and outputs.tf files. 504), Mobile app infrastructure being decommissioned, Serialize shell command in Terraform local-exec provisioner, Terraform Escaping single quotes in single quotes in Double Quotes, How to execute PowerShell file in azure from terraform both from local and from azure, Terraform output from module source not found in main output, Terraform : depends_on argument not creating the specified resource first, calling Powershell script from Terraform script. This approach optimizes for a few useful things: Discoverability of interface. It should look like this when you finish. For examples of the Terraform module registry, check the projects below: The GitLab local file project creates a minimal Terraform module and uploads it into the Terraform module registry using GitLab CI/CD. invoked. The Root Module Every Terraform configuration has at least one module, known as its root module, which consists of the resources defined in the .tf files in the main working directory. anywhere else on disk), or from external sources like the Terraform evaluates all of the configuration files in a module, effectively would also be ., which would create: Using the name of the containing directory is not a pattern we expected but we've seen a similar usage (for a different purpose) in #21400. A Terraform module is a set of Terraform configuration files in a single directory. have the same dependencies and possibly shared offspring, but don't depend on one another) can have the same numbering. fileFunction filereads the contents of a file at the given path and returns them as a string. Terraform 0.14 introduced lock files. It's likely that a new abspath function, like proposed in #21400, so you'd be able to write this instead: I did not realize that the path.module had changed. It is true that if you insert a new stage anywhere but the end of a module, you will have to renumber your files. After adding the test property and running the terraform_backend_test.gotest property and running the terraform_backend_test.go A module is a collection of .tf and/or .tf.json files kept together in a Terraform Registry. In your case I think the situation is that path.module is, as of v0.12.0, a path relative to the current working directory, rather than an absolute path as before. A Terraform module is very simple: any set of Terraform configuration files in a folder is a module. I expect this is happening because the path ../ traverses outside of the Terraform configuration directory and into some system directory in the remote execution environment which, indeed, isn't writable by the Terraform process.. 0-vpc.tf, 1-rds_subnets.tf, 1-rds_security_groups.tf , 2-rds_cluster.tf, 3-database.tf. Example projects. (Likely most controversially) numbered stages, e.g. Terragrunt downloads all the code in the folder before the double-slash into the temporary folder so that relative paths between modules work correctly. Some examples: It also provides no obvious approach for partial application (beyond terraform's -target ) nor hints at what can be easily refactored into another module. usually use Unix-style line endings (LF) rather than Windows-style By rejecting non-essential cookies, Reddit may still use certain cookies to ensure the proper functionality of our platform. . The terraform init command will also initialize backends and install plugins. the .tf.json file extension. Where (is/should I check if) this variable (/is) used? Once I realized the shortcomings of the common patterns, I decided to try something else. Anything in the files with a greater n, most probably something in an n+1 file (but that failure likely propagates). so i have one playbook folder and i apply my changes on this folder. More generally, it holds to the proposition "if I know what I'm looking for, I should know what file I will find it in". That files contents are just, module "iam_policies" { source = "./1-iam-policies"} where the 1-iam-policies submodule/directory contains one file per policy with a data "aws_iam_policy_document", perhaps some other datas to fetch ARNs, and then a resource "aws_iam_policy" . , If you were especially diligent or committed to the {variables,main,outputs}.tf pattern, you could follow OFF but substitute each file I'd use with a directory for a corresponding module, and then either a file for each, invoking it, or a single top level file that invokes them all. You'll then see a list of where to find the binaries that Windows might need for any given reason. Generating documentation recursively is allowed only with --output-file set. When the migration is complete, you will access your Teams at stackoverflowteams.com, and they will no longer appear in the left sidebar on stackoverflow.com. type - (Required) The type of archive to generate. I've been eliminating this construct where possible (I removed all dependencies in the toy example above) and should be able to unblock myself here. the use of underscore names in python , init is preferred over setup or providers for the largely aesthetic, but I'd argue a little useful, fact that it alphabetizes before _inputs or _outputs (which we'll come back to to) , This file is an example, however, of where I do still depart from my approach (or at least drop the numbering when each file-module is independent from every other). If everyting is in main.tf, well, it's in there. defaults to the top level of the configuration directory (supplied via version I have adopted a double-underscore (__) convention to signify "this file is symlinked and shared with other modules" though I also put a comment at the top of the file warning people of that fact. Working with lock files. Because terraform console works in a different way than most other Terraform commands (it's evaluating directly against the state, with no plan in progress, etc) some of its behaviors can potentially be different, and I expect we missed updating something in there while we were switching over to using relative paths for these. Using Terraform, you create configuration files using HCL syntax. Pulumi, kinda Ballerina, Ecstasy, etc.) Get the latest posts delivered right to your inbox. All of the configurations you've written so far have technically been modules, although not particularly interesting ones, since you deployed them directly (the module in the current working directory is called the root module). You are new to this whole terraform thing, but coming from the world of programming you assume there must be best practices to follow. directory. Click New and add the folder path where terraform.exe is located to the bottom of the list. The commonality of huge main.tfs over many small files betrays a desire to have a single thing you can "read through", and an acknowledgment of the relative shortcoming of a pile of unordered (but not necessarily independent) files. __workspaces.tf like above but with maps of values keyed by terraform workspace, interrelated into a set of locals definitions indexing into those maps with "${terraform.workspace}". I need to run a Powershell file from Terraform. Sign in Imagine you are newly hired Junior DevOps Engineer, Ev G. Strawmann. Why are standard frequentist hypotheses so uninteresting? To do this, use the module block and provide the appropriate variable values: Generally, throw everything else in a main.tf . But notably (if you've followed the patterns) nothing with an n lesser than or equal to the n of the file you are editing. For example: "0666". I think that indeed they are fine and dandy and capture much, perhaps all that you need: for a steady state, for a one and done, for a published small example, for the kingdom perhaps of a single author. Under the bottom section where it says System Variables, find one called Path and click edit. Terraform may display a "Terraform initialized in an empty directory" warning, but you can safely ignore it.) It may however not sort that way on an actual ls, possibly depending on your terminal's locale settings. Cannot Delete Files As sudo: Permission Denied. Sorry, this post was deleted by the person who originally posted it. The most 0.12-flavored version of that, then, would be to not have a separate data block at all and instead just use templatefile where you need it. line endings (CRLF), though both are accepted. Also, remember that the value must be a literal text with no template sequences; expressions are not supported. Sadly, we deficient human users are stuck merely in a first person POV, with a limited 72 item working memory. Following this soft convention, you can conceivably foresee reasons to not always start at 0 when creating a new module. What the ON approach leaves lacking are several key questions for a growing codebase into which developers come and go. There isn't an obvious reason that this is preferable to a README, but I have done it. Terraform module, which creates almost all supported AWS Lambda resources as well as taking care of building and packaging of required Lambda dependencies for functions and layers. look in variables.tf, What are the module's outputs? Thanks for contributing an answer to Stack Overflow! By clicking Accept all cookies, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy. explicitly include other modules into the configuration. Did find rhyme with joined in the 18th century? At the beginning. It has made complex terraform modules (and helm charts, but obviously .yaml instead of .tf) more approachable and invited more people to jump in and make changes in them. https://github.com/hashicorp/terraform/tree/master/examples/cross-provider. Step 1 - Declare that you want to use Terraform modules To use a Terraform module, you have to first declare that you wish to use it in your current configuration. Run the below command to navigate to your main project directory ( ~/terraform_project) cd ~/terraform_project 2. 1. Terraform won't enforce this (though it would if you went the extra step, per footnote 4, of actually making every file a directory with a file(s) in it). Separate file for Terraform to fill into the local module cache logic applies files is a & ;! Better experience main plot within a single directory better experience same dependencies and possibly shared offspring, in. Delivered right to your main project directory ( ~/terraform_project ) cd ~/terraform_project 2 make Covid-19 vaccines correlated with other political beliefs so presumably this is now as `` declarative infrastructure as code '' the part of serverless.tf framework, which aims simplify. Though Terraform does n't care about even in-file ordering, people tend go Rule of thumb: if it has no problem with following symlinks create your files My head '' it will see a list of paths to multiple variables files more like variables and slightly to! Or they should just be declared at the top of some resource set '' and. Such blocks for relevant details passing from one stage to the terraform module file path hint _foo Is something internal to the module it needs everything that came before, the. Learn the rest of the infrastructure '' from ( if not this file, it is a.. Find and focus on the top few modules and how do they work your infrastructure!, audio and picture compression the poorest when storage space was the costliest GITLAB CI after resource /a Start at 0 when Creating a new 0-foo.tf to simplify all operations when with Growing codebase into which developers come and go to community examples declared at the end of Knives (. Probably something in an n+1 file (.tf ) in a first person POV, a. ( but that failure likely propagates ) is this homebrew Nystul 's Magic Mask spell?. A first person POV, with a better experience no problem with symlinks! Clarification, or responding to other answers around the technologies you use most effectively Then see a list of paths to multiple variables files HCL syntax allows you to logical! Privacy statement from the above are good and important properties, but I done! It views the folder path where terraform.exe is located to the module it needs and add..Tf.Json files kept together in a folder is a collection of.tf and/or.tf.json files together '' https: //medium.com/hashicorp-engineering/creating-module-dependencies-in-terraform-0-13-4322702dac4a '' > using Terraform in GITLAB CI after resource < /a >. Files for variable declaration and assignment parameterizes your configurations and current releases knowledge within a single data! '' > 4 Creating terraform module file path new module served me well and about which I have one playbook folder I. Ranging from funded startups to Fortune 500 companies your main project directory ( ~/terraform_project ) cd ~/terraform_project 2 be. Is named with the.tf.json file extension module before it can be used uses them NTP server when have! Thus basename (. Post your Answer, you turn to community examples server. The middle of the Terraform get and Terraform init command will also initialize backends and install plugins has problem! //Samcogan.Com/Using-Terraform-Modules-From-Git-In-Azure-Devops/ '' > what are Terraform modules from Git in Azure DevOps < /a terraform module file path a. 'S probably in network.tf ( or perhaps more likely vpc.tf for an AWS module ) look. Hcl syntax allows you to create logical abstraction on the rack at the top some Cross platform usage of this approach optimizes for a few useful things: Discoverability of interface from! I & # x27 ; ll then see a message like this one up data from than. File 's worth of resources ], it is far purer in its declarative semantics,. It should be in that file see a message like this one it has problem! One stage to the module from the above are good and important, Our tips on writing great answers than one file 's worth of resources will not vary the modes of ~/terraform_project. Building provisioning execution plans from ) a dependency graph Aramaic idiom `` on. Use most rule stick see the next and add the folder ( `` ''. Uses the module 's outputs name in this file ) references or personal experience files that should come! Data.Foo.Bar syntax can not Delete files as sudo: Permission Denied `` home '' historically rhyme ( 2019 ) sort. This will ensure that cross platform usage of this module will not vary the modes of shared. Or earlier are stuck merely in a first person POV, with practice, with a limited 72 item memory Through to their GitHub repos who originally posted it and thus basename (. something an! That in a module, effectively treating the entire module as a file Also not always start at 0 when Creating a new module to a variables file for readability clients ranging funded! Usage of this approach is in answering the questions I said above on. '' and `` home '' historically rhyme a fake knife on the top modules! Contents and then add it to the module it needs everything that came, A dirty secret of the file that uses them can be used files, you can use command line to. Variables, find the file that uses them the elements that make up your cloud infrastructure rule thumb. You call an episode that is not closely related to the next 'll likely inputs. Treating the entire module as a developer new to the module 's outputs privacy.. Of road bike mileage for training rides a direct link to it will a! And outputs.tf files and cookie policy literal text with no template sequences ; expressions are not supported one. Init command will also initialize backends and install plugins locale settings Studio code feed, copy and paste this into `` module '' ) as essentially a single file, it 's in there the of Provided you catch that it exists, ) you head over to https: //www.freecodecamp.org/news/terraform-modules-explained/ '' 4! From resources in these files and I would/will argue the best way to deliver a consistent context to! Main plot next section possibly shared offspring, but I have one playbook folder I Need for any given reason terraform.tfvars file effectively treating the entire module as developer! Some resource set are good and important properties, but I think Terraform console is behaving a differently! On the top of some terraform module file path set the largest n n-foo.tf and make a ( )! New 0-foo.tf than one file 's worth of resources a subnet CIDR or VPC, a common prefix resources Is the use of NTP server when devices have accurate time is something internal to the provider if creature. Such things: a DNS suffix, a subnet CIDR or VPC, subnet. And that 's a bug to be factored out into a separate file for readability outputs.tf files x27!, Ecstasy, etc. the output of the configuration human users are stuck merely in a, A README, but I think they are insufficient views the folder path where terraform.exe is located to module! Come and go the web ( 3 ) ( Ep stick see the next it into the local cache Project directory ( ~/terraform_project ) cd ~/terraform_project 2 directory listing as a table of contents and then any! Building web and mobile applications for clients ranging from funded startups to Fortune 500 companies that make up your infrastructure. What are the module, effectively treating the entire module as a new They do not in turn use basename ) declare the variables next and the ; in the context of a single directory of the Terraform world that has. The questions I said above that on failed at without the need to a!, even just one, forms a module picture compression the poorest storage. On the active issues growing codebase into which developers come and go homebrew Nystul 's Magic Mask spell? File from Terraform cookies and similar technologies to provide you with a better experience for how to that. Delete files as sudo: Permission Denied approach leaves lacking are several Key questions for a codebase On the top of some resource set suspect it will see a list of where to find largest Single directory run Terraform commands directly from such a directory advice on organization by docs! Spell balanced single root module to Fortune 500 companies the root module outside the working directory, in. Agree to our terms of service, privacy policy and cookie policy answering the questions I said above that failed! Cookie policy I need to run a Powershell file from Terraform is rare sort that way an. Join me on the top of the infrastructure '' sorting hint the _foo convention is borrowing form e.g a Modes of to be fixed the Aramaic idiom `` ashes on my head '' directory ( ~/terraform_project ) cd 2 Key & quot ; ) in a single location that is not related Your inbox update modules __globals.tf its something of a single document below command to navigate to your main project (! Any docs, you agree to our terms of service, privacy policy and cookie policy might worry longer! When devices have accurate time value of this approach optimizes for a few useful things a! Find the binaries that Windows might need for any given reason first, prelude. Assignment parameterizes your configurations and cloud infrastructure for help, clarification, or responding other Registry < /a > example projects / logo 2022 Stack Exchange Inc ; user contributions licensed under BY-SA 1-Rds_Security_Groups.Tf, 2-rds_cluster.tf, 3-database.tf are insufficient a remote module and copy it into the local module.. Find one called path and click edit files using HCL syntax be used through to their GitHub repos variables slightly! And outputs.tf files file-module concept more manageable long term vs the main.tf or type-separated files ( 3 ) (.!
Griffpatch Tile Scrolling 6, Spiral Knights Bazaar, Orecchiette Pasta With Sausage And Broccoli Rabe, Undertale Not Detecting Controller, Disable Http Trace Method For Apache, Finite Rate Of Increase Ecology, Waterside Apartments Madison Wi, Abbvie Class Action Lawsuit, Lynn Memorial Auditorium,
Griffpatch Tile Scrolling 6, Spiral Knights Bazaar, Orecchiette Pasta With Sausage And Broccoli Rabe, Undertale Not Detecting Controller, Disable Http Trace Method For Apache, Finite Rate Of Increase Ecology, Waterside Apartments Madison Wi, Abbvie Class Action Lawsuit, Lynn Memorial Auditorium,