0908

LOGS

  • terraform(1章)の続き

    • AWS のマネコンから Access Key を持ってくるところから
      • AddministratorAccess ポリシーがアタッチされているもの
        • これは先日払い出している
      • で,これを持って aws configure コマンドを実行
      • AWS Access Key IDAWS Secret Access Key があって,おそらく後者に設定するんだろうが,前者は何?
      • わからんので,とりあえずテキトーに設定してみる
        • region name はもちろん東京リージョン(ap-northeast-1
        • output format はなんもなし
      • > aws sts get-caller-identity を実行
        • もちろんエラー
      • うん,わからん
      • ので,もっかい作り直す…と思ったら,csv ファイルもダウンロードしてたやん
        • ちゃんと手元のシークレットディレクトリ(名前は秘密)においてた
        • と思ったが,多分これじゃないわ
        • やっぱ作り直す
        • 作り直して気付いたが,参照する csv ファイルを間違えてたわ
      • よーし,通った
    • > terraform plan を実行
      • お,エラーなくなった
    • > terraform apply

      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
      
      • エンターをたっーん! ``` aws_instance.hello: Creating... aws_instance.hello: Still creating... [10s elapsed] aws_instance.hello: Creation complete after 13s [id=i-0cdca69978ab4596b]

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

      • マネコンアクセス,インスタンスない
      • あ,リージョンがちげーわ
      • よしよし,できた
    • Name タグを追加

      • main.tfrecource に以下を追記
       resource "aws_instance" "hello" {
         ami           = "ami-0701e21c502689c31"
         instance_type = "t2.nano"
      +
      +  tags = {
      +    Name = "hello"
      +  }
       }
      
      • > terraform plan, > terraform apply を実行
      • yes を入力
      • よしよし,成功
      • マネコンからも Namehello が設定されていることも確認
    • 続いて,ami を変更

      aws_instance.hello: Destroying... [id=i-0cdca69978ab4596b]
      aws_instance.hello: Still destroying... [id=i-0cdca69978ab4596b, 10s elapsed]
      aws_instance.hello: Still destroying... [id=i-0cdca69978ab4596b, 20s elapsed]
      aws_instance.hello: Still destroying... [id=i-0cdca69978ab4596b, 30s elapsed]
      aws_instance.hello: Still destroying... [id=i-0cdca69978ab4596b, 40s elapsed]
      aws_instance.hello: Destruction complete after 40s
      aws_instance.hello: Creating...
      aws_instance.hello: Still creating... [10s elapsed]
      aws_instance.hello: Creation complete after 13s [id=i-00e4893ced35a5f26]
      
      Apply complete! Resources: 1 added, 0 changed, 1 destroyed.
      
      • なるほど.変更というが,過去のものは削除し,新しく作るのね
      • > terraform plan のラストの 1 to destroy. の部分が大事
    • では,今後は意図的にリソースを削除する

      • > terraform destroy を実行
      • おー.plan を実行したときのように確認がちゃんとでる
      aws_instance.hello: Destroying... [id=i-00e4893ced35a5f26]
      aws_instance.hello: Still destroying... [id=i-00e4893ced35a5f26, 10s elapsed]
      aws_instance.hello: Still destroying... [id=i-00e4893ced35a5f26, 20s elapsed]
      aws_instance.hello: Still destroying... [id=i-00e4893ced35a5f26, 30s elapsed]
      aws_instance.hello: Still destroying... [id=i-00e4893ced35a5f26, 40s elapsed]
      aws_instance.hello: Still destroying... [id=i-00e4893ced35a5f26, 50s elapsed]
      aws_instance.hello: Still destroying... [id=i-00e4893ced35a5f26, 1m0s elapsed]
      aws_instance.hello: Still destroying... [id=i-00e4893ced35a5f26, 1m10s elapsed]
      aws_instance.hello: Still destroying... [id=i-00e4893ced35a5f26, 1m20s elapsed]
      aws_instance.hello: Still destroying... [id=i-00e4893ced35a5f26, 1m30s elapsed]
      aws_instance.hello: Destruction complete after 1m31s
      
      Destroy complete! Resources: 1 destroyed.
      
      • 削除完了
      • ちなみに削除途中は,インスタンスの状態が シャットダウン となる
    • コードフォーマット
      • terraform コマンドにフォーマットのコマンドも用意されているのか!
      • > terraform fmt -recursive
      • へー.サブディレクトリも見てくれるのか.便利.
    • また,terraform コマンドは .tf という拡張子のファイルはすべて認識するので,長くなったら分割しませう ※1 学習用に作ったリソースや一時的なものは,不要になったタイミングで適宜削除しましょう.不要な請求を避けるために. ※2 クレデンシャルはコミットしない.公開は危険.
  • terraform(2章)

    • EC2 インスタンス上で web サーバーを起動,テストページを閲覧できるような環境を Terraform で作る
    • そのためには,いくつかのリソースが必要らしい
      • VPC(10.0.0.0/16)
      • パブリックサブネット(10.0.0.0/24)
      • インターネットゲートウェイ
      • EC2
    • 利用するクレデンシャルの profile 名は default を想定
    • Terraform で良く使われるファイル名
      • main.tf 基本設定を記述する定義ファイル
      • variables.tf 文字通り,変数を定義するファイル
      • outputs.tf 実行後に出力される変数を定義するファイル
      • {リソース名}.tf ファイル名事にサービスを分けて定義するファイル
    • 今までと違ったブロックが突然出てくるので,ちゃんとhashicorpの Terraform 公式サイトに行って,記法を見たほうが良さそうだな
      • とは言え,サンプルを見てたら,まぁ読めばわかるっちゃわかる
      • hashicorp/aws を利用するらしいが,書籍のバージョンだとかなり古く,公式サイト を見ると,最新は 5.66.0 だが,これで続けて行って大丈夫かなぁ
      • だめだったらバージョンは古いもので揃えてやろう
    • 今回は default という profile を使うので,また init から
      • 実行後に,.terraform ディレクトリを見る
      • .terraform/providers/registry.terraform.io/hashicorp/aws/5.66.0/ ができている
    • プロバイダのバージョンアップも比較的頻繁らしいので,常に公式の registry サイトを見て見るのが良いと
    resource "リソース種別" "リソース名" {
      項目 = オプション
    }
    

results matching ""

    No results matching ""