zaki work log

作業ログやら生活ログやらなんやら

AWS

[Ansible Builder / AWS] CodeCommit + CodeBuild 環境でEEの自動ビルドとECRへpush (起動は手動)

プライベートではGitHub Actions使ったEEの自動ビルドを1年前に試したけど、業務だとCodeCommit環境を使ってたりするので、せっかくなのでAWSのサービスを使ったビルド環境を試してみた。 初めに軽く検索した感じだと、CodeBuildではコンテナで処理がされる…

[AWS / Terraform] EC2作成時のユーザーデータ内で動的に割り当てられるIPアドレスやパブリックDNSの参照とIMDSv2の設定

TerraformでEC2プロビジョニング時に、ユーザーデータ内でパブリックDNS名を参照しようとしたらすんなり実装できなかったのでメモ。 AWSでEC2をプロビジョニングする際にホスト上の初期処理を投入したい場合は、実行したいコマンドをシェルスクリプトとして…

[Terraform] Data Sourcesを使った対象リージョンのAZの実行時取得

指定のリージョンにおけるアベイラビリティゾーンは何があるか?のように、自分が実装する内容でなくAWS(プロバイダ)の情報を取得したい場合は、データソースを使うことで情報参照ができる。 developer.hashicorp.com アベイラビリティゾーンを参照するため…

Ansibleからterraform applyを実行するタスクの実装

Terraformでインフラをプロビジョニングしたあとに上物に対してAnsibleで何か(アプリをインストールしたりデータを投入したり)処理をするようなことが多いので、AnsibleからTerraformを実行するようにして一発で処理できるようにするにはどうするか実装を確…

[Terraform / AWS] EventBridge Schedulerを使ったVMの自動起動と停止

EventBridge Schedulerを使ったVMの自動on/off設定をCloudFormationを使って設定するには以下のClassmethodさんの記事を見れば一通り実装できます。 dev.classmethod.jp ここではTerraformを使った実装についてのまとめ。 こうしたらうまくいった、という感…

[Terraform] EC2のEIP設定とdomain="vpc"定義とAWSプロバイダーのアップグレード

EC2にEIPを設定したくて以下のようなtfファイルを作成 resource "aws_instance" "sample" { : } resource "aws_eip" "sample-eip" { instance = aws_instance.sample.id domain = "vpc" depends_on = [aws_internet_gateway.igw] tags = { Name = "sample-ei…

[Ansible] S3互換オブジェクトストレージのデータをget/putする

本エントリは、Ansible Advent Calendar 2023の8日目の記事です。 昨日のAnsibleアドカレ7日目で id:usagi_automate さんがAWXで作成したテキストファイルをZipに固めて手元に持ってきたい - うさラボという記事で「バイナリデータもBase64でテキスト化して…

[Ansible] 任意のタイミングでダイナミックインベントリのホスト情報収集を行う

Ansibleで(CFnなどのモジュールを使って、も含む)クラウドリソースを作成し、後続のタスクで作成したコンピュートインスタンス(EC2)へ接続して処理を行いたい、みたいなケースで、ダイナミックインベントリを使用することでタグなどを使ってEC2情報を動的に…

[Ansible / AWS] ダイナミックインベントリを使ってEC2接続先を動的に取得してAnsible実行お試し

Ansibleのダイナミックインベントリを使ったEC2アクセスについて、以前試したような試してないような記憶がおぼろげで、メモも無かったので簡単にまとめてみた。 docs.ansible.com 必要パッケージ クラウド上のEC2状態 アクセスキー設定 インベントリファイ…

[Terraform] EC2のセキュリティグループ指定はsecurity_groupsでなくvpc_security_group_idsを使えば強制再作成されない

結論 VPCでEC2インスタンス作成する定義の場合は、security_groupsでなくvpc_security_group_idsでセキュリティグループを指定しましょう。 該当ドキュメントはこちら 実装例は以下。 github.com 事象 お題は以下のコード zaki-hmkc.hatenablog.com コード r…

[Terraform] countまたはfor_eachを使った複数リソース作成

countを使うことで簡単に同じリソースを複数作成できる。 learn.hashicorp.com countを使った個数指定 countの指定 インデックス値参照 for_eachを使ったリスト指定 リスト定義 for_eachの指定 残課題 つかいわけ 元ネタは以下で作成した定義ファイル。 zaki…

[Terraform] 変数を定義・参照する

ハードコーディングしていた変数を別ファイルに定義してみる。 元の定義ファイル variableで変数定義 変数のセット terraform.tfvarsで変数セット コマンドライン引数でセット 環境変数でセット 変数参照の優先順位 環境 サンプルコード 記事中のCIDRが172.2…

Terraformをv0.15に更新してAWSにEC2を作成するサンプルを動作

Terraformがv0.15にアップデートされたので、手元の環境も更新してみた。 以前お試しで作ったv0.12で動いていたソースでプロバイダ設定を新しい書式に更新すれば動作した。 zaki-hmkc.hatenablog.com qiita.com サンプルレベルだとおそらくv0.14 -> v0.15固…

[AWS/EKS] eksctlでバージョン指定してクラスタ作成

検証なんかでeksctlでバージョン指定してKubernetesクラスタを作成したいときは、--versionを使用する。 $ time eksctl create cluster \ --name eks-1-15 \ --region ap-northeast-1 \ --nodegroup-name eks-ng-1-15 \ --node-type t3.micro \ --nodes 1 \ …

[AWS/EKS] eksctlでよく使いそうなクラスタ・ノードグループ作成のオプション (コマンドメモ)

前回はうっかりオプション何もなしでクラスタ作ってしまったので、eksctlで作成できるEKSクラスタ、オプションを指定してノードの設定などいろいろ初期設定してみる。 新規作成時のオプション デプロイ可能なpod数について ノードにsshしてみる ノードグルー…

[AWS/EKS] eksctlコマンドを使ってK8sクラスタをコマンド1発で作成・削除

EKSのCLIツールであるeksctlを使ってEKSクラスタを作った時のメモ。 必要な操作はすべて公式ドキュメントに載っているので、野良記事を参考にせずに公式ドキュメントを見ること。 docs.aws.amazon.com CLIツールをインストール EKSクラスタの作成 認証情報 v…

[AWS] CLIツールのインストール(on Linux)

LinuxへAWSのCLIツール(version 2)を入れる。 ただそれだけ。 以前はpipで入れてた気がするけど、今はzipでバイナリをダウンロードする方式になっている。 docs.aws.amazon.com インストール 初期設定 お試し インストール [zaki@cloud-dev aws]$ curl "http…

[Terraform / AWS] 勘と雰囲気と勢いでEC2インスタンス作成してsshアクセスまで入門

クラウドのリソースで似たものをたくさん作る機会があってその時は温かみのある手作業で対応したんだけど、どう考えてもコード化した方が良かったので、Terraformの使い方についてAWSでVPCからEC2作成までお試し入門してみた。 お題 Terraform CLIツールのイ…