Skip to content

Blog

Terraform で JSON ファイルを扱う

Terraform を利用する際、一般的には HCL (HashiCorp Configuration Language) 形式で記載された .tf (Template File) を利用するケースをよく見かけます。 ですが、Terraform 自体は HCL = .tf ファイル以外にも JSON を扱うことも出来ます。 .tf ファイルを JSON 形式に変換するには HashiCorp 公式の hcldec を使う方法もありますが、より手軽に OSS の tmccombs/hcl2json を利用する方法もあります。 今回はこの hcl2json を利用し、HCL を JSON 形式に変換する方法をメモしておきます。 尚、今回は Ubuntu 22.04LTS 上でテストしました。

Terraform で検証用設定する際、設定名に Prefix を付与する

Terraform で検証用の AWS や GCP を設定する際、"検証用の設定" であることを分かりやすくする為、設定名に接頭辞 = Prefix を付与したい場合があります (私の場合!)。 設定毎に Prefix を付与しても良いのですが「Prefix を変更したい」といった場合に置換する手間が発生します。 こういった場合は Terraform の変数 = variable を使うことで「Prefix を変数として付与する」といった記述が可能になります。

ACI では Dynamic VLAN Pool に Infra VLAN ID を含めるとエラー

Cisco ACI では利用するポートを VLAN Pool として定義しますが、VLAN Pool に VLAN を割り当てる際は Static AllocationDynamic Allocation の、ふたつの方法があります。 一般的に「Physical Domain であれば Static AllocationVMM Domain であれば Dynamic Allocation」を利用することが多いように思います。 ですが、Static AllocationDynamic Allocation では指定可能な VLAN ID に微妙な差があるようです。 今回は ACI バージョン 6.0(1j) で検証しました。

Ubuntu 22.04LTS で dnsmasq を異ネットワークから応答出来るように設定する

以前に Ubuntu 22.04LTS へ dnsmasq をインストールする というメモを書きました。 但し、dnsmasq はデフォルト状態では「同じネットワークからの名前解決要求にしか応答しない」という設定になっているようです。 そこで今回は改めて dnsmasq のインストール手順に加え、「異なるネットワークからの名前解決要求にも応答する設定例」をメモしておきます。

Ubuntu でパッケージをオフラインインストールする

オフラインの Ubuntu 環境へパッケージをインストールするには以下のような手順が必要です。

  1. 事前にインターネットからパッケージをダウンロードしておく
  2. ダウンロードしたパッケージをオフライン環境の Ubuntu にコピーする
  3. オフライン環境にパッケージをインストールしておく

具体的な手順をメモしておきます。

ACI 5.x 系からは TLS 1.0 や 1.1 は非サポート

Cisco ACI は HTTPS で接続可能な TLS バージョンを FabricFabric PoliciesPoliciesPodManagement Access から設定可能です。 ACI バージョンにってサポートしている SSL/TLS バージョンが異なります。

TLS バージョン 4.x 系 5.x 系
TLS 1.0 X
TLS 1.1 X
TLS 1.2
TLS 1.3 X

AWS EC2 上のインスタンスを一覧表示する awscli のワンライナー

「AWS EC2 上のインスタンスを一覧表示する awscli のワンライナー」は以下の通りです。 ~/.aws/config で設定済みリージョンに対して実行する想定です。

1
aws ec2 describe-instances --output=table --query 'Reservations[].Instances[].{InstanceId: InstanceId, GlobalIP: join(`, `, NetworkInterfaces[].Association.PublicIp), State: State.Name, Name: Tags[?Key==`Name`].Value|[0]}'

実行例は以下の通りです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$ aws ec2 describe-instances --output=table --query 'Reservations[].Instances[].{InstanceId: InstanceId, GlobalIP: join(`, `, NetworkInterfaces[].Association.PublicIp), State: State.Name, Name: Tags[?Key==`Name`].Value|[0]}'
----------------------------------------------------------------------------
|                             DescribeInstances                            |
+---------------+-----------------------+-----------------------+----------+
|   GlobalIP    |      InstanceId       |         Name          |  State   |
+---------------+-----------------------+-----------------------+----------+
|  3.115.xxx.xxx|  i-0123456789abcdef1  |  linux1               |  running |
|  3.115.xxx.xxx|  i-0123456789abcdef2  |  linux2               |  running |
|  3.115.xxx.xxx|  i-0123456789abcdef3  |  linux3               |  running |
+---------------+-----------------------+-----------------------+----------+