<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Terraform on ゲンゾウ用ポストイット</title><link>https://genzouw.com/entry/category/terraform/</link><description>Recent content in Terraform on ゲンゾウ用ポストイット</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Mon, 27 Mar 2023 14:15:58 +0900</lastBuildDate><atom:link href="https://genzouw.com/entry/category/terraform/index.xml" rel="self" type="application/rss+xml"/><item><title>anyenvで管理しているバージョン管理ツールを一括でアップデートする方法</title><link>https://genzouw.com/entry/2022/10/13/120054/3133/</link><pubDate>Thu, 13 Oct 2022 12:00:54 +0900</pubDate><guid>https://genzouw.com/entry/2022/10/13/120054/3133/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/anyenv/anyenv"&gt;anyenv&lt;/a&gt; を使うと、 &lt;code&gt;xxxenv&lt;/code&gt; 系のツールを管理できます。&lt;/p&gt;&#10;&lt;p&gt;ここで、 &lt;code&gt; xxxenv&lt;/code&gt; 系のツールとは、例えば **pyenv ** や **goenv ** や &lt;strong&gt;nodeenv&lt;/strong&gt; といったツールを指しています。&lt;/p&gt;&#10;&lt;p&gt;導入することで、1 台の作業用 PC 内に複数バージョンのプログラム言語実行・ビルド環境を構築できます。&lt;/p&gt;&#10;&lt;p&gt;最近は Docker の登場、普及により &lt;code&gt;xxxenv&lt;/code&gt; 系ツールの需要も下がっています。&#10;しかし、Docker による仮想化の進んでいないコードベースもあるため、僕の PC 内では現役で活躍してくれています。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/anyenv/anyenv"&gt;anyenv&lt;/a&gt; は、これら &lt;code&gt;xxxenv&lt;/code&gt; 系のツールを一元管理するための上位のツールとなっています。&lt;/p&gt;&#10;&lt;p&gt;便利ですが &lt;strong&gt;anyenv&lt;/strong&gt; でインストールされた &lt;code&gt;xxxenv&lt;/code&gt; 系ツールで、最新バージョンがインストールできないときがあります。&lt;/p&gt;&#10;&lt;p&gt;具体的には &lt;code&gt;anyenv&lt;/code&gt; を使ってインストールした &lt;code&gt;goenv&lt;/code&gt; を使っていたときに、Go の最新バージョンをインストールできない時がありました。&lt;/p&gt;&#10;&lt;p&gt;この問題に対処します。&lt;/p&gt;&#10;&lt;h2 id="検証環境"&gt;検証環境&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;span class="lnt"&gt;7&#10;&lt;/span&gt;&lt;span class="lnt"&gt;8&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ uname -moi&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;arm64 unknown Darwin&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ bash -version &lt;span class="p"&gt;|&lt;/span&gt; head -n &lt;span class="m"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GNU bash, バージョン 5.2.2&lt;span class="o"&gt;(&lt;/span&gt;1&lt;span class="o"&gt;)&lt;/span&gt;-release &lt;span class="o"&gt;(&lt;/span&gt;aarch64-apple-darwin21.6.0&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ anyenv --version&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;anyenv 1.1.5&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="anyenv-について"&gt;anyenv について&lt;/h2&gt;&#10;&lt;p&gt;anyenv について、サラッと触れておきます。&lt;/p&gt;</description></item><item><title>Terraformでstateのロックを解除する方法、ロックを手動で行う方法</title><link>https://genzouw.com/entry/2021/07/19/142312/2730/</link><pubDate>Mon, 19 Jul 2021 14:23:12 +0900</pubDate><guid>https://genzouw.com/entry/2021/07/19/142312/2730/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;&#10;&lt;p&gt;Terraform には自動的にステートをロックする機能があります。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;terraform plan&lt;/code&gt; や &lt;code&gt;terraform apply&lt;/code&gt; コマンドを実行したときに自動的にロックされるので、 普段意識して操作する事はありません。&lt;/p&gt;&#10;&lt;p&gt;チーム開発する際には &lt;strong&gt;Terraform&lt;/strong&gt; のステートをクラウドサービス(AWS S3、GCP Cloud Storage、AWS DynamoDB など)を使って管理することが多いでしょう。&lt;/p&gt;&#10;&lt;p&gt;この場合、 &lt;code&gt;terraform plan&lt;/code&gt; コマンド実行中に &lt;strong&gt;Ctrl + C&lt;/strong&gt; などで強制停止してしまうと、クラウドサービス上にロックデータが残ってしまいます。&#10;結果、以降の &lt;code&gt;terraform plan&lt;/code&gt; や &lt;code&gt;terraform apply&lt;/code&gt; コマンドを実行できなくなってしまいます。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;これを解消する方法&lt;/strong&gt; と &lt;strong&gt;逆に明示的にロックを行い、チームメンバーに対して排他する方法&lt;/strong&gt; について紹介します。&lt;/p&gt;&#10;&lt;h2 id="検証環境"&gt;検証環境&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;span class="lnt"&gt;7&#10;&lt;/span&gt;&lt;span class="lnt"&gt;8&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ uname -moi&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;x86_64 MacBookPro16,1 Darwin&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ bash -version &lt;span class="p"&gt;|&lt;/span&gt; head -n &lt;span class="m"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GNU bash, version 5.1.8&lt;span class="o"&gt;(&lt;/span&gt;1&lt;span class="o"&gt;)&lt;/span&gt;-release &lt;span class="o"&gt;(&lt;/span&gt;x86_64-apple-darwin20.3.0&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ terraform --version &lt;span class="p"&gt;|&lt;/span&gt; head -n &lt;span class="m"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Terraform v0.13.7&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="ステートのロックを解除する方法"&gt;ステートのロックを解除する方法&lt;/h2&gt;&#10;&lt;p&gt;僕は GCP の Cloud Storage を使うことが多いのですが、中途半端にステートのロックが残ってしまった場合には &lt;code&gt;gs://XXXXX&lt;/code&gt; といったステート管理バケット上にロックファイルが残ってしまいます。&#10;こちらを直接削除してもいいのですが、 &lt;code&gt;terraform&lt;/code&gt; コマンドにロック解除コマンドが提供されているのでこれを利用するのが良いでしょう。&lt;/p&gt;</description></item><item><title>TerraformでGCPのPub/Subを作成する②-Pub/Sub の作成</title><link>https://genzouw.com/entry/2021/03/13/080051/2453/</link><pubDate>Sat, 13 Mar 2021 08:00:51 +0900</pubDate><guid>https://genzouw.com/entry/2021/03/13/080051/2453/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://genzouw.com/entry/2021/03/12/080016/2447/"&gt;Terraform で GCP の Pub/Sub を作成する ①-Terraform をインストール&lt;/a&gt; からの続きです。&lt;/p&gt;&#10;&lt;p&gt;前回のエントリでは、 &lt;a href="https://www.terraform.io/"&gt;Terraform&lt;/a&gt; を MacBookPro にインストールするところまでを行いました。&#10;僕の MacBookPro では、インストール時にエラーが多数発生して解決までにいくつもの工程を踏む必要がありました。&lt;/p&gt;&#10;&lt;p&gt;今回のエントリでは、 &lt;strong&gt;GCP&lt;/strong&gt; 上に &lt;strong&gt;Pub/Sub&lt;/strong&gt; の　&lt;strong&gt;Topic(トピック)&lt;/strong&gt; と &lt;strong&gt;Subscription(サブスクリプション)&lt;/strong&gt; を構築していきます。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;用語が不明な方は以下を参照ください。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2021/02/09/184018/2167/"&gt;Google Cloud Pub/Sub について学習中（非同期メッセージングを図示してみました） | ゲンゾウ用ポストイット&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2021/02/10/080020/2179/"&gt;Google Cloud Pub/Sub の登場人物と役割を整理してみました | ゲンゾウ用ポストイット&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="検証環境"&gt;検証環境&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;span class="lnt"&gt;7&#10;&lt;/span&gt;&lt;span class="lnt"&gt;8&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ uname -moi&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;x86_64 MacBookPro16,1 Darwin&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ bash -version &lt;span class="p"&gt;|&lt;/span&gt; head -n &lt;span class="m"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GNU bash, version 5.0.18&lt;span class="o"&gt;(&lt;/span&gt;1&lt;span class="o"&gt;)&lt;/span&gt;-release &lt;span class="o"&gt;(&lt;/span&gt;x86_64-apple-darwin19.5.0&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ terraform -version&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Terraform v0.14.8&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="事前準備前提条件"&gt;事前準備、前提条件&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;gcloud auth login&lt;/code&gt; 済みであること&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;gcloud&lt;/code&gt; コマンドを実行して &lt;strong&gt;GCP&lt;/strong&gt; プロジェクト内に &lt;strong&gt;Pub/Sub&lt;/strong&gt; リソースを作成する権限を持っていること&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;em&gt;今回は権限ではまりたくないため、GCP プロジェクト内に登録されている自分の権限を利用します。&lt;/em&gt;&lt;/p&gt;</description></item><item><title>TerraformでGCPのPub/Subを作成する①-Terraformをインストール</title><link>https://genzouw.com/entry/2021/03/12/080016/2447/</link><pubDate>Fri, 12 Mar 2021 08:00:16 +0900</pubDate><guid>https://genzouw.com/entry/2021/03/12/080016/2447/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;&#10;&lt;p&gt;今まで GCP のリソースをシェルスクリプトで作成していましたが、いい加減クラウド環境構築のデファクトスタンダードである &lt;strong&gt;&lt;a href="https://www.terraform.io/"&gt;Terraform&lt;/a&gt;&lt;/strong&gt; に移行しようと思っていました。&lt;/p&gt;&#10;&lt;p&gt;時間ができたので、ようやく重い腰をあげました。&lt;/p&gt;&#10;&lt;p&gt;とはいえ、想定外に時間がかかってしまったので、今日は Terraform を自分の MacBookPro にインストールするところまでにしておきます。&lt;/p&gt;&#10;&lt;h2 id="検証環境"&gt;検証環境&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ uname -moi&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;x86_64 MacBookPro16,1 Darwin&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ bash -version &lt;span class="p"&gt;|&lt;/span&gt; head -n &lt;span class="m"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GNU bash, version 5.0.18&lt;span class="o"&gt;(&lt;/span&gt;1&lt;span class="o"&gt;)&lt;/span&gt;-release &lt;span class="o"&gt;(&lt;/span&gt;x86_64-apple-darwin19.5.0&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ brew --version&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Homebrew 3.0.5-12-g94431ce&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Homebrew/homebrew-core &lt;span class="o"&gt;(&lt;/span&gt;git revision e6ce0b2835&lt;span class="p"&gt;;&lt;/span&gt; last commit 2021-03-10&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Homebrew/homebrew-cask &lt;span class="o"&gt;(&lt;/span&gt;git revision cdab18c620&lt;span class="p"&gt;;&lt;/span&gt; last commit 2021-03-10&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="terraform-ってなに"&gt;Terraform ってなに？&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://www.terraform.io/"&gt;Terraform by HashiCorp&lt;/a&gt; から抜粋します （ 2021-03-10 現在 ）。&lt;/p&gt;</description></item></channel></rss>