nl2go.hetzner_installimage

Ansible Role: Hetzner Installimage

HetznerサーバーのOSイメージのインストールライフサイクルを管理するAnsibleの役割です。 Hetzner Robot API を使用します。

前提条件

要件

名前 タイプ バージョン 位置
ansible-filter Pythonパッケージ 1.0.1 コントロールノード

設定変数

以下の変数は、ansible.cfgファイル内で設定することをお勧めします。

[defaults]
inventory = __YOUR_INVENTORY__
forks = 1
host_key_checking = false
private_key_file = __YOUR_HETZNER_PROVISIONING_KEY__
remote_user = root
roles_path = __PATH_TO_YOUR_GALAXY_ROLES__
[ssh_connection]
pipelining = True
scp_if_ssh = True
control_path = %(directory)s/%%h-%%r

ロール変数

デフォルトの変数セットはインストールイメージを定義しており、group_vars/host_varsで上書きするのが望ましいです。

hetzner_installimage_install_bootloader: grub
hetzner_installimage_install_hostname: your-server-name-here
hetzner_installimage_install_partitions:
- PART swap swap 32G
- PART /boot ext4 1G
- PART / ext4 all
hetzner_installimage_install_image: Ubuntu-1604-xenial-64-minimal.tar.gz

このロールにはRAIDの自動検出と設定が含まれています。1つのディスクが見つかればRAIDを構成せず、2つのディスクが見つかればRAID1が構成されます。自動RAID設定は以下の変数で上書き可能です。

hetzner_installimage_install_drives:
- DRIVE1 /dev/sda
- DRIVE2 /dev/sdb
hetzner_installimage_install_raid:
- SWRAID 1
- SWRAIDLEVEL 0

単にhetzner_installimage_install_raidを設定し、自動検出に対応するディスクを見つけさせることも可能です。

以下の必須変数は、group_vars/host_varsまたはextra varsとして設定する必要があります。これによりウェブサービスと通信し、公開鍵を展開できます。

hetzner_installimage_webservice_username: username
hetzner_installimage_webservice_password: password

以下の変数はオプションとして設定することができます。これによりHetznerロボット内のホスト名が設定されます。

hetzner_installimage_server_name: __YOUR_SERVER_NAME__

hetzner_installimage_key_fingerprintsが設定されている場合、画像インストールプロセス中に選択された鍵のみがインストールされます。Hetzner Robot Key Managementから他の鍵はすべて追加されます。

hetzner_installimage_key_fingerprints:
    - 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff

プレイブックを成功裏に実行すると、ロールは該当サーバーの/etc/hetzner_installimage_provisioned.flagにフラグファイルを作成します。ロールの最初でそのファイルがホストに存在するかを確認し、それ以降のタスクをスキップします。この動作は変数hetzner_installimage_ignore_provisioned_flagを使用することで回避できます。

--extra-vars "{ hetzner_installimage_ignore_provisioned_flag: yes }"

この変数をtrueに設定すると、フラグファイルのチェックがスキップされます。

プレイブックの例

- hosts: hetzner
  gather_facts: no
  roles:
     - nl2go.hetzner_installimage
  vars:
    hetzner_installimage_webservice_username: "{{ hetzner_robot_api_user}}"
    hetzner_installimage_webservice_password: "{{ hetzner_robot_api_pass}}"
    hetzner_installimage_server_name: "{{ inventory_hostname }}"

重要な注意: 新しいオペレーティングシステムをインストールしたいホストは通常SSHアクセスが設定されていないため、ロールはgather_facts: noで実行する必要があります。

テストフォルダ内のさまざまなテストシナリオのプレイブックでさらに多くの例を確認できます。

ロールは、プレイ内のすべてのホストのデータを消去するためにユーザーから確認を求めます。この確認は、変数hetzner_installimage_skip_confirmationyesに設定することで上書きできます。

extra varsの例は次のようになります。

--extra-vars "{ hetzner_installimage_skip_confirmation : yes }"

インストール手順

  • 新しいマシンのインストール
    1. Hetznerロボットにアクセス (robot.your-server.de)
    2. 新しいサーバーを注文
    3. オペレーティングシステムを選択
    4. プロビジョニングキーを選択
    5. hetzner_installimageロールを実行
  • 既存のマシンのインストール
    1. プロビジョニングキーをHetznerロボットに追加 (robot.your-server.de)
    2. hetzner_installimageロールを実行
  • すでにプロビジョニングされたマシンのインストール
    1. マシンにアクセス
    2. /etc/hetzner_installimage_provisioned.flagを削除または設定
    3. hetzner_installimageロールを実行

誤って使用中のマシンを消去してしまうことが心配でない場合は、extra変数hetzner_installimage_ignore_provisioned_flagを指定してロールを直接実行できます。

--extra-vars "{ hetzner_installimage_ignore_provisioned_flag: yes }"

これにより、ロールは既存の/etc/hetzner_installimage_provisioned.flagファイルをチェックせずに、マシンを消去することを妨げることもありません。

利用可能なイメージ

OSイメージは救済システム内の/root/.oldroot/nfs/images/フォルダにあります。以下の画像が2020年3月25日に利用可能です。

  • Archlinux-2017-64-minimal.tar.gz
  • archlinux-latest-64-minimal.tar.gz
  • CentOS-76-64-minimal.tar.gz
  • CentOS-77-64-minimal.tar.gz
  • CentOS-80-64-minimal.tar.gz
  • CentOS-81-64-minimal.tar.gz
  • CoreOS-1298-64-production.bin.bz2
  • Debian-103-buster-64-LAMP.tar.gz
  • Debian-103-buster-64-minimal.tar.gz
  • Debian-811-jessie-64-minimal.tar.gz
  • Debian-911-stretch-64-minimal.tar.gz
  • Debian-912-stretch-64-minimal.tar.gz
  • Ubuntu-1604-xenial-64-minimal-no-hwe.tar.gz
  • Ubuntu-1604-xenial-64-minimal.tar.gz
  • Ubuntu-1804-bionic-64-minimal.tar.gz
  • Ubuntu-1804-bionic-64-nextcloud.tar.gz
  • Ubuntu-1910-eoan-64-minimal.tar.gz

古いイメージは救済システム内の/root/.oldroot/nfs/images.old/にあります。ロールはまず現在のイメージのフォルダにイメージが存在するかを確認し、次に古いイメージのフォルダを確認し、最初に見つかった場所から使用します。これにより、最新のオペレーティングシステムのイメージがいつか更新されたとしても、ホスト間でオペレーティングシステムを一貫して保つことが可能です。

これらのイメージがうまくいかない場合は、カスタムイメージを使用することもできます。その場合は、hetzner_installimage_custom_image_url変数を活用します。指定されたURLからイメージがダウンロードされ、インストールプロセス中に使用されます。

メンテイナー

ライセンス

詳細は LICENSE.md ファイルを参照してください。

作者情報

このロールは、初めに andrelohmann によって作成されました。またはフォークされました。

プロジェクトについて

Provision your hetzner boxes with installimage by leveraging the Hetzner Robot Webservice https://robot.your-server.de/doc/webservice/en.html

インストール
ansible-galaxy install nl2go.hetzner_installimage
ライセンス
mit
ダウンロード
18.8k