GitLab on Docker を構築する

運用している GitLab が古いこともあって、 CentOS 7 (1803) の上で再構築することにしました。
GitLab 本体のバージョンを更新しやすく&サーバー移動するかも、という2点から、 Docker の上に GitLab を動かすことを考えてみました。

CentOS の準備

使用した CentOS は 7 (1804) 64bit です。これは RHEL 7.5 ベースのものとなります。
最新パッケージにすることや、必要最小限に留めたい理由より、 Minimum の構成でインストールしました。
以降の説明は selinux の無効化や、ネットワーク接続は出来ている前提で話を進めます。

まずは以下のコマンドでパッケージを更新しておきます。

Docker 関連の準備

以下のコマンドで Docker をインストールします。インストール後、バージョンを確認したところ 1.13.1 がインストールされたようです。

続いて Docker-Compose をインストールします。
Docker-Compose のページから最新版をインストールしました。
このページにインストール方法も書いてありますが、以下のようなコマンドを実行しました。

ここで Docker を起動しておきます。

GitLabのインストール

こちら(https://gitlab.com/gitlab-org/omnibus-gitlab/)で公開されている docker-compose.yml を使用します。
適当な場所に docker-compose.yml ファイルをダウンロードしておきます。

docker-compose.yml に構築のパラメータが詰まっているので、先に編集します。

サブディレクトリで GitLab を運用したいので、 external_url を編集します。
ポート番号を指定する場合にはここで必要となります。

以下のコマンドで、コンテナを起動させます。初回には、 公式のリポジトリからイメージを取得するため、時間がかかるものと思われます。
この記事を書いているときには、11.2.3 の GitLab のイメージが取得されました。

この docker-compose.yml により、 gitlab のコンテナが動き出します。自分の環境では実行開始してからアクセスが出来るようになるまではしばらく時間がかかりました。
進行状況などのログを見るには以下のコマンドを実行します。

定常状態になったことを確認できたら、ブラウザでアクセスして期待通りの表示が出るかを確認します。
GitLab のログイン画面が表示されるようであれば成功です。

細かな設定など

細かな設定などは docker-compose.yml ファイルを編集することで出来ると思いますが、
自分は /srv/gitlab/config にある gitlab.rb ファイルを編集することにしました。

編集した後は次のコマンドで設定を反映させます。

まとめ

最近 Docker で環境作りばかりやっている気がします。
しかし、かつてはソースやrpmパッケージを入れてサービスを構築していましたが、それが docker-compose で入るようになってきて導入が色々と楽になってきたように思います。環境が閉じているので、いざというときには稼働インスタンスも変更させやすいですし、いい時代になりました。


Asciidoctor の環境を Docker on WSL にて作る

以前に構築した Docker on WSL の環境に、 Asciidoctor の環境を構築してみたいと思います。
Asciidoctor は AsciiDoc の後継のソフトウェアで、 Markdown よりは表現力が高いドキュメントを作成することが出来るものとなっています。

インストール・セットアップ

スタートメニューから Ubuntu 16.04 を起動して、 WSL の環境で以下のコマンドを実行します。

実行

以下のコマンドを実行して、コンテナの中の bash にて作業を行います。
ここでは、 C ドライブの mydoc フォルダがあると想定して、ここをコンテナの中にマウントさせています。

基本となるドキュメントを sample.adoc のようなファイル名で作成して、 Asciidoctor に処理させるには以下のようにします。

この結果、 html ファイルが生成されます。
adoc の書き方は各所で紹介されているので、そちらを参照してください。

Asciidoctor は PDF を出力することも対応しています。コマンド asciidoctor-pdf を使用すれば、 PDF が生成されます。

数式の対応など

Asciidoctor の拡張として、数式に対応したものがあるので、以下のようにしてインストールします。
Docker コンテナの中で作業する必要があります。

このようにインストールした上で、以下のようなマークアップと Latex 数式の文法によって、見栄えのよい数式を使うことができます。


拡張を有効化して使うには以下のようにオプションを指定して、実行する必要があります。

不満点など

Asciidoctor で、 book タイプで作成したときに、章のナンバリングに不満があります。
PDF 変換の場合では、”:chapter-label:” 変数で、 “Chapter” の代わりの文字を指定出来るのですが、これだと “第 1” のようにしかできませんでした。
“Chapter. 1” ではなく、 “第1章” のように作りたかったので残念でした。

他の見栄えが良さそうなだけに、この点だけが課題だったので asciidoctor-pdf のソースコードを書き換えて対応することにしました。 Asciidoctor のエクステンションとして作成できるようだったら本家にプルリクエストを発行しようと思っていますが、まずは自分一人で使って、問題が出ないかを確認してみようと思っています。



小さい Arduino

夏休みに小さな Arduino を買いました。
というのも、 Atmega A328P-PU を買ってきて、ブートローダーの書き込みをして… とやっていたのですが途中からうんともすんとも言わない状況になってしまいお手上げになってしまったからです。
安いのでまた買ってくればよいのですが、他に何かないかなぁと探していたところに Arduino Nano, Pro-Mini を発見した次第です。

続きを読む


Nintendo Labo 第3弾出るらしい

Nintendo Labo が好調なのか、第3弾が出るようですね。
バラエティキットは買ってやってみましたが、なかなか楽しい感じでした。
昔懐かしの段ボール工作感がじっくり味わえたのと、ギミックが色々と入っていて「なるほどなぁ」と思うことが色々でした。

そんな Nintendo Labo ですが、第3弾がもう出るようです。予想以上に早かった・・・。
乗り物3種のようで、操縦している感が味わえるっぽいです。段ボールでどんな仕上がり、操作感になるのか楽しみなのでトライしてみようと思ってます。予約も開始されたようです。

バラエティキットもまだありますね。



Hyper-V を使わずに Windows で Docker

普段から VMware Workstation や Player を使っているため、 Hyper-V による Docker は自分にとって都合が悪かったりします。でも、 Docker による便利な実行環境構築の恩恵は受けたい、というちょっとわがままな願いを叶える方法が見つかったので試してみました。

準備

使用している Windows は Windows10 Professional, 1803 x64 バージョンです。
この環境に、 Microsoft Store から Ubuntu 16.04 をインストールします。

続きを読む


IPv6 の本

IPv6 の書籍が昨年クラウドファンディングしていて、それに協力したのですが、先日忘れた頃にこれが届きました。たしか、昨年内に出すという目標だったと思いますが、半年ほどスリップした感じですね。
ただ現時点における仕様がちゃんと書かれているので、すごくいい書籍になっているんじゃないかと思っています。

で、 Amazon を覗いていたら、この書籍が並んでいました。まさか Amazon ですでに買えるようになっているとは驚きでした。

ほかの IPv6 書籍を読むよりはこれ1冊を読むのがいいんじゃないかというくらい内容が充実しているようです。以前に IPv6 を軽く勉強してみようと読んだときの情報は古くなっていて使えなかったりしていたので、この書籍で“今”に追いつけたらと思ってます。


電源電圧を測定する

以前に、減電圧表示回路のほうで Attiny13a のアナログ読み取りと内部基準電圧を用いて測定する話題をやりました。
このときには、セオリー通り抵抗分圧してそのときの値を読み取るという感じで算出しましたが、 Atmega328P (Arduino Uno) を用いては、もう少し変わった方法があることを知りました。今回はこれを紹介したいと思います。

測定方法

気になる測定の方法ですが、「現在の電源電圧を基準電圧として、内部の基準電圧 1.1V を測定する」という方法になります。これにより、内部基準電圧 1.1V が現在の基準電圧(電源電圧)に対してどのくらいの割合になるかが測定されます。

スケッチ

内部基準電圧を測定対象とするためには通常の analogRead() 関数は使用できません。そのためレジスタの値に直接書き込むことにします。
スケッチについては以下のような内容となっています。複数回測定して平均値を出すようにしています。

結果

このスケッチを USB 接続している Aruduino UNO で実行して、電圧を確認してみたところ、 “5.029” と表示されました。そして、 Arduino Uno からとれる 3.3V 電源で、別の atmega328P を稼働させて、そちらで測定したときには、”3.352″ と表示されました。こちらのほうはテスターで計測してみたのですが、”3.32V” だったのでおおよそ合っているように思います。
さらに、単3電池2本で動かしてみたのですが、このときには、 テスター:2.78V、内部計測:2.81V となりました。先の結果よりは精度が落ちていますが、十分実用範囲だと思います。

まとめ

この測定方法により、アナログピンを消費せずに計測できるようになりました。また分圧のための抵抗2本ほども省略できそうです。電源電圧の低下を目安として知るための方法としてはかなり有用なのではないかと思っています。


Arduino ブートローダーの書き込み

Arduino Uno で作ったプログラムを工作物の中にいれるために、 atmega328P-PU を買ってきました。
Arduino は 3000 円程度しますが、本体のマイコンである atmega328P-PU は 300円もしません。これなら気軽に使っていけそうですが、arduino のスケッチを書き込んで使っていくためには事前準備が必要になります。

ブートローダーの書き込み準備

必要な手順として、買ってきたばかりの atmega328P-PU にブートローダーを書き込む必要があります。ブートローダーの書き込みのためには装置が必要になりますが、 Arduino UNO を書き込み装置として使うことにします。

以前の ATTINY13A 編でも書いたように Arduino IDE からスケッチ例 Arduino ISP を選択して書き込みます。これで、 Arduino UNO を書き込み装置として使用可能になります。

内蔵発振で使用するために

atmega328P-PU は内蔵発振でも動作するようになっています。精度が悪いのが問題らしいですが、消費電力が減って電池駆動時間が延びることや必要部品変数が減ること、使用可能なピンが増えることといったメリットがあります。この内蔵発振での書き込みについてはマイナーなのか、調べたとおりにやってみても現在においてはうまくいかなかったり、情報が少なめだったりとして苦戦しました。

配線は以下のようにします。

内蔵発振で使用するため用の Arduino 環境を準備します。
https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard から、 breadboard-1-6-x.zip をダウンロードします。
そして、 ドキュメント/Arduino/hardware のフォルダに、先ほどの zip の中身である breadboard フォルダをコピーします。この場所が見当たらない場合には、作成してしまって問題ないようです(自分の場合にはうまく認識しました)。

この状態で Arduino IDE を起動すると、 ATmega328 on a breadboard というボード構成を選ぶことができるようになります。
このボード構成を選んだ状態で、ブートローダーの書き込みを選択すると、ブートローダーの書き込みが始まります。
このとき、Arduino 上のマイコンを抜いたりする必要はありません。

通常のスケッチの書き込みのときには、「書き込み装置を使って書き込む」を選択します。このときにも Arduino Uno は ISP として構成したままのものを使います。

外部発振で使用する

水晶振動子を追加して、外部発振で使用する場合について説明します。
Aruduino Uno を Aruduino ISP として、書き込み装置にする部分までは前項と同じです。ただし、回路を変更して以下のようにします。

ボードの選択は、 Arduino / Genuino UNO を選択します。この状態でブートローダーを書き込みを選択すると、書き込みが始まります。この場合でも Arduino 上のマイコンを抜く必要はありません。

先ほどと同様に、通常のスケッチの書き込みの際には、「書き込み装置を使って書き込む」を選択します。間違えてマイコンへ書き込むを選択すると、書き込み装置としている Arduino 側のマイコンを書き換えてしまうのでご注意ください。

その他

ブートローダーの書き込みが失敗して、結構手こずることがありましたが、上記の手順ができてからはスムーズにできている気がします。今回使用している Arduino IDE は 1.8.5 となっています。
それでもうまくいかないことがあります。ブレッドボードでの配線が悪いのか、接触不良でマイコンを認識失敗することが多いです。そんなときには配線をやり直したり、ICをぐぐっと押し込んだりして対処しています。

追記

冒頭で Arduino Uno R3 は約 3000 円と話していたのですが、公式ならばという条件でした。 Amazon を見てみると、 Arduino 互換機もいろいろとあるようで、 Arduino Uno の互換機も以下のようにありました。


これだと1つあたり 650 円となるので、今まで説明してきたような手間から解放される点を考慮すると十分に安いといえると思いました。これなら何かの工作物にためらいなく入れられそうです。