GO TO TOPPAGE

Ubuntu Server 22.04.1 LTS のセットアップ

Ubuntu Server 22.04.1 LTS を実機にインストールした。

現在、私が管理しているサーバーは1台を除いて全て Ubuntu Server 20.04 LTS を採用している。その1台だけ OS 起動後に謎のリブートがかかるという問題があったため Debian 11 をインストールしていたが、今後のアップデートも見据え、検証目的も含めて Ubuntu Server 22.04.1 を入れてみた。

結論から述べると、特に躓くことなくインストールは完了し、今のところ何の不具合も見られない。Ubuntu Server 18.04 LTS の時代に作ってメンテナンスしている Ansible は少し修正する必要があったが、軽微な変更のみだった。基本的に Docker さえ動いてしまえば良いという環境なので難しい設定は何もしてない。

 1# https://docs.docker.com/engine/install/ubuntu/
 2# https://docs.docker.com/engine/install/debian/
 3
 4- name: uninstall old versions
 5  become: true
 6  apt:
 7    name: "{{ packages }}"
 8    state: absent
 9  vars:
10    packages:
11      - docker
12      - docker-engine
13      - docker.io
14      - containerd
15      - runc
16
17- name: install packages
18  become: true
19  apt:
20    name: "{{ packages }}"
21    state: present
22  vars:
23    packages:
24      - ca-certificates
25      - curl
26      - gnupg
27      - lsb-release
28
29- name: mkdir -p /etc/apt/keyrings
30  become: true
31  file:
32    path: /etc/apt/keyrings
33    state: directory
34    mode: '0755'
35
36- name: add Docker's official GPG key
37  become: true
38  # https://stackoverflow.com/a/9708556
39  shell: "curl -fsSL https://download.docker.com/linux/{{ ansible_facts['distribution'] | lower }}/gpg | gpg --batch --yes --dearmor -o /etc/apt/keyrings/docker.gpg"
40
41- name: get architecture
42  command: dpkg --print-architecture
43  register: dpkg_architecture
44
45- name: get lsb_release
46  command: lsb_release -cs
47  register: lsb_release
48
49- name: set up the stable repository
50  become: true
51  apt_repository:
52    repo: "deb [arch={{ dpkg_architecture.stdout }} signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/{{ ansible_facts['distribution'] | lower }} {{ lsb_release.stdout }} stable"
53    filename: docker
54    state: present
55
56- name: install docker
57  become: true
58  apt:
59    name: "{{ packages }}"
60    state: present
61    update_cache: yes
62  vars:
63    packages:
64      - docker-ce
65      - docker-ce-cli
66      - containerd.io
67      - docker-compose-plugin

上記 yaml は Docker 公式ドキュメントの手動インストールを素直に ansible で書き起こしただけの role の一例である。

Install Docker Engine on Ubuntu | Docker Docs

Jumpstart your client-side...
https/docs.docker.com

アーキテクチャの取得や lsb_release を実行しているところは、ansible_facts の中に必要な値が含まれていそうな気がする。気が向いたら対応しようかなと思う。

Discovering variables: facts and magic variables —...

https/docs.ansible.com

Ubuntu で、しかもサーバー版を利用しており、使い勝手はここ何年も変わってない印象だが、その中でも、本記事では以降、20.04 から 22.04 へのアップデートで、大きく変わったなと感じた2つの変更を紹介する。

apt-key の廃止

第675回 apt-keyはなぜ廃止予定となったのか | gihyo.jp

サードパーティのAPTパッケージリポジトリを追加する際に使用...
https/gihyo.jp

対応策だけ雑に取り出すと、apt-key ではなく gpg を使えということらしい。ただし、既にファイルが存在するときに、上書きするかどうかの確認が出てくる。Ansible のような自動構成ツールを使っているとき、この確認で止まってしまうことがあるので、自動で上書きさせるオプション --batch --yes を付けた。

gnupg - How to automatically overwrite the output file...

If I have the same filename in...
https/stackoverflow.com

いくつかのミドルウェアの公式ドキュメントを眺めていると、個別リポジトリの鍵は /etc/apt/trusted.gpg.d/ よりも /etc/apt/keyrings/ に置いてるケースが多かったので、それに倣って設定を進めた。

needrestart の導入

第718回 needrestartで学ぶパッケージのフック処理 | gihyo.jp

今回は、パッケージの更新時に再起動が必要なデーモンを通知して...
https/gihyo.jp

needrestart というプロセス再起動の仕組みが初期状態で導入された。今回、セットアップしたサーバーは開発(実験)用途で、再起動を意識しなければならないプロセスはないはずなので、必要な時に自動で再起動させるよう設定した。

1# Restart mode: (l)ist only, (i)nteractive or (a)utomatically.
2#
3# ATTENTION: If needrestart is configured to run in interactive mode but is run
4# non-interactive (i.e. unattended-upgrades) it will fallback to list only mode.
5#
6$nrconf{restart} = 'a';

上記設定ファイルを /etc/needrestart/conf.d/ 以下に置いた。

NVIDIA 公式ドライバーのインストール

20.04 から 22.04 へのアップデートには関係ないが、NVIDIA 公式ドライバーをインストールする際にいつも下記の記事を参考にしている。

第454回 Ubuntu 16.04 LTSにNVIDIA製ドライバーをインストールする3つの方法 |...

NVIDIAのGPUを搭載したグラフィックボードが人気で...
https/gihyo.jp

以上、完全にありがとう柴田さん!をお送りしました。

- OMOTO Tsukasa -

機械学習をバックグラウンドに持つソフトウェアエンジニア。(株)AlphaImpact 所属。LightGBM の(非アクティブ)コミッターの1人。自他共に認める、何でも屋。

#Ubuntu