nl2go.hetzner_installimage
Ansible Role: Hetzner Installimage
HetznerサーバーのOSイメージのインストールライフサイクルを管理するAnsibleの役割です。 Hetzner Robot API を使用します。
前提条件
- 既存の Hetzner Online GmbH アカウント。
- 設定済みの Hetzner Robot Webservice アカウント。
- Hetzner Robotキー管理 にSSH公開鍵が登録されていること。
要件
名前 | タイプ | バージョン | 位置 |
---|---|---|---|
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_confirmation
をyes
に設定することで上書きできます。
extra varsの例は次のようになります。
--extra-vars "{ hetzner_installimage_skip_confirmation : yes }"
インストール手順
- 新しいマシンのインストール
- Hetznerロボットにアクセス (robot.your-server.de)
- 新しいサーバーを注文
- オペレーティングシステムを選択
- プロビジョニングキーを選択
- hetzner_installimageロールを実行
- 既存のマシンのインストール
- プロビジョニングキーをHetznerロボットに追加 (robot.your-server.de)
- hetzner_installimageロールを実行
- すでにプロビジョニングされたマシンのインストール
- マシンにアクセス
- /etc/hetzner_installimage_provisioned.flagを削除または設定
- 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