![Flatcar Linux를 사용한 Cloud Init - 사용자 정의 파일을 전달할 때 구성이 적용되지 않습니까?](https://rvso.com/image/756228/Flatcar%20Linux%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%9C%20Cloud%20Init%20-%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%A0%95%EC%9D%98%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%A0%84%EB%8B%AC%ED%95%A0%20%EB%95%8C%20%EA%B5%AC%EC%84%B1%EC%9D%B4%20%EC%A0%81%EC%9A%A9%EB%90%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
나는 사용하고있다텔메이트의Terraform 제공업체:프록시목스그리고 배포하려고무개 화차Linux 가상 머신 사용클라우드 초기화다음을 통해 파일을 전달함으로써관습. 그들의 기준으로예, 다음 Terraform 파일을 만들었습니다.
variable "pve_user" {
}
variable "pve_password" {
}
variable "pve_host" {
}
provider "proxmox" {
pm_tls_insecure = true
pm_api_url = "https://SNIP/api2/json"
pm_user = "SNIP"
pm_password = "SNIP"
pm_parallel = 4
}
resource "null_resource" "cloud_init_config_files" {
connection {
type = "ssh"
user = var.pve_user
password = var.pve_password
host = var.pve_host
}
provisioner "file" {
source = "./templates/cloud-config.yml"
destination = "/var/lib/vz/snippets/cloud-config.yml"
}
}
resource "proxmox_vm_qemu" "k8s-masters" {
depends_on = [
null_resource.cloud_init_config_files
]
count = 1
name = "VM-${count.index}"
clone = "VM-Template"
full_clone = true
target_node = "192.168.20.10"
pool = "VM"
cores = 2
sockets = 1
memory = 10240
network {
id = 0
model = "virtio"
bridge = "vmbr0"
tag = 50
}
disk {
id = 0
type = "scsi"
size = 30
storage = "Pool"
storage_type = "zfspool"
backup = true
iothread = true
}
onboot = true
agent = 1
os_type = "cloud-init"
ssh_user = "core"
cicustom = "user=local:snippets/cloud-config.yml"
ipconfig0 = "ip=192.168.50.10/24,gw=192.168.50.1"
sshkeys = "ssh-rsa SNIP"
ssh_private_key = <<EOF
-----BEGIN RSA PRIVATE KEY-----
SNIP
-----END RSA PRIVATE KEY-----
EOF
}
실행 후 terraform apply
VM이 성공적으로 생성되고 Flatcar가 부트스트랩됩니다. 그러나 Proxmox를 통해 콘솔에 연결하면 VM에는 IP 주소가 내가 제공한 주소가 아닌 DHCP를 통해 수신된 주소로 표시됩니다. 게다가 SSH 키가 작동하지 않아 문제 해결을 위해 VM에 연결할 수 없습니다.
해당 행을 주석 처리 cicustom
하고 단순히 ipconfig0
다른 일반 옵션에 의존하면 VM이 나타나고 SSH 키가 실제로 작동합니다. 그러나 지정된 IP 주소는 여전히 사용되지 않습니다. VM은 대신 DHCP에서 제공하는 것을 사용합니다. VM에 액세스할 수 있음에도 불구하고 더 강력한 구성 옵션에 액세스할 수 있도록 여전히 커스텀 Cloud Init 구성 파일을 사용하고 싶습니다.
나는 내 cloud-config.yml
파일의 다양한 조합을 시도했습니다. 다음과 같은 간단한 것들을 포함합니다:
hostname: test
다음과 같은 더 자세한 사항에 대해:
storage:
files:
- path: /opt/file1
filesystem: root
contents:
inline: Hello, world!
mode: 0644
user:
id: 500
group:
id: 501
passwd:
users:
- name: core
ssh_authorized_keys:
- ssh-rsa SNIP
이 모든 것에도 불구하고 무언가를 전달한 후에는 SSH 키가 작동하지 않으며 cicustom
호스트 이름이 조작되지 않는다는 사실을 토대로 Cloud Init이 사용자 지정 구성 파일을 전혀 수신하지 않는 것으로 가정합니다. 나는 둘 다 통과하려고 노력했다Ignition 및 컨테이너 Linux 구성형식화된 파일.
Flatcar Linux는 Proxmox/cicustom과 호환되지 않나요? Google에서 "flatcar" "proxmox"
, "coreos" "proxmox"
, "container linux" "proxmox"
, 등 을 검색해 "flatcar" "cicustom"
도 결과가 많이 나오지 않는 것 같습니다. 클라우드 네이티브 운영 체제와 베어메탈을 연결하는 사람이 많지 않은 것 같은데요? 헤헤헤
그러나 떠오르는 것은이 흥미로운 스크립트. 104-132행에서는 Proxmox용 Flatcar/CoreOS 템플릿 생성에 대해 설명합니다. 그렇다면 적어도 다른 사람이 이전에 이런 일을 한 적이 있습니까? 나중에 사용자 지정 클라우드 초기화 구성 파일을 전달했는지 누가 알 수 있나요?
어떤 아이디어가 있나요?
편집하다: ------------------------------------------------ ------------
user-configdrive
통과하지 못한 경우 systemd 장치 에서 로그를 추가했습니다.cicustom
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 Checking availability of "cloud-drive"
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 Fetching user-data from datasource of type "cloud-drive"
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 Attempting to read from "/media/configdrive/openstack/latest/user_data"
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 line 6: warning: unrecognized key "chpasswd"
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 line 9: warning: incorrect type for "users[0]" (want struct)
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 line 10: warning: unrecognized key "package_upgrade"
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 Fetching meta-data from datasource of type "cloud-drive"
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 Attempting to read from "/media/configdrive/openstack/latest/meta_data.json"
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 Attempting to read from "/media/configdrive/openstack/content/0000"
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 Parsing user-data as cloud-config
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 Merging cloud-config from meta-data and user-data
Aug 20 16:22:17 VM-0 coreos-cloudinit[831]: 2020/08/20 16:22:17 Set hostname to VM-0
Aug 20 16:22:17 VM-0 coreos-cloudinit[831]: 2020/08/20 16:22:17 Authorized SSH keys for core user
Aug 20 16:22:17 VM-0 coreos-cloudinit[831]: 2020/08/20 16:22:17 Failed to apply cloud-config: Invalid option to manage_etc_hosts
Aug 20 16:22:17 VM-0 systemd[1]: user-configdrive.service: Main process exited, code=exited, status=1/FAILURE
편집 2: --------------------- -----------
위 Systemd 유닛이 참조하는 파일의 내용을 추가했습니다.
core@VM-0 ~ $ cat /media/configdrive/openstack/latest/user_data
#cloud-config
hostname: VM-0
manage_etc_hosts: true
ssh_authorized_keys:
- REDACTED
chpasswd:
expire: False
users:
- default
package_upgrade: true
당신이 지적한 것처럼 manage_etc_hosts
Proxmox는 여기에서 true로 설정했습니다.
core@VM-0 ~ $ cat /media/configdrive/openstack/content/0000
auto lo
iface lo inet loopback
dns_nameservers 192.168.1.100
dns_search example.com
auto eth0
iface eth0 inet static
address 192.168.50.10
netmask 255.255.255.0
gateway 192.168.50.1
이 섹션에는 올바른 네트워크 구성이 모두 포함되어 있지만 모두 DHCP에 의해 재정의되므로 무시됩니다.
core@VM-0 ~ $ cat /media/configdrive/openstack/latest/meta_data.json
{
"uuid": "e61563c9057e9162c4e14d111fea171379170532",
"network_config": { "content_path": "/content/0000" }
}
편집 3: ---------------------------------- -----------
커스텀 Cloud Init 파일에 대한 시도를 추가했습니다.
manage_etc_hosts: false
hostname: "test"
ssh_authorized_keys:
- REDACTED
편집 4: ---------------------------------- -----------
나는 팔로우했다이 가이드기본적으로 Proxmox를 사용하는 대신 qemu를 사용하여 동일한 작업을 직접 수행합니다. 사용:
이것 cloud-config.ign
:
{
"ignition": { "version": "2.2.0" },
"passwd": {
"users": [
{
"name": "core",
"sshAuthorizedKeys": [
"REDACTED"
]
}
]
},
"storage": {
"files": [{
"filesystem": "root",
"path": "/etc/hostname",
"mode": 420,
"contents": { "source": "data:,test" }
}]
}
}
아니면 이거 cloud-config.yml
:
hostname: test
passwd:
users:
- name: tj
ssh_authorized_keys:
- REDACTED
둘 다 동일한 결과를 생성합니다. 호스트 이름으로 회전하는 연결 불가능한 가상 머신입니다 localhost
.
편집 5: --------------------- -----------
user-configdrive.service
이러한 로그는 Flatcar 템플릿에 대해 Telmate의 공급자를 사용할 때 생성됩니다 .
Aug 21 21:41:50 localhost coreos-cloudinit[795]: 2020/08/21 21:41:50 Checking availability of "cloud-drive"
Aug 21 21:41:50 localhost coreos-cloudinit[795]: 2020/08/21 21:41:50 Fetching user-data from datasource of type "cloud-drive"
Aug 21 21:41:50 localhost coreos-cloudinit[795]: 2020/08/21 21:41:50 Attempting to read from "/media/configdrive/openstack/latest/user_data"
Aug 21 21:41:50 localhost coreos-cloudinit[795]: 2020/08/21 21:41:50 Fetching meta-data from datasource of type "cloud-drive"
Aug 21 21:41:50 localhost coreos-cloudinit[795]: 2020/08/21 21:41:50 Attempting to read from "/media/configdrive/openstack/latest/meta_data.json"
Aug 21 21:41:50 localhost coreos-cloudinit[795]: 2020/08/21 21:41:50 Attempting to read from "/media/configdrive/openstack/content/0000"
Aug 21 21:41:50 localhost coreos-cloudinit[795]: Detected an Ignition config. Exiting...
Aug 21 21:41:50 localhost systemd[1]: Started Load cloud-config from /media/configdrive.
편집 6: ---------------------------------- -----------
여기cloud-config.ign
Telmate 공급자와 함께 EDIT 4를 사용한 후 첫 번째 출력의 전체 Systemd 저널입니다 .
편집 7: --------------------- -----------
이 qm
명령은 cicustom
.
qm create 101 --name test --cores 2 --memory 2048 --net0 "virtio,bridge=vmbr0"
qm set 101 --net0 "virtio,bridge=vmbr0,tag=50"
qm importdisk 101 /mnt/RAIDPool_Templates/template/iso/flatcar_production_qemu_image.img FlashPool
qm set 101 --scsihw virtio-scsi-pci --scsi0 FlashPool:vm-101-disk-0 --ide2 FlashPool:cloudinit --boot c --bootdisk scsi0 --serial0 /dev/tty0 --ipconfig0 ip=dhcp --citype configdrive2
qm set 101 --cicustom user=RAIDPool_Templates:snippets/user-data.yml
qm start 101
ssh -i ~/.ssh/sol.milkyway.kubernetes [email protected]
사용자 데이터.yml:
#cloud-config
hostname: test
manage_etc_hosts: true
ssh_authorized_keys:
- ssh-rsa REDACTED
chpasswd:
expire: False
users:
- default
package_upgrade: true
하지만 리소스 내 user-data.yml
에서 동일한 내용을 전달하는 것이 작동하지 않는 것 같습니다.cicustom
proxmox_vm_qemu