Organizations

amazonconnect amazonpolly appflow aws books camp childcare client vpn cloudfront cloudwatch codebuild daily datadog docker ec2 ecs eventbridge fargate gas homeserver iot jamf lambda life hack linux mac movie music php program python rds ruby running s3 tech terraform vpc windows wordpress 10km 2016 2018 2ブロック alfred amazonconnect amazones amazonpolly ansible apache api atcoder aws aws認定資格 backlog balmuda band bind boss box brew cakephp centos centos6 chef-solo ci circleci circlecijp cloud cloud sql cloud storage command crkbd cron css database diet digdag disney dlna dns docker docker-compose dockerfile dockertokyo ecr ecs edy eks elasticcloud elasticsearch em embulk ena evernote ezmlm fabric fargate fluentd font found fuzz galeracluster garageband gce gcp geek gem git github goo google google map googlemap gr-citrus gsuite happynewyear hatenatech helix homebrew html ikea infrataster iphone itamae iterm jamf k8s kinesis kintone knife-solo knowledge kpt kubernetes l2tp lancers lenovo let'ssplit linux live lolipop mac macos macアドレス mail mariadb mediatomb memory mfa midi mint60 ml mta mysql namazu nas nginx notion onedrive openssl peco pepabo perl php pixar pmf post python qiita qmail raspberrypi raycast redmine roland route53 rsync ruby ruby on rails salesforce sendgrid_jp sfdc sha2 shakeshack slack so-01j sony split sql sre srelounge srenext ssd ssh ssml stationery team terastation terminal terraform typescript ubuntu22.04 unix vagrant virtualbox visualstudiocode vm vpc vpn vpngate vscode vuls windows windows10 windows8 windowsserver2012 wordpress xperia xtechjaws xtechjaws07 zsh おサイフケータイ たからばこセッティング としまえん はてな アイアムアヒーロー アイアンマン アウトドアアンバサダー アプリ アレクサ インスタンスタイプ インターン インフラ ウィンドウズ ウェディング エフェクター エヴァ オープンソース カンバン キス キーキャップ キーボード ギター コキア コマンドプロンプト コンタクトセンター コース サーバーオペレーション サーバー移行 シェイクシャック シェルスクリプト スクラム スタジオ ステラタウン ストレージ スマホ セキュリティ タスク管理 ターミナル ダイエット チャリティー テックカンファレンス デスクトップ トライダガー ノートpc ハイレゾ ハゼ ハワイ ハンバーガー バイク バックアップ バンド バージョン管理 パスワード管理 パソコン パパ ピアノ ピクサー ピック ファン プロトレックスマート プロビジョニング ペイジェント ペパボ ポストモーテム ミニ四駆 メンタリング メンター メーリングリスト メール ヤフオク ヤマダ電機 ヤマダ電機モバイルドリーム館 ライブ ランニング リモートワーク レアジョブ レジン レツプリ レビュー ログ ロジカルシンキング 上尾 二段階認証 伊那市 会社 保育園 優しい世界 入門 全文検索 分割キーボード 初心者 勉強会 名前解決 外苑前 天キー 太陽 子供 学習リモコン 実写映画 家具 家族 家計簿 家電 小松菜奈 引っ越し 息子 成人式 技術書典 振り返り 新年 新幹線 新海誠 新米 旅行 日帰り旅行 映画 書評 東京湾 東京都知事 東野圭吾 桜台 検証 気分転換 水タバコ 池上彰 海釣り 温泉 漫画 炭酸泉 生産性 登山 監視 目標 確定申告 福島 立会川駅 組立て 経済学 結婚 練習音源 練馬 考える 育児 脆弱性 自作 自作エフェクター 自作キーボード 自宅サーバー 自宅鯖 花見 蕎麦 言葉 誕生日 読書 豊島園 貸し切り 赤外線 趣味プログラマー 転職 退職 選挙 釣り 釣り堀 銭湯 録音 長野県 障害報告 電動アシスト自転車 電動自転車 電子工作 電気工事士 電気工事士2種 電気風呂 露天風呂 養命酒 1歳
  • 概要 だいぶニッチなのはわかっているのだが、terraformでJSONを作って、その中で配列を渡したい事例があってドハマリしたのでメモ。 対象サービス AWS EventBridge Scheduler EventBridge schedulerでJSONを渡す EventBridge schedulerでJSONを渡したいという要件だった場合、特に難しく考えなければ下記で十分な場合が多い。 resource "aws_scheduler_schedule" "sample" { ... target { ... input = <<EOT { "example_key" : "example_value" } EOT はたまた、 resource "aws_scheduler_schedule" "batch_scheduler" { ... target { ... input = jsonencode(var.example) } variables "example" { default = { "example_key" : "example_value" } } これでOK. しかし、今回はJSONに <aws.scheduler.execution-id> を含めたら、jsonencodeでエンコードされて、<と>が\u003cと\u003eという文字列になってしまった。 jsonencode Terraformのjsonencodeでは、< >はエスケープシーケンスが用意されている。 https://developer.hashicorp.com/terraform/language/functions/jsonencode When encoding strings, this function escapes some characters using Unicode escape sequences: replacing <, >, &, U+2028, and U+2029 with \u003c, \u003e, \u0026, \u2028, and \u2029.
    Created Fri, 17 Mar 2023 12:55:27 +0000
  • 10月から株式会社マクアケでSREとしてお世話になっています。 そんなマクアケのアドベントカレンダー3日目の記事です。 昨日は、絶賛育休中のrenoinnさんのEnt+Atlasでマイグレーションするでした。 最近はTerraformよりもDBのお勉強が多いですが、久しぶりにTerraform関連のブログです。 概要 Terraformを使っていると、いろいろな理由で差分が発生することがある。 terraform管理と手動管理が混ざっている terraformがアップデートされて使えなくなった構文がある プロバイダーがアップデートされて使えなくなった構文がある いずれの理由にせよ、構成ドリフト(設定差異)はterraform適用へのハードルをあげる。 targetで指定すれば良いが、どこか不安が残る、そんなコードになりがちになる。 管理を対象を全てのリソースにしないにせよ、terraformの差分が解消してあることが望ましい。 そんなこんなで、terraformの差分解消に伴うtipsやらポイントを自分のためにもまとめておく。 まずは何はともあれ現状を見てみる 差分を解消しなくてはいけないリポジトリは、常に触っているリポジトリとは限らない。 そうすると、terraform initからはじめる必要がある場合がある。 その場合、いきなりコケて心が折れるかもしれないけれど、まずは落ち着いて terraformのバージョン と 権限 を確認しよう。 特にAWSの権限が実は不足していたなんてことはままある。 backendに指定しているリソース、AWSでS3を使っている場合は、AWS CLIを使って対象のS3へアクセスできることを確認しよう。 私は必ずbackendにS3を使っている場合は、下記が実行できるかを必ず確認しておく。(VPNがつながっていない、SAML認証が通っていない、SAMLのアクセスキーの有効期限が切れていた、、、なんてことはありがち) aws s3 ls XXX terraform init でコケるときはプロバイダーのバージョンも疑う terraform init がコケるなんて、おいおい、、、という気持ちかもしれないが、放置していればそういうこともある。 まして初めて触るリポジトリなら、ありえなくは無い。 上記権限等が問題ないのであれば、プロバイダーのバージョンを疑ってみる。 AWSのプロバイダーだけならまだしも、templateを使ってたり、他のプロバイダーを使っていればコケることはある。 最悪は、すでに動かしている人がいたら、その人から .terraform ごともらえば解消するかもしれない。 terraform planを実行するときは-outで出力するか、-no-colorをつける ということでinitまで出来たら、次はterraform planをしてみる。その結果、大量に差分が出力されることがある。 その場合はファイルに出力してみると差分の作業がやりやすくなる。 terraform plan -out /tmp/diffs.txt このファイルはバイナリで terraform show /tmp/diffs.txt で確認することが可能だ。 もし、ファイルにちょっとメモ書き込みしたり、対応したリソースの行を消したりしたい場合はファイルにリダイレクトすることになる。 しかし、単純にリダイレクトで下記のように実行するとシェルの色の文字コードが出力されてしまう。 $ terraform plan > ~/Downloads/diffs.txt data.template_file.example: Reading... data.template_file.example_test: Reading.
    Created Fri, 02 Dec 2022 15:00:48 +0000
  • はじめに 副業先で一からAWS環境を作成することになり、そろそろ準備を考えてたときに、ふとTerraformCloudのことを思い出しました。 https://www.hashicorp.com/products/terraform/pricing/ 最低の有料プランのチームで使う場合の違いとして権限管理が異なり、個人ユーズなら無料でも十分使えます。 また、tfstateをS3等で管理したくないのもあり、思い切ってTerraformCloudに任せてみることにしました。 ※なお、AWSアカウントがあり、Terraformに触れたことがある方だったら30分もかからずにセットアップができます。 まずはリポジトリ連携 GitHubでTerraformを管理するリポジトリを作成し、TerraformCloudでWorkspaceを作成します。 この時に、特定のディレクトリをTerraform専用ディレクトリとしている場合は、変更を検知するディレクトリを指定できます。 私の場合は、今回は同じリポジトリでインフラを全部管理する予定だったため、シンプルに「terraform」というディレクトリを作成して指定しました。 backend.tfで変数指定 backend.tfファイルを作成して、varでAWSのアクセスキーとシークレットキーを変数で指定します。 provider "aws" { access_key = var.aws_access_key secret_key = var.aws_secret_key region = "ap-northeast-1" } variables.tfで下記のようにします。 variable "aws_access_key" {} variable "aws_secret_key" {} variable "aws_region" { default = "ap-northeast-1" } そして、Pushする前にTerraformCloudでAWSのアクセスキーとシークレットアクセスキーを登録します。 秘匿情報の場合はSENSITIVEを選択すると、中を確認することが出来ないように設定できます。 この辺はCircleCIなんかと使い方は似ていますね。 早速VPC用のtfを作ります。 resource "aws_vpc" "test-vpc" { cidr_block = "192.168.0.0/16" instance_tenancy = "default" enable_dns_support = true enable_dns_hostnames = true tags = { Name = "test-vpc" } } ここまで来たらテストなのでmasterへPush。
    AWS Cloud terraform 入門 Created Mon, 16 Mar 2020 16:14:44 +0000