openSUSE Leapは、15の前は42だったんだ?

By Syuta Hashimoto @ 2019-12-21 11:46

この記事はopenSUSE Advent Calendar 2019の21日目です

今日はLeapのバージョニングについて振り返ってみたいと思います。

Leapの登場は2015年のLeap 42.1が最初のようです。この前がopenSUSE 13.2。

つまり、13.2(Leapの前) > 42.1 (以降、Leap)> 42.2 > 42.3 > 15.0 > 15.1(今年リリースの現行版)とバージョニングされています。

なお、リリースは年に一回で計画されていて、来年は15.2のリリースが予定されています。(現在開発中。)マイナーリリースは3年の計画なので、このままいけば再来年はメジャーバージョンがかわります。

はたして、素直に16にいくのでしょうか?

42?

元ネタは「銀河ヒッチハイク・ガイド」というSF小説とのことです。ある宇宙人が、「生命、宇宙、そして万物についての究極の疑問の答え」をスーパーコンピューターで計算したところ、答えが「42」だったらしいです。

ちなみに、このスーパーコンピューターは、究極の答えに対応する究極の問いが何なのかわからないため、42 の意味まではわからないのだとか。そこで、その問いを算出する為にスーパースーパーコンピューターを作って、といった所がストーリーにからんでくるようです。そのスーパースーパーコンピューターというのが、実は・・・

Leap 42.1のポータルには、次の素晴らしい一文が乗っています。

openSUSE Leap 42.1 はその重要さに合った名前に値します。

Portal:42.1

なお、15.0がリリースされたあと、「最新バージョンを取得しようとすると、42用パッケージとってきちゃうんですけど・・」「あ、数字が大きいものをとってくるようにしてるから、15じゃなくて42とってきちゃうんだね。」といったやりとりが頻発した模様。

まとめ

バージョニングに突如42をもってくるところに、私はopenSUSEプロジェクトっぽさを感じています。

  • そもそもLeapが誕生した経緯を調べたい
  • 私がopenSUSEプロジェクトに関わり始めたのはLeap 15目前のときで、42のやりとりはタイムリーには見れていないんですよね

openSUSE Advent Calendar 2019、明日はftakeさんの「 LibreOffice で OpenType フォントの機能を使う話」です。有意なお話っぽそうですね。お楽しみに!

この記事はopenSUSE Advent Calendar 2019の20日目です。

openSUSEのパッケージ管理はYaSTやzypperなどで行うのですが、パッケージそのものはRPMです。ですので、そのRPMパッケージが含んでいるファイルを一覧表示するなどの、rpmのコマンドを利用することができます。

ここでは、次のことををしてみたいと思います。

  • パッケージに含まれているファイルの一覧を取得する
  • コマンドやファイルがどのパッケージに含まれているかを調べる

(なお、zypperで直接行う方法や、もっとよい方法などがあると思いますので、そういった情報をお持ちの方は是非ご提供ください。)

パッケージに含まれているファイルの一覧を取得する

以下のrpmコマンドで可能です。

$ rpm -ql [パッケージ名]

例:

$ rpm -ql podman

(含まれているファイルのフルパスの一覧)

私は、そのパッケージがどんな設定ファイルを使っているか、また、どこにインストールしているか、などを調べたい時などに使っています。

コマンドやファイルがどのパッケージに含まれているかを調べる

以下のrpmコマンドで可能です。

$ rpm -qf [調べたいファイルやコマンドのフルパス]

例:

$ rpm -qf /usr/bin/podman

podman-1.4.4-lp151.3.6.1.x86_64

ここで、幾つかのコマンドを組み合わせて便利に使ってみましょう。

まず、コマンドのフルパスを取得します。which、typeなどありますが、ここではtypeを使ってみます。

$ type -p podman

/usr/bin/podman

-pオプションで、パス名だけを取得しています。これをrpmコマンドと組み合わせると、次のようになります。

$ rpm -qf $(type -p podman)

podman-1.4.4-lp151.3.6.1.x86_64

これで、rpmのパッケージ名が取得できます。この名前をそのままzypper infoに渡しても識別してくれないので(そんなパッケージは無いと言われてしまうので)、さしあたって、最初の「-(ハイフン)」までの文字を取得してみます。これで「podman」が取得できます。

$ rpm -qf $(type -p podman) | awk -F ‘-‘ ‘{print $1}’

podman

awkはテキストの加工とパターン処理を行ってくれるコマンドです。 -F ‘-‘ で、ハイフンを区切り文字に指定し、 ‘{print $1}’ で、区切られた最初の部分を出力します。

これを、zypper infoに渡せば、zypperでのパッケージ情報を取得できます。

$ zypper info $(rpm -qf $(type -p podman) | awk -F ‘-‘ ‘{print $1}’)

