TerraformでYYYYMMDD_hhmmss形式の文字列をファイル名に追記する

今日は小ネタ。

Terraformでいわゆるタイムスタンプを「YYYYMMDD_hhmmss」形式で出力して、ファイルなどに出力することをやってみました。

Terraformはクラウド上にリソースを作成するという機能が注目されていますが、ローカルファイルを作成することもできます。

registry.terraform.io

タイムスタンプを取得するにはtimestamp()を呼び出します。

www.terraform.io

ここで得られた値をいわゆる「YYYYMMDD_hhmmss」形式で出力するにはformatdate()を呼び出せばよさそうです。

www.terraform.io

これを使って以下のようなものを作りました。

locals {
    ts = formatdate("YYYYMMDD_hhmmss", timestamp())
}

resource "local_file" "helloworld" {
    #content = "hello world! at ${formatdate("YYYYMMDD_hhmmss", timestamp())}"
    content = "hello world! at ${local.ts}\n"
    filename = pathexpand("~/hello_${local.ts}.txt")
}

あとはいつも通り、terraform initして、terraform planterraform applyをするとホームディレクトリ以下にhello_+YYYYMMDD_hhmmss.txtというファイルが作成できます。

azureuser@myVM:~/work/tf$ ls -l ~/
total 8
-rwxrwxr-x 1 azureuser azureuser   32 Sep 18 06:52 hello_20220918_065255.txt
drwxrwxr-x 4 azureuser azureuser 4096 Sep 18 05:41 work
azureuser@myVM:~/work/tf$ cat ~/hello_20220918_065255.txt
hello world! at 20220918_065255
azureuser@myVM:~/work/tf$

時刻はUTCなのが注意点ですね。