CentOS 7 / Ubuntu18.04にTerraformをインストールする方法

Terraformは、コードからクラウドインフラストラクチャリソースを効率的に管理できるようにするソフトウェアです。 Terraformを使用して、独自のクラウドプロバイダーまたはオンプレミスの独自のインフラストラクチャにデプロイされたインフラストラクチャを構築、変更、およびバージョン管理できます。

AWS、Googleなどのクラウドサービスプロバイダーをサポートします Cloud プラットフォーム、Azure、その他多数。

Terraformは、サポートされているすべてのプラットフォームとアーキテクチャのバイナリパッケージとして配布されます。 Terraformは、terraformという名前の単一のバイナリとして実行されます。 パッケージ内の他のファイルはすべて安全に削除できます。

このチュートリアルでは、次の方法を学習します。

-CentOS7にterraformをインストールします
–Ubuntu18.04にterraformをインストールします
-AWS用のテラフォームテンプレートスクリプトを作成します Cloud (アマゾンウェブサービス)
-テラフォームを実行し、機能的なクラウドインフラストラクチャを構築します

Centos7にTerraformをインストールする

次に、CentOS7ディストリビューションにTerraformをインストールする方法を見ていきます。

まず、システムとパッケージを現在のバージョンにアップグレードする必要があります。

$ sudo yum update

次に、wgetパッケージとunzipパッケージがまだインストールされていない場合は、それらをインストールします。

$ sudo yum install wget unzip

これで準備が整いました Terraformをダウンロード 公式ウェブサイトからのLinux用のzipファイル。 この記事を書いている時点では、Terraformの現在のバージョンは0.11.13でした。

$ wget https://releases.hashicorp.com/terraform/0.11.13/terraform_0.11.13_linux_amd64.zip

次に、アーカイブを解凍します / usr / local / bin /

$ sudo unzip ./terraform_0.11.13_linux_amd64.zip -d /usr/local/bin/

すべて完了。 現在残っているのは、次のコマンドを使用して、terraformが正常にインストールされているかどうかを確認することだけです。

$ terraform -v

Ubuntu18.04にTerraformをインストールします

システムとパッケージを更新するには、組み込みのソフトウェアアップデーターを使用するか、次のコマンドを使用してシステムを手動で更新します。

$ sudo apt-get update

繰り返しになりますが、wgetパッケージとunzipパッケージがまだインストールされていない場合は、それらをインストールします。

$ sudo apt-get install wget unzip

また次に、CentOS7で実行したのと同じコマンドを実行します。

$ wget https://releases.hashicorp.com/terraform/0.11.13/terraform_0.11.13_linux_amd64.zip

$ sudo unzip ./terraform_0.11.13_linux_amd64.zip -d /usr/local/bin/

そして最後に、インストールが成功したかどうかをテストします。

$ terraform -v

Terraformのテンプレートスクリプトファイルを作成する

これで、CentOS7とUbuntu18.04の両方にTerraformソフトウェアを正常にインストールする方法を学習したら、テンプレートスクリプトファイルを作成してインフラストラクチャをセットアップできます。 example、AWSで Cloud (アマゾンウェブサービス)。

Terraformは、.tfテンプレートファイルを使用して目的のクラウドインフラストラクチャをセットアップし、HCLと呼ばれる言語で記述されたコードを使用します。 このチュートリアルでは、「terraform.tf」というテンプレートファイルを作成します。

$ nano terraform.tf

次に、クレデンシャルをterraform.tfファイルに追加し、プロバイダー名を設定し、terraformが何をすべきかについての指示を追加する必要があります。 AWSの公開鍵と秘密鍵を次のように入力します。

provider "aws" {
region = "us-west-2"
access_key = "accesskey"
secret_key = "secretkey"
}

resource "aws_instance" "example" {
ami = "ami-8803e0f0"
instance_type = "t2.micro"
}

Save ファイルを作成し、Terraformの初期化に進みます。

次に、Terraformを初期化する必要があります。

$ terraform init

Initializing provider plugins...
- Checking for available provider plugins on https://releases.hashicorp.com...
- Downloading plugin for provider "aws" (2.1.0)...

The following providers do not have any version constraints in configuration,
so the latest version was installed.

