PRESENTED BY
Alex Kalyvitis
(He/Him)
Software Engineer
Kerim Satirli
(He/Him)
Developer Advocate
at HashiCorp
James Quick
(He/Him)
Developer Advocate
at Auth0
Slide 3
Slide 3 text
James Quick
github.com/jamesqquick
Developer Advocate at Auth0
Slide 4
Slide 4 text
Alex Kalyvitis
github.com/alexkappa
Software Engineer
Slide 5
Slide 5 text
Kerim Satirli
github.com/ksatirli
Developer Advocate at HashiCorp
Slide 6
Slide 6 text
Agenda Introducing Terraform
Infrastructure as Code
Managing Auth0 with Terraform
hands-on with Auth0 and Terraform
Community Development
working in open source
Slide 7
Slide 7 text
Infrastructure
as Code
▪ executable documentation
▪ enables collaboration
▪ safe and predictable
Slide 8
Slide 8 text
Introducing Terraform
Slide 9
Slide 9 text
Terraform 125+
Official Providers
AWS, Azure, GCP, etc.
175+
Community Providers
Auth0, Sentry, Unifi, etc.
TERMINAL
> terraform init
Initializing the backend...
Initializing provider plugins...
- Checking for available provider plugins...
- Downloading plugin for provider "auth0" (terraform-providers/auth0) 0.11.0...
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
Slide 13
Slide 13 text
Resource: Auth0 API
CODE EDITOR
resource "auth0_resource_server" "blog" {
name = "Blog Post API"
identifier = "https://api.blog.com"
scopes {
value = "write:posts"
description = "Write posts"
}
}
Slide 14
Slide 14 text
Resource: Auth0 Role
CODE EDITOR
resource "auth0_role" "writer" {
name = "Writer"
identifier = "Blog post writer"
permissions {
name = "write:post"
resource_server_identifier = \
auth0_resource_server.blog.identifier
}
}
Slide 15
Slide 15 text
Resource: Auth0 User
CODE EDITOR
resource "auth0_user" "jane_doe" {
connection_name = "Username-Password-Authentication"
email = "jane.doe@blog.com"
username = "jane"
password = "I writez the blogz!"
roles = [auth0_role.writer.id]
}