リポジトリのデータを読み込んでいます…

インストール済みのパッケージを読み込んでいます…

パッケージ podman に関する情報:

——————————-

リポジトリ             : openSUSE:Leap:15.1:Update                                             

名前                   : podman                                                                

バージョン             : 1.4.4-lp151.3.6.1                                                     

アーキテクチャ         : x86_64                                                                

ベンダ                 : openSUSE                                                              

インストール後のサイズ : 103.1 MiB                                                             

インストール済み       : はい (y)                                                              

状態                   : 最新                                                                  

ソースパッケージ       : podman-1.4.4-lp151.3.6.1.src                                          

概要                   : Daemon-less container engine for managing containers, pods and images

説明                   :                                                                       

   Podman is a container engine for managing pods, containers, and container

   images.

   It is a standalone tool and it directly manipulates containers without the need

   of a container engine daemon.

   Podman is able to interact with container images create in buildah, cri-o, and

   skopeo, as they all share the same datastore backend.

見事、zypperで情報が取得できました。

見返してみれば、「そもそも、zypper info podmanでよくないか?」と思えますが、コマンド名とパッケージ名が違う場合や、コマンドではなく設定ファイルから情報を引き出したい時などに利用できます。

ただ、間にハイフンが入るパッケージ名では、当然うまく動きませんね・・・typeでパスを取得するためにrootになって、brctlで試してみたのですが、rpmのパッケージ名がbridge-utils-1.6-lp151.2.3.x86_64だったため、ハイフンの前がbridgeとなってしまい、zypper infoで情報を取得できませんでした。まだ改良の余地ありです。

このように、いろいろな方法でrpmコマンドで取得できる情報の活用を試してみて下さい。



openSUSEはnmapからどう見えるか

By ribbon @ 2019-12-18 00:11

セキュリティ的な観点からサーバの情報を調べるツールとしてnmapがあります。nmapを使うと、そのサーバがどのような種類かを外部から調べることができます。そこで、 nmapからopenSUSEサーバはどのように見えるかを簡単に調べてみました。

nmapはOSやディストリビューションごとにバージョンが異なります。できるだけ最新の方がよいので、openSUSE 15.1/15.0に含まれているものを使用しました。バージョンはどちらも7.70 です。
openSUSE 15.0から15.1に対してテストした結果は以下の通りです。

