より本格的なコンフィグを用意する
ConfigReferenceを参考に,
$ cat > www/user-data << 'EOF' #cloud-config autoinstall: version: 1 locale: ja_JP.UTF-8 keyboard: layout: "jp" apt: preserve_sources_list: false primary: - arches: [default] uri: "http://archive.ubuntu.com/ubuntu" geoip: true storage: layout: name: lvm identity: hostname: ubuntu-server realname: "Mitsuya Shibata" username: ubuntu password: "$6$/X6MRgjz4jCIK8.G$FhJbD17m9qTcMA8FHMPcFvp7v2wvgmRBdvdEdTiZXZRwuZFUVsear9.vYY01QcwPuYAMRMvSJoJKfUlaBviU3/" ssh: install_server: true authorized-keys: [ "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAmhhimVNdsJLG3Sc6s3QD0nM5esEjUPQtC1k9b5M8fsp75ZaYhgoE3VUE+vXe5jD0tMlVbrzly4OnghloOgBtmrTqiuC7iUxcfWQ+11b7RI660m43ZQinafobZo7jMHOE2IwLFw5/bj6xm8LiXDn1Y2pA2d13V1f9MPKNexsYeuBfsru4AlwhKifEEjL0PS4saV1tcT1WM3na8jstI6jmdsOQ+cngj8HnpWTg8+YIFe1iqAnIIuFWSKjLqTFrJRIO4pnzNeo0naHqjxVoAytUqjxjXWT093DxW0wDvHUNxRhSwqL6S45ehcD2M7AXszOW2ZbX3i455SB2bClXZHBN2Q== shibata" ] reporting: hook: type: webhook endpoint: http://_gateway:3003/cgi-bin/done level: INFO user-data: timezone: Asia/Tokyo EOF
注意すべきポイントをいくつか見ていきましょう。
apt: preserve_sources_list: false primary: - arches: [default] uri: "http://archive.ubuntu.com/ubuntu" geoip: true
APTのリポジトリの設定です。これはcurtinのapt関連の設定をそのまま記述します。preserve_
」false
」/etc/
を変更することを示しています。またgeoip
」true
」
storage: layout: name: lvm
ストレージはケースバイケースで複雑になりがちなので,
ssh: install_server: true authorized-keys: [ "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAmhhimVNdsJLG3Sc6s3QD0nM5esEjUPQtC1k9b5M8fsp75ZaYhgoE3VUE+vXe5jD0tMlVbrzly4OnghloOgBtmrTqiuC7iUxcfWQ+11b7RI660m43ZQinafobZo7jMHOE2IwLFw5/bj6xm8LiXDn1Y2pA2d13V1f9MPKNexsYeuBfsru4AlwhKifEEjL0PS4saV1tcT1WM3na8jstI6jmdsOQ+cngj8HnpWTg8+YIFe1iqAnIIuFWSKjLqTFrJRIO4pnzNeo0naHqjxVoAytUqjxjXWT093DxW0wDvHUNxRhSwqL6S45ehcD2M7AXszOW2ZbX3i455SB2bClXZHBN2Q== shibata" ]
サーバー用途ならOpenSSHサーバーはインストールしておきたいところでしょう。気をつけなければいけないのは,install-server
」install_
」
「authorized-keys
」
reporting: hook: type: webhook endpoint: http://_gateway:3003/cgi-bin/done level: INFO
「reporting
」
前述のPython 3の組み込みサーバーでは--cgi
」
$ mkdir www/cgi-bin $ cat > www/cgi-bin/done << 'EOF' #!/usr/bin/bash read -n $CONTENT_LENGTH QUERY_STRING_POST echo $QUERY_STRING_POST >> installed.json echo "Content-type: text/plain" echo "" echo "OK" EOF $ chmod +x www/cgi-bin/done $ curl -X POST -H "Content-Type: application/json" \ -d '{"key":"value"}' http://localhost:3003/cgi-bin/done OK
インストールの進捗を把握したり,
user-data: timezone: Asia/Tokyo
実はSubiquityにはタイムゾーンを指定するインターフェースが存在しません。そのためautoinstallキー以下でもタイムゾーンは設定できませんuser-data
」
- ※3
debconf-selections
によって設定できるかもしれませんが,今回は試していません。Subiquityの自動インストールの仕組みを考えると, debconfi-selections
による設定は「最終的な回避策」 ぐらいに考えておくのが良いでしょう。
他にもearly-commands
やlate-commands
,error-commands
によって,snaps
やpackages
で,
インストール時に必要な設定はひととおり自動化できるようになっているはずですので,
ちなみにinteractive-sections
に*
」
interactive-sections: - "*"
ただしパスワードなどセンシティブなデータは自動入力されませんので注意してください。
USBスティックからインストールを自動化する
最後にUSBスティックから設定を流し込んでみましょう。
$ sudo apt install cloud-image-utils $ cd www $ cloud-localds ../user-data.img user-data
これで設定入りのイメージファイルを作成できました。これをUSBスティックにddで書き込めば良いのですが,
$ qemu-system-x86_64 -enable-kvm -no-reboot -m 1024 \ -drive file=image.qcow2,format=qcow2,cache=none,if=virtio \ -cdrom focal-live-server-amd64.iso \ -drive file=user-data.img,format=raw
注意すべきなのはUSBからだと完全な自動化はできないということです。インストーラーが起動したあとに
もしどうしても自動化したいなら,