Molecule용 Hetzner Cloud 드라이버입니다.
이 플러그인을 사용하면 분자 통합 테스트를 위해 주문형 Hetzner Cloud 서버를 사용할 수 있습니다.
$ pip install molecule-hetznercloud
이 프로젝트는 Semantic Versioning을 준수합니다.
$ pip install --upgrade molecule-hetznercloud
molecule.yml
파일에서 분자 드라이버 이름( driver.name
)의 이름을 molecule_hetznercloud
로 바꿉니다. driver:
- name: hetznercloud
+ name: molecule_hetznercloud
molecule.yml
파일에서 볼륨 이름( platforms[].volumes[].name
) 필드가 필수입니다. 필드가 누락된 경우 반드시 추가해야 합니다. platforms:
- name: instance-1
image: debian-12
volumes:
- - size: 20
+ - name: volume-1
+ size: 20
각 리소스(서버, 볼륨, 네트워크) 이름에는 역할 및 시나리오 경로에 따라 해시(32자)가 접두사로 붙습니다. 이는 시나리오 전반에 걸쳐 동일한 이름(예: instance-1
)을 재사용할 수 있음을 의미합니다. 리소스 이름은 최대 길이를 초과해서는 안 됩니다. 예를 들어 서버 이름의 최대 길이는 63자이고 접두사 이름에는 31자만 남습니다.
molecule.yml
파일에서 플랫폼 서버 유형( platforms[].server_type
) 필드의 기본값은 이제 cx22
입니다. 이미 기본값을 사용하고 있다면 해당 필드를 제거할 수 있습니다.
platforms:
- name: instance-1
image: debian-12
- server_type: cx22
Hetzner Cloud API와 통신하려면 HCLOUD_TOKEN
환경 변수를 노출해야 합니다. 인증 문서에서 Hetzner Cloud API 토큰을 얻는 방법에 대해 자세히 알아보세요.
$ export HCLOUD_TOKEN= " set_the_hcloud_token_here "
그런 다음 드라이버 플러그인을 사용하여 새로운 분자 시나리오를 설정하십시오.
$ molecule init scenario --driver-name molecule_hetznercloud
경고
분자 6에서는 molecule init scenario
명령이 드라이버 제공 구성에 대한 지원을 중단했습니다. 분자 >=6을 사용하는 경우 아래 예를 복사하여 시나리오 molecule.yml
파일에 붙여넣으세요. 자세한 내용은 이 커밋을 참조하세요.
그러면 molecule/default/molecule.yml
다음과 같아야 합니다.
---
driver :
name : molecule_hetznercloud
platforms :
- # Name of the Server to create (must be unique per Project and a valid hostname as per RFC 1123).
# required
name : instance-1
# Name of the Image the Server is created from.
# required
image : debian-12
# Name of the Server type this Server should be created with.
# default: cx22
server_type : cx22
# Name of Location to create Server in (must not be used together with datacenter).
# default: omit
location : hel1
# Name of Datacenter to create Server in (must not be used together with location).
# default: omit
datacenter : null
# Cloud-Init user data to use during Server creation. This field is limited to 32KiB.
# default: omit
user_data : null
# List of volumes to attach to the server.
volumes :
- # Name of the volume.
# required
name : volume-1
# Size of the Volume in GB.
# default: 10
size : 10
# Dictionary of private networks the server should be attached to.
networks :
# Name of the network
network-1 :
# IP range of the whole network which must span all included subnets. Must be one of the private IPv4 ranges of RFC1918.
# If multiple hosts using the same network, you may only define it once.
# required
ip_range : 10.0.0.0/16
subnet :
# IP to assign to the server.
# required
ip : 10.0.0.1/24
# Type of subnetwork.
# default: cloud
type : cloud
# Name of network zone.
# default: eu-central
network_zone : eu-central
network-2 :
ip_range : 10.1.0.0/16
subnet :
ip : 10.1.0.1/24
메모
networks.ip_range
는 생성에 중요합니다. 호스트가 여러 개인 경우 한 번만 정의할 수 있습니다.
메모
hcloud
명령줄 도구를 사용하여 서버 유형과 사용 가능한 이미지를 나열할 수 있습니다.
# List server types
$ hcloud server-type list --sort name
# List images for the x86 architecture
$ hcloud image list --type system --architecture x86 --sort name
그런 다음 역할을 테스트하십시오.
$ molecule test
작업을 시작하기 위한 초기 디버깅을 쉽게 하려면 다음 환경 변수도 노출하세요.
$ export MOLECULE_NO_LOG=False # not so verbose, helpful
$ export MOLECULE_DEBUG=True # very verbose, last ditch effort
예를 들어 CI 워크플로에서 다음 환경 변수를 노출하여 사용자 지정 리소스 네임스페이스를 정의할 수도 있습니다.
$ export RESOURCE_NAMESPACE=e121dc64ff615ccdfac71bb5c00296b9 # Ensure the value length is <= 32
단위 테스트를 실행합니다.
make test
통합 테스트 실행
export HCLOUD_TOKEN= " set_the_hcloud_token_here "
make integration
이 프로젝트는 처음에 @decentral1se에 의해 유지되었습니다. 오랜 기간 동안 새로운 관리자를 찾은 후 프로젝트는 2023년 초에 보관되었습니다.
2023년 9월, @jooola가 코드를 다시 작성했고 프로젝트가 다시 활성화되어 개발을 계속했습니다.
LGPLv3 라이센스.