Automate your infrastructure deployment with Terraform
Scaleway authentication is based on an access key and a secret key. To create new key pairs, navigate to the section “API Tokens” under the credentials tab in your Scaleway console . Scaleway offers 3 ways of providing credentials: Static Credentials, environment variables and shared configuration file.
Terraform has a “planning” phase, where an execution plan is generated. This execution plan will show what Terraform will do when you call the “apply” command. This step can avoid any surprises when Terraform manipulates infrastructure.
Terraform builds a graph of all your resources, and parallelizes the creation and modification of any non-dependent resources. As a result, Terraform builds infrastructure as efficiently as possible so you can get insight into dependencies in your infrastructure.
Complex changesets may be applied to your infrastructure with minimal human interaction. With the above execution plan and resource graph, you know exactly what Terraform will change and in what order, avoiding many possible human errors.
As Terraform is an open source project, Scaleway Terraform Provider’s plugin is also open source, hosted on Github and maintain by both our DevOps and the community. This plugin is written in Go, feel free to contribute to it this plugin or to request the development of a new feature. To know more about our Terraform roadmap, check out our public roadmap on GitHub.
Scaleway object storage can be used to store your Terraform state. To do so, configure your backend as a S3-backend. Beware that no locking mechanism are yet supported when storing your tfstate file with a AWS S3-compatible bucket. If you need a locking mechanisme, you can also use Scaleway Managed Database.
Your infrastructure is now explicitly defined as a configuration file and, like any other piece of code, you can version your Terraform repository. Adding a versioning strategy will transform your infrastructure management process. Indeed, every stake holder will be able to commit and review your code. Another great benefit of infrastructure versioning is the possibility to rollback to a previous version in case of any error.
HCL (HashiCorp Configuration Language) is a configuration language built by HashiCorp. The goal of HCL is to build a structured configuration language that is both human and machine friendly for use with command-line tools, but specifically targeted towards DevOps tools, servers, etc.
Manage your infrastructure without leaving your terminal
The power of Infrastructure as Code
A CI/CD pipeline is often triggered by a change in code (like a post-commit hook in git) and can help to merge the change by offering stages in testing, approval and deployment. Keep in mind that Terraform is more considered as an orchestration tool than an automation tool. Having said that, it is completely feasible to integrate Terraform in a more global workflow where Terraform will set the infrastructure and other complementary tools like Chef, Puppet or Ansible will then configure the applications running on the new / updated infrastructure.
Defining all of your infrastructure as Terraform modules or templates makes it easy to reuse the same templates with slightly different variables. This is ideal for a proper DevOps environment that demands consistency in development / stage / production environments.
Additionally, when using infrastructure as a coding tools like Terraform, the code can automatically serve as a clear description of the desired state of the infrastructure. As a result, it makes it easier onboard new engineers on the projects.
When version tracking is enforced, the repository that contains the code becomes a Single Source of truth.
Having this unique point of control on the infrastructure helps to introspect and discover how the infrastructure is built. Development and operational teams are using the same source repository. As a result both teams can review and apply changes to them. This lowers the risk of misunderstanding between teams because they all share the same context and see the same files.
Discover our compute resources available with Terraform
This product is open source
You have a project? Call us:
Terraform is an open-source Infrastructure as Code software tool created by HashiCorp It has been designed for building, changing, and versioning infrastructure safely and efficiently. Terraform can manage existing and popular service providers such as Scaleway but also many others like AWS, AZURE, GCP, OpenStack or even custom in-house solutions.
Terraform generates an execution plan describing exactly what the tool will do to reach the desired state. Terraform will then execute this plan to build the described infrastructure. As the configuration changes, Terraform is able to determine what changed and create incremental execution plans which can be applied.
Terraform is used to create, manage, and update infrastructure resources such as Bare Metal Servers, Virtual Machines (Development Instances, General Purposes Instances or GPU Instances), network Load Balancers, containers orchestrators (Kubernetes Kapusle), and more. A provider is responsible for understanding API interactions and exposing resources.
Yes, Terraform supports multi-cloud configuration. This allows you to manage infrastructures and resources from multiple cloud providers using a unique tool for efficient deploying, changing, and versioning.
Terraform is designed to manage your infrastructure. If you make manual changes to it, they will be overwritten next time you apply the Terraform configuration. To avoid this behaviour, add the “ignore_changes” parameter to the resource in the configuration file.
Yes, you can store your Terraform state file on Scaleway Object Storage by using the S3 Backend