# nmap -O 172.31.255.189
Starting Nmap 7.70 ( https://nmap.org ) at 2019-12-14 16:42 JST
Nmap scan report for 172.31.255.189
Host is up (0.00051s latency).
(略)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 – 4.9

意外とおおざっぱな結果しか出ませんね。15.1から15.0へも同じ結果でした。
では、ほかのディストリビューションではどうでしょうか。手元ですぐに試せるものを試してみたところ、
CentOS 7.4

OS details: Linux 3.10 – 4.11, Linux 3.2 – 4.9

Windows 10

Running (JUST GUESSING): Microsoft Windows XP|7|2008 (87%)

Windows 8.1

Running: Microsoft Windows 2008|8.1|7|Phone|Vista

Windows Server 2012R2
という感じになりました。やはり以外とおおざっぱです。
ということで、 nmapで調べると、どの系統のOSか、という所くらいまでは分かる、という事がわかりました。

この記事はopenSUSE Advent Calendar 2019の13日目です。

今回は、openSUSEでパッケージをインストールする3つのメジャーな方法を紹介させて頂きます。

  • YaSTの「ソフトウエア管理」からインストール
  • コンソールからzypperコマンドでインストール
  • Webサイトから1-clickインストール

YaSTの「ソフトウエア管理」からインストール

簡単設定ツールYaSTの「ソフトウェア管理」で、パッケージをインストールしたりアップグレードしたりできます。YaSTは、左下のアプリケーションランチャーから、「アプリケーション > 設定 > 管理者設定(YaST)」で起動できます。

起動したら、「ソフトウエア管理」を選びましょう。リポジトリ情報などを取得した後、管理画面が開きます。

YaSTのメニュー
ソフトウエア管理でpodmanを検索

左上の場所にパッケージ名を入力して、「検索」をクリックすれば、右側に一覧が表示されます。インストールしたいパッケージを選択して、右下の「了解」をクリックしましょう。

コンソールからzypperコマンドでインストール

コマンド「zypper 」で、パッケージ管理ができます。パッケージを検索したい時は以下のコマンドです。

$ zypper se [検索したいパッケージ名]

seはsearchのseです。searchとフルでタイプしても大丈夫です。該当するパッケージがあれば、一覧が表示されます。

リポジトリのデータを読み込んでいます…
インストール済みのパッケージを読み込んでいます…

S  | 名前                   | 概要                                                                  | 種類             
—+————————+———————————————————————–+—————–
  | podman                 | Daemon-less container engine for managing containers, pods and images | ソースパッケージ
i+ | podman                 | Daemon-less container engine for managing containers, pods and images | パッケージ       
i  | podman-cni-config      | Basic CNI configuration for podman                                    | パッケージ       
  | python-podman          | A library to interact with a Podman server                            | ソースパッケージ
  | python-podman-compose  | A script to run docker-compose using podman                           | ソースパッケージ
  | python2-podman         | A library to interact with a Podman server                            | パッケージ       
  | python3-podman         | A library to interact with a Podman server                            | パッケージ       
  | python3-podman-compose | A script to run docker-compose using podman                           | パッケージ  

上記は「podman」で検索してみた例です。(折り返してしまっているので見にくくてすみません。)

ちなみに、左端の「i」がインストールされているという意味で、「i+」は、ユーザーが選んでインストールしたパッケージ、という意味です。

目当てのパッケージが見つかったら、インストールは以下のコマンドです。

$ zypper in [インストールしたいパッケージ]

inはinstallの略です。フルでinstallとタイプしても大丈夫です。

そうすると、同時にインストールすることが推奨されるパッケージや利用予定ディスク容量などが表示され、インストールするかを聞かれますので、Y(Yes)で答えればインストールです。なお、root権限が必要ですので、一般ユーザーの場合はsudoで実行するなどしましょう。

Webサイトから1-clickインストール

openSUSEにはソフトウェアサイトがあり、コミュニティ作成のパッケージや、実験的なパッケージをインストールすることもできます。(もちろん、自己責任となりますのでご注意ください。)

ソフトウェアサイトのトップページ

左側でディストリビューションを選べますので、希望のものを選びます。今ですと、Leap15.1になるでしょう。それからパッケージ名を検索します。そうすると、各パッケージのページに行くことができます。

podmanのパッケージのページ

ここから「直接インストール」を選択します。

あるいは、下部に利用可能な各ディストリビューションのコミュニティ作成パッケージや実験的パッケージが表示されますので、希望のものをえらび「1-クリックインストール」をクリックします。

podmanのleap15.1のパッケージ例

追加のリポジトリが必要な場合は、それを設定するか確認されます。「ちゃんと、変更内容わかってる?」と、かなり念を押してくれます。

まとめ

どの方法でも、zypperで操作できるパッケージ管理の配下に入っていきます。ですので、WebサイトからインストールしたものをYaSTで確認、などもできます。気になるパッケージもこれで手に入りますね。なお、Webサイトからですと実験的なものなども見れますので、他の方法で見つからない場合は覗いてみるのもアリだと思います。(くどいようですが、自己責任ですので・・)

  • リポジトリとパッケージの関係をとりまとめてブログに書きたい
  • libzyppとzypperとYaSTの関係図を書けるようになりたい
  • なんなら、zypperのソースを読んでみたい

Geeko Magazine表紙のキャラクター壁紙

By Syuta Hashimoto @ 2019-08-04 14:12
  • 2019/08/04 画像サイズが小さかったのを、フルサイズに修正しました。
  • 携帯用をアップしました。
  • ※※画像はサムネイル表示になっています。フルサイズは「名前をつけてリンク先を保存」で保存してください。※※
  • ** IMPORTANT ** image is thumbnail. If you want to get this wall papers, you should download which linked to.

openSUSE mini Summit 2019でも、「欲しい!」とお声を頂いた、Geeko Magazine表紙に描かれたキャラクターの壁紙をアップします。

ぜひぜひ、ダウンロードしていただいて、デスクトップをかわいらしく飾ってください!

イラスト作成者からのコメント「携帯壁紙とか希望があれば、コメントいただければ作りますよー」

※2019/08/04 ご希望を頂いたので、携帯壁紙作成して頂きました。希望くださった方、イラスト作成者さん、ともにありがとうございます!

【デスクトップ用】

【携帯壁紙用】

橋本修太です

Geeko Magazineに書いていたのですが、ちょっと前、確かkubernetes 1.12の時は、flannel 1.10を適応しようとすると、エラーとなって適用出来ませんでした。

それが、flannelがバージョンアップして解決したようです。今では以下のコマンドでネットからflannelを適応する事が出来ます。

kubectl apply -f https://0y.at/kubicflannel

Kubicが適応できるバージョンにショートネームをあてたようですね。

インストールの全体記事はこちらです。

それでは良いコンテナライフを。

橋本修太です

さて、突然ですが、今私のKubernetes環境はこんな感じになっています。

KVMは仮想マシン、KubicはopenSUSEのKubernetes専用ディストリビューション、masterやnodeはKubernetesクラスタでの役割を表しています。

ルーターに有線でデスクトップが繋がっていて、そこに3つKubicを走らせています。

また、ルーターはWiFiルーターに繋がっていて、WiFiでノートパソコンと通信、そのノートパソコンの上にも3つKubicが走っています。

それをですね、こうしたいのです。

デスクトップのnodeを、ノートパソコンのKubernetesクラスタに組み込みたいのです。

ノートパソコンは、メモリは16G積んでいて少し余裕はあるものの、CPUはcore i5で、KVMをこれ以上増やすのは難しいです。

そこで、クラスタの利点を活かして、デスクトップからnodeを引っ張ってくるわけです。

とりあえずこれでできました

KVMはデフォルトで閉じたネットワーク(ホストの外側からは中にアクセス出来ないネットワーク)を作成します。ただ、これはNATなので、ゲストからホストの外側にはアクセス出来ますが・・・

そこで、色々とやってみた結果、次のような方法でホストの外からのアクセスが出来ました。

  • 【ノートPC】KVMでバーチャルネットワークを作成、マスカレードで接続
  • 【デスクトップPC】ブリッジを作成

検証や調査等はおいおいやっていくとして、それぞれの設定を書いてみたいと思います。

今回は【ノートPC】編、次回は【デスクトップPC編】です

WiFi接続しているノートPCにブリッジを作成することに挫折

グーグル先生に教えてもらって、いくつかの方法を試したりしたのですが、どれも挫折してしまいました・・・

どうやら、ブリッジはレイヤー2で転送するものらしいのですが、WiFiはレイヤー2転送に対応していないというのが、WiFiでのブリッジ作成が難しい理由の大きなところらしいです。・・・いまいちピンとこないので、後ほど詳しく調べてみたいと思います。

parproutedやebtablesなどでレイヤー2転送を設定する

parproutedはarpをプロキシするものとの事です。また、etablesはEthernetフレーム用iptablesとの事です。parproutedはopenSUSE Leap15で上手く動かせられなかったり、ebtablesが意図した通り設定出来なかったりして、挫折してしまいました。

バーチャルネットワークを作成

Facebookでそんな事をなげいていたら、Saputro Aryuliant氏より、「KVMのバーチャルネットワーク設定して、iptablesでマスカレード設定すればいけるよ」とのお助けが。

「ホストPCの外から、ゲストPCにアクセスできる?」と聞くと、「iptables設定すればいけるよ」とのことでしたので、早速試してみることに。

KVMの設定

ルーティングでネットワークを作成します。

設定はvirt-managerでこんな感じです。

編集 > 接続の詳細

から、「仮想ネットワーク」タブを選んで、左下のプラスのアイコンをクリックして追加します。

デバイスにwlan0(WiFi)、方法にルーティングを指定している所がポイントです。

これ、デフォルトのNATネットワークだとだめなのかな?

iptablesの設定

まず、ノートPCでipv4のフォワードを有効にします。

sudo sysctl -w net.ipv4.ip_forward=1

これは再起動するとクリアされてしまいますので、常に設定したい場合は /etc/sysctl.d/の中に、{好きな名前}.confという名前で設定ファイルを作成して、その中に記述しておけばOKです。

確認は以下のコマンドで。

sudo sysctl -a

設定項目が表示されますので、grep -i forwardとかで絞ると楽に確認できます。

それから、同じくノートPCにマスカレードを設定します。

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j MASQUERADE

  • -t nat パケット中のIPアドレスを書き換える用のテーブルを編集
  • -A POSTROUTING 転送でパケットが出ていく時に処理を行う
  • -s ここで指定した所から来た(Source)パケットに対する処理
  • -j 指定した処理を行う 今回はマスカレード

これで、ノートPCの上で走らせているKVM上のKubicが、自由に外にアクセスできるようになりました。

ノートPCの上で走らせているKVMにデスクトップPCからアクセスする

とりあえず、アクセスしたいマシンやKVM上のKubicで、以下の設定を行いました。

ip -4 route add 192.168.100.0/24 via 192.168.0.12

192.168.100.0/24行きのパケットは、192.168.0.12(ノートPCのIPアドレス)をデフォルトゲートウェイにしてね、という設定です。

これで、デスクトップや、そこで走っているKVM上のKubicから、ノートPC上のKubicにアクセスできるようになりました。

・・・もちろん、デスクトップ上のKVMも、ブリッジ設定して、ホストの外へアクセスできるようにすれば、です。その様子はまた次回に。

感想&課題

  • ネットワークの基礎が無いのでちょっときつい
  • レイヤー2ルーティングでブリッジ作成は可能?
  • そもそもルーティングによる接続ってなんだろう
  • ホスト外からアクセスする方法がスマートでない
  • この辺りをもうちょっとまとめたい