地形とコードとしてのインフラストラクチャ入門
この記事では、コード、アプローチ、利点としてインフラストラクチャについて学びますTerraform その基礎と有用なコマンドのいくつかを理解することによって.
また、基本的な地形のプロジェクトを作成し、いくつかのリソースを提供する!
コード(IAC)としてのインフラストラクチャは、AWS、GCPコンソールなどを通してリソースを提供するような手動のプロセスを通してコードを通してインフラストラクチャの管理とプロビジョニングとして定義されることができます.
コードとして2つのアプローチインフラストラクチャがあります. 命令 この方法では、ある順序で実行されるコマンド列として、希望する設定を定義します.
例えば、bashスクリプトを使用するAWS CLI 資源を供給する. 宣言 宣言的なアプローチは、あなたが必要とするどんな資源と彼らが持たなければならないどんな資源も含むシステムの望ましい状態を定義します.
例えば、AWS Cloudformation , Terraform , Ansible , など
ここでは、コードとしてインフラストラクチャを使用する利点があります. 一貫性 IACの目標は、我々のインフラストラクチャの進化として一貫性を維持しながら高速化を反復するのに役立つマニュアルプロセスを排除することです シンプル IACは、いくつかのスクリプトを実行することにより、インフラストラクチャアーキテクチャ全体をスピンすることができます.我々は開発のためだけでなく、ステージングのためにも、我々のソフトウェア開発ライフサイクル(SDLC)をより簡単にする生産環境を提供することができます. 増加効率 IACは、開発者の手に電源を戻します.プロビジョニングがより信頼性が高く自動化されるにつれて、エンジニアはマニュアル作業を行う時間が少なくなり、より高い値のタスクを実行する時間が多くなる. リスク最小化 あなたのインフラストラクチャのセットアップとそのインとアウトを知っている唯一の1つですdevopsエンジニアを想像してください.今、エンジニアがあなたの会社を去っていると想像してください.
ここで、IACは完璧なフィットです.なぜなら、新しいエンジニアがオンボードされているので、インフラストラクチャがどのように提供されるかを理解するのに多くの時間を費やす必要はありません.
Reference: Terraform docs
Terraformは、安全で効率的に構築、変更、およびバージョンインフラストラクチャを可能にするコード(IAC)ツールとしてインフラストラクチャです.
TerraformはHashicorp言語(HCL)を使用しているプロバイダーに関係なくリソースを定義するためにその言語として使用します.
基本的な地形のプロジェクトのいくつかの基礎とビルディングブロックを見てみましょう.
州
Terraformは我々のインフラストラクチャと構成についての状態を保存しなければなりません.この状態は、terraformによって我々のリソースを設定し、メタデータを追跡します.
Terraformまた、どのように我々の状態を格納するためのオプションのトンを提供します.たとえば、我々がチームで複数の人々と一緒に働いているならば、我々はローカルにそれを保存するのではなくAWS
プロバイダ
プロバイダは基本的には、Arabe、GCP、Azureのようなクラウドプロバイダと対話するためにterraformを使用するプラグインです.Terraformは、すべてのインフラストラクチャのニーズのためのプロバイダのトンを持っていますterraform registry
例:
リソースブロックは、計算機、ネットワーク、または任意の上位コンポーネントのようなインフラストラクチャオブジェクトを記述することができます
例:
リソースは新しいインフラストラクチャコンポーネントを管理するために使用されます.データソースは、私たちにterraform自体によってprovisionedされなかったかもしれないか、またはそうしなかったかもしれない私達の基盤の既存のリソースへの読み取り専用のビューを与えます.
例:
terraformモジュールは、一緒に使用される複数のリソースのコンテナです.
あなたが供給したい想像してくださいEKS しかし、私たちが知っているように、それはEKSリソースを定義するのと同じくらい単純でありません、我々はVPC、サブネットも必要とします、そして、リストは行きます.
したがって、モジュールはあなたのインフラストラクチャを整理する良い方法になります、例えば、我々はちょうどEKSモジュールで我々のEKS特有のリソースを定義することができます!
例:
モジュールとリソースが存在するTerraform registry それで、我々は多分我々のニーズに合うモジュールを見つけることができます.使えるようにEKS module
また、独自のモジュールを公開することができますTerraform registry !
関数
Terraformのような文字列関数から関数のトンが付属して
変数
変数は、リソース、データソース、モジュール、関数などの入力として機能し、より良い方法で共通の設定を整理するのに役立ちます.
例:
例:
terraformの出力は、我々のterraformスクリプトが走るとき、我々が期待する出力を定義するのを助けます.
例:
ここでいくつかの重要な地形コマンドを使用します.
インプット
プロジェクトの準備と初期化
計画
設定変更による変更を表示します
適用
変更を適用
破壊する
設定のすべてのリソースを破壊する
地形
terraformのCLIはからインストールすることができますhere
注意: Hashicorpも提供しますterraform docker image , あなたが余分な依存関係をインストールするのが好きでないならば
AWSアクセス
我々はまた、プログラムのアクセスとAWS
私の以前の記事を参照することができます
十分な理論は、今私たちが学んだと何かを提供する実際に使用してみましょう.物事を簡単にするためには、我々はプロビジョニング
のS 3バケツ
を作成します
注:バケット名が一意であることを確認します
偉大な、我々のプロジェクトを初期化されています.我々の変化を計画しましょう
すべては良いようです、適用しましょう
最後に、リソースをクリーンアップしましょう
この記事では、コードとしてインフラストラクチャをカバーしています.私はこれが有用であり、常に任意の問題に直面している場合に手を差し伸べる自由に感じてほしい!
また、基本的な地形のプロジェクトを作成し、いくつかのリソースを提供する!
コードとしてのインフラストラクチャは何か?
コード(IAC)としてのインフラストラクチャは、AWS、GCPコンソールなどを通してリソースを提供するような手動のプロセスを通してコードを通してインフラストラクチャの管理とプロビジョニングとして定義されることができます.
アプローチ
コードとして2つのアプローチインフラストラクチャがあります.
例えば、bashスクリプトを使用するAWS CLI 資源を供給する.
例えば、AWS Cloudformation , Terraform , Ansible , など
利益
ここでは、コードとしてインフラストラクチャを使用する利点があります.
ここで、IACは完璧なフィットです.なぜなら、新しいエンジニアがオンボードされているので、インフラストラクチャがどのように提供されるかを理解するのに多くの時間を費やす必要はありません.
どのような地形ですか?
Reference: Terraform docs
Terraformは、安全で効率的に構築、変更、およびバージョンインフラストラクチャを可能にするコード(IAC)ツールとしてインフラストラクチャです.
TerraformはHashicorp言語(HCL)を使用しているプロバイダーに関係なくリソースを定義するためにその言語として使用します.
基礎
基本的な地形のプロジェクトのいくつかの基礎とビルディングブロックを見てみましょう.
州
Terraformは我々のインフラストラクチャと構成についての状態を保存しなければなりません.この状態は、terraformによって我々のリソースを設定し、メタデータを追跡します.
Terraformまた、どのように我々の状態を格納するためのオプションのトンを提供します.たとえば、我々がチームで複数の人々と一緒に働いているならば、我々はローカルにそれを保存するのではなくAWS
プロバイダ
プロバイダは基本的には、Arabe、GCP、Azureのようなクラウドプロバイダと対話するためにterraformを使用するプラグインです.Terraformは、すべてのインフラストラクチャのニーズのためのプロバイダのトンを持っていますterraform registry
例:
# AWS
provider "aws" {
region = "us-east-1"
}
# Google Cloud
provider "google" {
project = "example"
region = "us-west1"
}
リソースリソースブロックは、計算機、ネットワーク、または任意の上位コンポーネントのようなインフラストラクチャオブジェクトを記述することができます
例:
resource "aws_apprunner_service" "some_name" {
tags = {
Name = "example-apprunner-service"
}
}
データソースリソースは新しいインフラストラクチャコンポーネントを管理するために使用されます.データソースは、私たちにterraform自体によってprovisionedされなかったかもしれないか、またはそうしなかったかもしれない私達の基盤の既存のリソースへの読み取り専用のビューを与えます.
例:
data "aws_ebs_volume" "ebs_volume" {
most_recent = true
filter {
name = "volume-type"
values = ["gp2"]
}
}
モジュールterraformモジュールは、一緒に使用される複数のリソースのコンテナです.
あなたが供給したい想像してくださいEKS しかし、私たちが知っているように、それはEKSリソースを定義するのと同じくらい単純でありません、我々はVPC、サブネットも必要とします、そして、リストは行きます.
したがって、モジュールはあなたのインフラストラクチャを整理する良い方法になります、例えば、我々はちょうどEKSモジュールで我々のEKS特有のリソースを定義することができます!
例:
module "eks" {
vpc = "..."
instances = 10
}
しかし、待って、もっと!モジュールとリソースが存在するTerraform registry それで、我々は多分我々のニーズに合うモジュールを見つけることができます.使えるようにEKS module
また、独自のモジュールを公開することができますTerraform registry !
関数
Terraformのような文字列関数から関数のトンが付属して
join
, format
を使う.変数
変数は、リソース、データソース、モジュール、関数などの入力として機能し、より良い方法で共通の設定を整理するのに役立ちます.
例:
variable "bucket_name" {
type = string
default = "example-value"
}
または一時的なローカル変数例:
locals {
random = "hello"
}
出力terraformの出力は、我々のterraformスクリプトが走るとき、我々が期待する出力を定義するのを助けます.
例:
output "service_endpoint" {
value = aws_apprunner_service.service.domain_name
}
コマンド
ここでいくつかの重要な地形コマンドを使用します.
インプット
プロジェクトの準備と初期化
計画
設定変更による変更を表示します
適用
変更を適用
破壊する
設定のすべてのリソースを破壊する
インストール
地形
terraformのCLIはからインストールすることができますhere
注意: Hashicorpも提供しますterraform docker image , あなたが余分な依存関係をインストールするのが好きでないならば
AWSアクセス
我々はまた、プログラムのアクセスとAWS
AWS_ACCESS_KEY_ID
and AWS_SECRET_ACCESS_KEY
.私の以前の記事を参照することができます
AWS CLIの設定
カランプラタップシン・ 月11日・ 3分読む
#aws
#devops
#beginners
ハンズオン!
十分な理論は、今私たちが学んだと何かを提供する実際に使用してみましょう.物事を簡単にするためには、我々はプロビジョニング
のS 3バケツ
を作成します
terraform
ディレクトリをmain.tf
ファイル.$ mkdir terraform
$ touch main.tf
我々の好ましい地域で我々のAWSプロバイダーを定義しましょうprovider "aws" {
region = "us-east-1"
}
バケツ名の変数を作成します.注:バケット名が一意であることを確認します
variable "bucket_name" {
type = string
default = "sample-bucket"
}
定義するaws_s3_bucket
リソースresource "aws_s3_bucket" "deploy_bucket" {
bucket = var.bucket_name
acl = "private"
}
出力を追加するoutput "s3_bucket_arn" {
value = aws_s3_bucket.s3_bucket.arn
}
プロジェクトを初期化しましょう偉大な、我々のプロジェクトを初期化されています.我々の変化を計画しましょう
$ terraform plan
すべては良いようです、適用しましょう
$ terraform apply
最後に、リソースをクリーンアップしましょう
$ terraform destroy
結論
この記事では、コードとしてインフラストラクチャをカバーしています.私はこれが有用であり、常に任意の問題に直面している場合に手を差し伸べる自由に感じてほしい!
Reference
この問題について(地形とコードとしてのインフラストラクチャ入門), 我々は、より多くの情報をここで見つけました https://dev.to/karanpratapsingh/introduction-to-infrastructure-as-code-with-terraform-4f29テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol