
Snowflake signup: https://signup.snowflake.com/
Install Terraform: https://learn.hashicorp.com/tutorials/terraform/install-cli
General Snowflake Documentation: https://docs.snowflake.com/en/
General Terraform Documentation: https://www.terraform.io/docs/index.html
Chan Zuckerberg Terraform Provider: https://registry.terraform.io/providers/chanzuckerberg/snowflake/latest
Snowflake Objects: https://docs.snowflake.com/en/user-guide/security-access-control-overview.html#securable-objects
Chan Zuckerberg Documentation: https://registry.terraform.io/providers/chanzuckerberg/snowflake/latest/docs
Chan Zuckerberg Documentation: https://registry.terraform.io/providers/chanzuckerberg/snowflake/latest/docs
Snowflake Access Control: https://docs.snowflake.com/en/user-guide/security-access-control-overview.html#access-control-framework
Terraform Variables: https://www.terraform.io/docs/language/values/variables.html
Terraform References: https://www.terraform.io/docs/language/expressions/references.html
Terraform Modules: https://www.terraform.io/docs/language/modules/index.html
Terraform For Each: https://www.terraform.io/docs/language/meta-arguments/for_each.html
Terraform Maps: https://www.terraform.io/docs/language/expressions/types.html#map
Terraform Imports: https://www.terraform.io/docs/cli/commands/import.html
Terraform Remove: https://www.terraform.io/docs/cli/commands/state/rm.html
Terraform Move: https://www.terraform.io/docs/cli/commands/state/mv.html
Terraform Refresh: https://www.terraform.io/docs/cli/commands/refresh.html
Terraform Graph: https://www.terraform.io/docs/cli/commands/graph.html
NOTE: free Snowflake accounts don't have the ability to use masking policies. This lecture will still show you how you could set up the masking policy module, but feel free to skip it if you're not interested in learning masking policies.
Snowflake Masking Policies: https://docs.snowflake.com/en/user-guide/security-column-ddm-intro.html
Snowflake Storage Integrations: https://docs.snowflake.com/en/sql-reference/sql/create-storage-integration.html
Snowflake Tasks: https://docs.snowflake.com/en/sql-reference/sql/create-task.html
Snowflake Resource Monitors: https://docs.snowflake.com/en/user-guide/resource-monitors.html
Terraform Cloud: https://www.terraform.io/docs/cloud/index.html
Integration Terraform with Github: https://learn.hashicorp.com/tutorials/terraform/github-actions
Snowflake Key Pair Authentication: https://docs.snowflake.com/en/user-guide/key-pair-auth.html
Snowflake OAuth: https://docs.snowflake.com/en/user-guide/oauth-intro.html
Snowflake OAuth How To: https://community.snowflake.com/s/article/HOW-TO-OAUTH-TOKEN-GENERATION-USING-SNOWFLAKE-CUSTOM-OAUTH
URL Encoder: https://www.urlencoder.org/
Snowflake Future Grants: https://docs.snowflake.com/en/sql-reference/sql/grant-privilege.html#future-grants-on-database-or-schema-objects
Background
Terraform is an incredibly powerful tool to manage infrastructure, especially Snowflake. The first few sections in this course set you up with the fundamentals for success, while the advanced sections in the end provide more details on completely building out your architecture.
The price of the course is based on the time and effort put into it, but at the same time, I want it to be affordable for all. If the price is an issue, please reach out and I'll be happy to figure it out with you.
What you'll learn
By the end of the class, you'll have completely connected your own Terraform and Snowflake accounts following best practices, and you'll be able to manage your Snowflake objects (users, roles, warehouses, databases, etc.) with Terraform. Some of these skills you'll gain include:
Manage all types of Snowflake objects using modules that can easily be reused
Grant privileges on all of these objects, including future grants that simplify the management of databases and schemas
Creation and management of roles in a hierarchical structure to simplify grants
Ability to import existing Snowflake objects into your Terraform configuration
Setting up a DEV and PROD Snowflake account, and using GitHub to manage it all
Why you should use Terraform to manage your Snowflake account
Snowflake is an incredible data warehouse critical to thousands of organizations. But effectively managing Snowflake at scale has been difficult, until we start taking advantage of Terraform.
Some of the benefits of using Terraform with Snowflake include:
Speeding up manual and repetitive tasks
Standardization of roles and privileges
Auditability of privileges
Code review for the management of Snowflake objects
Essentially, Terraform allows you to use Infrastructure as Code to manage your Snowflake account. The state of Snowflake objects is controlled by the configuration you set up in Terraform, which makes it simple to manage.
About Terraform
Terraform is an open-source infrastructure as code software tool that provides a consistent CLI workflow to manage hundreds of cloud services. Terraform codifies cloud APIs into declarative configuration files. There is a specific provider plugin that allows you to manage your Snowflake account with Terraform.