Closed inductor closed 3 years ago
このプロバイダーではGitHubから公開鍵を取得する機能を直接はサポートしていません。 しかしhttpプロバイダーなどを組み合わせることでコントロールパネルと同等の機能を実現可能です。
GitHubの公開鍵はhttps://github.com/<GitHubのユーザ名>.keys
から参照可能なので、httpプロバイダーを利用して公開鍵を取得〜それを用いてさくらのクラウド上に公開鍵を登録することで実現します。
# GitHub上の公開鍵を参照するためのデータソース
data "http" "key" {
url = "https://github.com/<GitHubのユーザ名>.keys" # 任意のユーザー名に置き換える
}
# データソースを参照してさくらのクラウド上にSSH公開鍵を登録
resource "sakuracloud_ssh_key" "key" {
name = "example"
public_key = data.http.key.body
}
動作する完全なコード例は以下のようになります。
terraform {
required_providers {
http = {
source = "hashicorp/http"
version = "2.1.0"
}
sakuracloud = {
source = "sacloud/sakuracloud"
version = "2.7.1"
}
}
}
variable "password" {}
data "sakuracloud_archive" "ubuntu" {
os_type = "ubuntu2004"
}
resource "sakuracloud_disk" "example" {
name = "example"
source_archive_id = data.sakuracloud_archive.ubuntu.id
}
resource "sakuracloud_server" "example" {
name = "example"
disks = [sakuracloud_disk.example.id]
network_interface {
upstream = "shared"
}
disk_edit_parameter {
password = var.password
ssh_key_ids = [sakuracloud_ssh_key.key.id]
}
}
resource "sakuracloud_ssh_key" "key" {
name = "example"
public_key = data.http.key.body
}
data "http" "key" {
url = "https://github.com/<GitHubのユーザ名>.keys" # 任意のユーザー名に置き換える
}
上記のコードでサーバを作成すると、作成したサーバ上の~/.ssh/authorized_keys
にGitHub上の公開鍵が登録されているはずです。
不明点などあれば再オープンしてください。
コンソールでいうとこれと同じことが実現したいのですが、可能でしょうか?