Index
A
- accidental complexity, Why It Takes So Long to Build Production-Grade Infrastructure
- actions, scheduled, Module Outputs, If-statements with the count parameter
- ad hoc scripts (in IaC), Ad Hoc Scripts
- agent versus agentless mode, Agent Versus Agentless
- alarms (CloudWatch), If-statements with the count parameter
- alb_dns_name output variable, Deploying a Load Balancer, Deploying a Load Balancer
- Amazon ECS, Orchestration Tools
- Amazon Machine Image (AMI), Server Templating Tools, Provisioning Tools, Deploy a Single Server
- Amazon Resource Name (ARN), Shared Storage for State Files
- Amazon S3, remote state storage in, Shared Storage for State Files-Shared Storage for State Files
- Amazon Web Services (AWS)
- Ansible, Configuration Management Versus Provisioning
- any (type), Deploy a Configurable Web Server
- APIs of cloud providers, asynchronous and eventually consistent, Eventual Consistency Is Consistent…Eventually
- application code, workflow for deploying, A Workflow for Deploying Application Code-Promote artifacts across environments, Putting It All Together
- Application Load Balancer (ALB), Deploying a Load Balancer-Deploying a Load Balancer
- array lookup syntax, using count parameter with, Loops with the count Parameter
- asynchronous APIs of cloud providers, Eventual Consistency Is Consistent…Eventually
- Atlantis, Deployment tooling
- attributes (resources), Deploy a Single Web Server
- authentication
- Auto Scaling Group (ASG), Deploying a Cluster of Web Servers
- auto scaling schedules, creating for some module users and not others, If-statements with the count parameter
- automation of software delivery process, The Rise of DevOps
- availability zones (AWS), Deploy a Single Server, Deploying a Cluster of Web Servers
- aws-nuke tool, Cleaning Up After Tests
- AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables, Setting Up Your AWS Account, Install Terraform
- aws_autoscaling_group resource, Zero-Downtime Deployment
- aws_autoscaling_schedule resource, Module Outputs
- aws_cloudwatch_metric_alarm resource, If-statements with the count parameter
- aws_iam_user_policy_attachment resource, If-else-statements with the count parameter
- aws_instance resource, Deploy a Single Server
- aws_launch_configuration resource, Deploying a Cluster of Web Servers, Module Inputs
- aws_lb resource
- aws_lb_listener resource, Deploying a Load Balancer
- aws_lb_listener_rule resource, Deploying a Load Balancer
- aws_lb_target_group resource, Deploying a Load Balancer
- aws_lb_target_group_attachment resource, Deploying a Load Balancer
- aws_s3_bucket resource, Shared Storage for State Files
- aws_security_group resource, Deploy a Single Web Server
- aws_security_group_rule resource, Inline Blocks
- aws_subnet_ids data source, Deploying a Cluster of Web Servers, Deploying a Load Balancer
- aws_vpc data source, Deploying a Cluster of Web Servers
C
- CAMS (culture, automation, measurement, and sharing), The Rise of DevOps
- canary deployment, Deployment strategies
- Chef, Configuration Management Tools
- CIDR blocks, Deploy a Single Web Server
- Classic Load Balancer (CLB), Deploying a Load Balancer
- cloud
- cloud-nuke tool, Cleaning Up After Tests
- CloudWatch
- clusters (Kubernetes), deploying, Orchestration Tools
- code
- code examples from this book, Getting Started with Terraform
- communities for IaC tools, Large Community Versus Small Community
- composable modules, Composable Modules-Composable Modules
- conditional expressions, If-statements with the count parameter
- conditionals, Loops with the for String Directive, Conditionals-Zero-Downtime Deployment
- configuration drift, The Rise of DevOps, Mutable Infrastructure Versus Immutable Infrastructure
- configuration management tools, Configuration Management Tools-Configuration Management Tools
- configuration management vs. provisioning, Configuration Management Versus Provisioning
- configurations, How Terraform Works
- consistency
- Consul, reusable modules for running, Composable Modules
- container engines, Server Templating Tools
- containers, Server Templating Tools
- continuous integration (CI) servers, Run Automated Tests
- CoreOS rkt, Server Templating Tools
- count parameter
- CPU credits (low), alarm for, If-statements with the count parameter
- CPU utilization alarms, If-statements with the count parameter
- create_before_destroy lifecycle setting, Deploying a Cluster of Web Servers, Refactoring Can Be Tricky
- creation-time provisioners, Provisioners
- culture, automation, measurement, and sharing (CAMS), The Rise of DevOps
- curl utility
D
- data sources, Deploying a Cluster of Web Servers-Deploying a Load Balancer
- declarative programming
- Default VPC (AWS account), Setting Up Your AWS Account
- dependencies
- deployments
- destroy command (see terraform destroy command)
- destroy-time provisioners, Provisioners
- DevOps, Who Should Read This Book
- distribution, IaC configuration management, Configuration Management Tools
- DNS
- Docker, Server Templating Tools
- Docker Engine, Server Templating Tools
- Docker Swarm, Orchestration Tools
- documentation
- Don't Repeat Yourself (DRY), Deploy a Configurable Web Server
- DOT (graph description language), Deploy a Single Web Server
- DSLs (domain-specific languages), Property testing
- DynamoDB table, creating for locking in Terraform, Shared Storage for State Files
E
- EC2 Instances
- editors, Deploy a Single Server
- Elastic Load Balancer (ELB), Deploying a Load Balancer
- encryption
- end-to-end tests, Automated Tests, End-to-End Tests-End-to-End Tests
- environments
- errors
- essential complexity, Why It Takes So Long to Build Production-Grade Infrastructure
- eventual consistency, Eventual Consistency Is Consistent…Eventually
- examples folder, Testable Modules
- expressions, Deploy a Single Web Server
- external data sources, External data source
- externalized files, The terraform_remote_state Data Source
F
- false incrementalism, Work Incrementally
- feature toggles, Deployment strategies
- file function, The terraform_remote_state Data Source, File Paths
- file layout
- file paths, modules and, File Paths
- for expressions
- for string directive, loops with, Loops with the for String Directive
- format function, If-statements with the count parameter
- for_each expressions
- function composition, Composable Modules
- functions
H
- HashiCorp configuration language (HCL), Deploy a Single Server
- HashiCorp Consul, reusable modules for, Composable Modules
- HashiCorp Sentinel, Static analysis
- HashiCorp Vault, Composable Modules
- health_check_type setting, Deploying a Load Balancer
- hello-world-app module, Composable Modules
- heredocs, Deploy a Single Web Server
- Hofstadter's law, Why It Takes So Long to Build Production-Grade Infrastructure
- HTTP server, deploying, Deploy a Single Web Server
- hypervisors, Server Templating Tools
I
- IaC (see infrastructure as code)
- IAM (Identity and Access Management) service
- idempotence
- identifiers
- Identity and Access Management service (see IAM service)
- if string directive, conditionals with, Conditionals with the if String Directive
- if-else statements, simulating with count parameter, If-else-statements with the count parameter
- if-statements, simulating with count parameter, If-statements with the count parameter-If-statements with the count parameter
- images
- immutability
- implicit dependencies, Deploy a Single Web Server
- incrementalism, Work Incrementally
- infrastructure
- infrastructure as code (IaC), What Is Infrastructure as Code?-Provisioning Tools
- inline blocks
- input variables, Deploy a Configurable Web Server-Deploy a Configurable Web Server
- instance_type parameter, Module Inputs
- integration tests, Automated Tests, Integration Tests-End-to-End Tests
- interpolation, Deploy a Configurable Web Server
- IP addresses
L
- large modules, downsides of, Small Modules
- lazy evaluation for conditional results, If-else-statements with the count parameter
- lead times, reduction of, The Rise of DevOps
- length function, Loops with the count Parameter
- lifecycle settings, Deploying a Cluster of Web Servers, Shared Storage for State Files, Zero-Downtime Deployment
- lint tool for Terraform (tflint), Static analysis
- list comprehension (Python), Loops with for Expressions
- listener rules (ALB load balancer), Deploying a Load Balancer
- listeners (ALB load balancer), Deploying a Load Balancer
- lists
- literals, Deploy a Single Web Server
- live repository, Module Versioning, Live repo and modules repo
- load balancers
- local references, Module Locals
- local-exec provisioners, Provisioners
- locking
- loops, Terraform Tips and Tricks: Loops, If-Statements, Deployment, and Gotchas-Conditionals
M
- MAJOR.MINOR.PATCH versioning scheme, Module Versioning
- managed IAM policies, Setting Up Your AWS Account
- maps
- Marathon/Mesos, Orchestration Tools
- master branch, The Golden Rule of Terraform
- master vs. masterless servers, Master Versus Masterless
- maturity of IaC tools, Mature Versus Cutting Edge
- merging application code, Merge and Release
- merging infrastructure code, Merge and Release
- mocks, Automated Tests
- modules (Terraform), How to Create Reusable Infrastructure with Terraform Modules-Conclusion
- backend configuration and, Limitations with Terraform’s Backends
- code reuse in different environments, How to Create Reusable Infrastructure with Terraform Modules
- for production-grade infrastructure, Production-Grade Infrastructure Modules-External data source
- gotchas, Module Gotchas-Inline Blocks
- local values, Module Locals-Module Locals
- module basics, Module Basics-Module Basics
- module inputs, Module Inputs-Module Locals
- using count and for_each in module configuration, not supported, You cannot use count or for_each within a module configuration
- versioning, Module Versioning-Module Versioning
- modules folder, Testable Modules
- modules repository, Module Versioning, Live repo and modules repo, Promote artifacts across environments
P
- Packer, Server Templating Tools
- parallel, running tests in, Running tests in parallel-Running tests in parallel
- path references, File Paths
- plans
- Pods (Kubernetes), Orchestration Tools
- port numbers, Deploy a Single Web Server
- private subnets, Deploy a Single Web Server
- procedural vs. declarative programming style, Procedural Language Versus Declarative Language-Master Versus Masterless
- production-grade infrastructure, Production-Grade Terraform Code-Conclusion
- programming languages
- promoting artifacts across environments, Promote artifacts across environments, Promote artifacts across environments-Promote artifacts across environments, Putting It All Together
- property testing, Property testing
- providers, Deploy a Single Server
- provisioners, Provisioners-External data source
- provisioning tools, Provisioning Tools-Provisioning Tools
- provisioning, configuration management vs., Configuration Management Versus Provisioning
- public subnets, Deploy a Single Web Server
- public_ip output variable, Deploying a Load Balancer
- pull requests, Submit Changes for Review
- Puppet, Configuration Management Tools
R
- refactoring code, gotchas with, Refactoring Can Be Tricky-Refactoring Can Be Tricky
- references, Deploy a Single Web Server
- regions and availability zones (AWS), Setting Up Your AWS Account, Deploy a Single Server, Deploying a Cluster of Web Servers, Shared Storage for State Files, Shared Storage for State Files, Limitations with Terraform’s Backends, You cannot reference any resource outputs in count or for_each
- releases
- remote state storage (see backends, remote, storing state in)
- remote-exec provisioners, Provisioners
- replicas, determining number for Pods, Orchestration Tools
- resources
- adding provisioners to, Provisioners
- cleaning up in AWS, Cleanup
- configuration by inline blocks vs. separate resources, Inline Blocks-Inline Blocks
- creating in Terraform, Deploy a Single Server
- documentation for, Deploy a Single Server
- immutable parameters, Refactoring Can Be Tricky
- looping over with count parameter, Loops with the count Parameter
- provisioners with null_resource, Provisioners with null_resource
- references creating implicit dependencies, Deploy a Single Web Server
- referencing resource outputs in count or for_each, not supported, You cannot reference any resource outputs in count or for_each
- resource attribute reference, Deploy a Single Web Server
- retries
- return values
- reusable infrastructure (see modules)
- rolling deployment
- root module, Module Basics
- Ruby, testing code in, Manual Tests
S
- S3 (see Amazon S3)
- SaltStack, Configuration Management Tools
- sandbox environments, Manual Testing Basics
- scheduled actions, Module Outputs, If-statements with the count parameter
- scripts
- secrets
- security
- security groups
- semantic versioning, Module Versioning
- server templating tools, Server Templating Tools-Server Templating Tools
- servers, Ad Hoc Scripts
- sets, using for_each expression with, Loops with for_each Expressions
- side effects, minimizing, Composable Modules
- Simple Storage Service (S3) (see Amazon S3)
- snowflake servers, The Rise of DevOps
- software delivery, Why Terraform
- source parameter
- splat expressions, using * (asterisk), Loops with the count Parameter, If-else-statements with the count parameter
- state, managing for Terraform, How to Manage Terraform State-Conclusion
- static analysis, Static analysis
- string directives
- strip markers (˜), Loops with the for String Directive
- structural types, Deploy a Configurable Web Server
- subnets
T
- tags
- target groups (ALB load balancer), Deploying a Load Balancer
- teams, using Terraform (see using Terraform as a team)
- template_file data source, The terraform_remote_state Data Source, If-else-statements with the count parameter
- ternary syntax (? :), Isolation via Workspaces, If-statements with the count parameter
- Terraform
- terraform apply command, How Terraform Works, Deploy a Single Server, Run Automated Tests
- terraform command, Install Terraform
- terraform destroy command, Cleanup
- Terraform Enterprise, Deployment tooling
- terraform fmt command, Style guide
- terraform force-unlock command, Deployment strategies
- terraform graph command, Deploy a Single Web Server
- terraform import command, Valid Plans Can Fail
- terraform init command, Deploy a Single Server
- terraform output command, Deploy a Configurable Web Server
- terraform plan command, Deploy a Single Server, What Is Terraform State?
- Terraform Registry
- terraform validate command, Static analysis
- terraform workspace list command, Isolation via Workspaces
- terraform workspace new command, Isolation via Workspaces, Isolation via Workspaces
- terraform workspace select command, Isolation via Workspaces
- terraform workspace show command, Isolation via Workspaces
- terraform_remote_state data source, The terraform_remote_state Data Source-Conclusion, Module Basics, Module Inputs
- Terragrunt, Deployment tooling
- Terratest
- test doubles, Automated Tests
- test driven development (TDD), Testable Modules
- test folder, Testable Modules
- test pyramid, End-to-End Tests
- test stages, Test stages-Test stages
- testable modules, Testable Modules-Testable Modules
- testing Terraform code, How to Test Terraform Code-Conclusion
- text editors, Deploy a Single Server
- tflint tool, Static analysis
- tips and tricks, Terraform Tips and Tricks: Loops, If-Statements, Deployment, and Gotchas-Conclusion
- transparent portability between cloud providers, How Terraform Works
- tuple type constraints, Deploy a Configurable Web Server
- type constraints, Deploy a Configurable Web Server
- types, Deploy a Configurable Web Server
U
- unit tests, Automated Tests, Unit Tests-Running tests in parallel
- Unix philosophy, Composable Modules
- URLs, source parameters for modules, Module Versioning
- use-case-specific modules, Composable Modules
- user account (AWS), Setting Up Your AWS Account
- User Data configuration (EC2 Instance), Deploy a Single Web Server
- user space (operating system), Server Templating Tools
- using Terraform as a team, How to Use Terraform as a Team-Conclusion
- adopting IaC in your team, Adopting IaC in Your Team-Give Your Team the Time to Learn
- application and infrastructure code workflows, comparing, Putting It All Together
- workflow for deploying application code, A Workflow for Deploying Application Code-Promote artifacts across environments
- workflow for deploying infrastructure code, A Workflow for Deploying Infrastructure Code-Promote artifacts across environments
- automated tests, Automated tests
- deployment, Deploy-Promote artifacts across environments
- file layout, File layout
- making code changes, Make Code Changes
- merge and release, Merge and Release
- running automated tests, Run Automated Tests
- running code locally, Run the Code Locally
- style guide for code, Style guide
- submitting changes for review, Submit Changes for Review
- using version control, Use Version Control
- uuid function, Provisioners with null_resource