Upgrade to Pro — share decks privately, control downloads, hide ads and more …

My home VM Solution by premade MicroOS

hashimotosyuta
November 06, 2022

My home VM Solution by premade MicroOS

I explain my home VM solution by premade MicroOS.

hashimotosyuta

November 06, 2022
Tweet

More Decks by hashimotosyuta

Other Decks in Technology

Transcript

  1. YAML に書いた宣言的な定義から
    VM を作ってみた 
    〜一般のご家庭向け ver 〜
    power of orchestration
    openSUSE-ja
    hashimotosyuta
    @syuta_openSUSE

    View full-size slide

  2. イントロダクション

    MicroOS

    Combustion

    Bash

    Ansible

    SaltStack

    k3s
    KVM

    View full-size slide

  3. 宣言的とは
    「どうやるか」では無く、
    「どんな結果が欲しいか」に
    主眼を置く方法論
    – ここでは、欲しい VM のスペック
    を設定ファイル( YAML )に書く
    ことで実現する方法を指します。

    View full-size slide

  4. こんなことがありませんか?

    ホストに余計なものを入れたくない
    – 極力ホストは欲しい物、必要な物だけにしたい

    検証用の使い捨てVMが欲しい
    – コンテナなどサーバー技術をちょっと使ってみた


    SaltStackやKubernetesを試したい
    何なら使いたい
    – 複数マシンのコラボレーションを体感したい

    View full-size slide

  5. 検証用 VM あるある

    自宅サービス提供 VM の横で検証
    – 自宅サービスが煽りをくって止まる

    実は前のソフトの検証時に、今回必
    要なパッケージが一部入っていた
    – 今回の手順だけだと動かない

    View full-size slide

  6. SaltStack
    SaltStack Master の指示により、
    Minion が各種設定を行う
    SaltStack Master
    SaltStack Minion
    Virtual Machine
    Virtual Machine
    各種設定
    SaltStack Minion
    Virtual Machine
    各種設定
    Virtual Machine
    SaltStack Minion
    Virtual Machine
    各種設定
    Virtual Machine

    View full-size slide

  7. Kubernetes
    Master Node の指示により、
    Worker Node がコンテナを動
    かす
    ※概略です
    Master Node
    Worker Node
    コンテナ
    Worker Node
    コンテナ
    Worker Node
    コンテナ
    コンテナ

    View full-size slide

  8. 宣言的 KVM
    SCRIPT
    YAML

    View full-size slide

  9. 構成要素
    YAML
    サービス
    Virtual Machine
    ネットワークなどの基本設定
    スクリプト
    MicroOS
    Ansible
    SaltStack
    Combustion
    KVM

    View full-size slide

  10. ハードウェアとソフトウェア
    VM VM VM
    サービス B サービス B
    VM
    サービス A

    View full-size slide

  11. YAML
    ハードウェア
    domainname: k3s_master
    type: microos
    hostname: k3s-master
    enp2s0:
    ip: 192.168.254.150
    subnet: 24
    vcpus: 2
    ansible:
    - { role: saltmaster }
    vm:
    - "saltstack_master"
    - "k3s_master"
    - "k3s_worker1"
    - "k3s_worker2"
    playbook:
    - "saltmaster"
    - "saltminion"
    メイン / ソフトウェア

    View full-size slide

  12. レイヤー間の連携
    ハードウェア設定 YAML
    ansible:
    - { role: saltmaster }
    インベントリ
    ファイル
    playbook
    書き込む
    参照する
    [saltmaster]
    192.168.xxx.yyy
    hosts:saltmaster

    View full-size slide

  13. MicroOS & Combustion

    MicroOS
    – イミュータブル
    – コンテナ最適化
    – 軽量

    Combustion
    – MicroOS 初期設定スクリプト

    View full-size slide

  14. Combustion による設定
    YAML
    MicroOS
    ホストネームなどの
    基本設定
    スクリプト
    設定ファイル
    雛形
    設定ファイル
    Combustion
    設定ファイル
    初期化スクリプト
    作成
    設定 配置

    View full-size slide

  15. 解決済課題

    ネットワーク設定
    – NetworkManagerにいつの間にか変わっていた

    VM 並列作成
    – インベントリファイル同時に書き込んじゃう問題

    初回SSHログイン確認ダイアログ
    – ssh-keyscanでknown hostsに追記することで回避

    ストレージアタッチメント
    – 永続ボリュームは必須

    View full-size slide

  16. ストレージアタッチメント
    VM
    ホスト
    コンテナ
    LVM
    ハードウェア設定 YAML
    playbook

    View full-size slide

  17. 解決したい課題

    フロントエンドからの制御
    – YAML編集やスクリプト実行を制御

    VM生成中の中断、クリーンアップ
    – ホスト起動時に自動実行とかした場合、即シャットダ
    ウンする可能性がある

    MicroOSプリメイドイメージの自動アップデート
    – 検証用アップデートと簡単なテスト

    pythonで書き直したい
    – bashは悪くないけれどちょっと辛い

    View full-size slide