To prevent automatic upgrades to new major versions that may contain breaking
changes, it is recommended to add version = "..." constraints to the
corresponding provider blocks in configuration, with the constraint strings
suggested below.

* provider.aws: version = "~> 2.1"

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.

これで基本的に準備が整いました。 を使用して terraform plan AWSで実際に何も作成せずにプロセスをシミュレートできるコマンド:

$ terraform plan
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.

------------------------------------------------------------------------

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create

Terraform will perform the following actions:

+ aws_instance.example
id:
ami: "ami-8803e0f0"
arn:
associate_public_ip_address:
availability_zone:
cpu_core_count:
cpu_threads_per_core:
ebs_block_device.#:
ephemeral_block_device.#:
get_password_data: "false"
host_id:
instance_state:
instance_type: "t2.micro"
ipv6_address_count:
ipv6_addresses.#:
key_name:
network_interface.#:
network_interface_id:
password_data:
placement_group:
primary_network_interface_id:
private_dns:
private_ip:
public_dns:
public_ip:
root_block_device.#:
security_groups.#:
source_dest_check: "true"
subnet_id:
tenancy:
volume_tags.%:
vpc_security_group_ids.#:

Plan: 1 to add, 0 to change, 0 to destroy.

------------------------------------------------------------------------

Note: You didn't specify an "-out" parameter to save this plan, so Terraform
can't guarantee that exactly these actions will be performed if
"terraform apply" is subsequently run.

Terraformを実行してAWSでインスタンスを作成する

現在テストされている計画に満足している場合は、実行します terraform apply AWSで実際にインフラストラクチャを作成するには:

$ terraform apply

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create

Terraform will perform the following actions:

+ aws_instance.example
id:
ami: "ami-8803e0f0"
arn:
associate_public_ip_address:
...

「yes」と入力して、現在のアクションを確認するように求められます。

Plan: 1 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.

Enter a value: yes

数分後、インスタンスが作成され、実行されます。

...
source_dest_check: "" => "true"
subnet_id: "" => ""
tenancy: "" => ""
volume_tags.%: "" => ""
vpc_security_group_ids.#: "" => ""
aws_instance.example: Still creating... (10s elapsed)
aws_instance.example: Still creating... (20s elapsed)
aws_instance.example: Still creating... (30s elapsed)
aws_instance.example: Still creating... (40s elapsed)
aws_instance.example: Creation complete after 43s (ID: i-07977d913a7264459)

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

AWSコンソールを開くとわかるように、インスタンスが稼働しています。

Terraformはインフラストラクチャの状態を記憶しているため、プランを変更して再度適用すると、既存のクラウドインフラストラクチャが更新されることに注意してください。

最後にやらなければならないことは、計画を終了して削除する方法を確認することです。 とてもシンプルなアクションです terraform destroy コマンド(アクションの確認を再度求められます):

$ terraform destroy
aws_instance.example: Refreshing state... (ID: i-07977d913a7264459)

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
- destroy

Terraform will perform the following actions:

- aws_instance.example

Plan: 0 to add, 0 to change, 1 to destroy.

Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.

Enter a value: yes

aws_instance.example: Destroying... (ID: i-07977d913a7264459)
aws_instance.example: Still destroying... (ID: i-07977d913a7264459, 10s elapsed)
aws_instance.example: Still destroying... (ID: i-07977d913a7264459, 20s elapsed)
aws_instance.example: Still destroying... (ID: i-07977d913a7264459, 30s elapsed)
aws_instance.example: Still destroying... (ID: i-07977d913a7264459, 40s elapsed)
aws_instance.example: Still destroying... (ID: i-07977d913a7264459, 50s elapsed)
aws_instance.example: Still destroying... (ID: i-07977d913a7264459, 1m0s elapsed)
aws_instance.example: Destruction complete after 1m6s

Destroy complete! Resources: 1 destroyed.

これでこのチュートリアルは終わりです。 CentOS7とUbuntu18.04にTerraformをインストールし、テンプレートファイルを作成し、AWSでインスタンスを作成して破棄する方法を学びました。

この情報がお役に立てば幸いです。また、コメントや質問を以下に投稿してください。

また読む:

  • TerraformをインストールしてAWSEC2をプロビジョニングする方法 Cloud 実例