nekop's blog

OpenShift / JBoss / WildFly / Infinispanの中の人 http://twitter.com/nekop

WildFly Swarm 2016.9 リリース、MicroProfileで実行

WildFly Swarm 2016.9がリリースされたので試してみます。

WildFly Swarm Project Generatorでデフォルトのまま生成してみると以下のpom.xmlが生成されました。Swarmのバージョンが2016.8.1とひとつ前のものになっているので、2016.9に書き換えてmvn packageでビルドします。ビルドしたら50MB弱のtarget/demo-swarm.jarが出来上がり、java -jar target/demo-swarm.jarで起動できます。http://localhost:8080/rest/helloにアクセスするとHello from WildFly Swarm!が表示されます。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>demo</artifactId>
  <name>Wildfly Swarm Example</name>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <properties>
    <version.wildfly.swarm>2016.8.1</version.wildfly.swarm>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <failOnMissingWebXml>false</failOnMissingWebXml>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.wildfly.swarm</groupId>
        <artifactId>bom-all</artifactId>
        <version>${version.wildfly.swarm}</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <finalName>demo</finalName>
    <plugins>
      <plugin>
        <groupId>org.wildfly.swarm</groupId>
        <artifactId>wildfly-swarm-plugin</artifactId>
        <version>${version.wildfly.swarm}</version>
        <executions>
          <execution>
            <goals>
              <goal>package</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <!-- Java EE 7 dependency -->
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
      <scope>provided</scope>
    </dependency>
    <!-- Wildfly Swarm Fractions -->
  </dependencies>
</project>

demo-swarm.jarの中には_bootstrap/demo.warというようにアプリケーションのwarが含まれています。

swarm.jarを実行するのではなく、WildFly Swarm MicroProfileを使って指定したwarを実行することもでできます。

java -jar microprofile-2016.9-hollowswarm.jar target/demo.war

OpenShift Origin v1.3.0-rc1をoc cluster up

VagrantVMセットアップする部分は前回のFedora 24でoc cluster upを利用してOpenShift Originをセットアップするを参照。

DOWNLOAD_URL=https://github.com/openshift/origin/releases/download/v1.3.0-rc1/openshift-origin-client-tools-v1.3.0-rc1-ac0bb1bf6a629e0c262f04636b8cf2916b16098c-linux-64bit.tar.gz
FILENAME=$(basename $DOWNLOAD_URL)
PATHNAME=${FILENAME%%\.tar\.gz}

sudo dnf install git docker -y
sudo sh -c "echo INSECURE_REGISTRY='--insecure-registry 172.30.0.0/16' >> /etc/sysconfig/docker"
sudo systemctl start docker
sudo systemctl enable docker
curl -LO $DOWNLOAD_URL
sudo tar xf $FILENAME --strip=1 -C /usr/bin $PATHNAME/oc
sudo curl -L https://raw.githubusercontent.com/openshift/origin/master/contrib/completions/bash/oc -o /etc/bash_completion.d/oc
. /etc/bash_completion.d/oc
sudo oc cluster up --metrics
mkdir ~/.kube/
sudo cat /var/lib/origin/openshift.local.config/master/admin.kubeconfig > ~/.kube/config

NexusをDockerで動作させる

Nexusは基本的にOpenShift上で動作させて使ってるんだけど、自分の場合はOpenShift環境が複数あってNexusも作って壊して、みたいなことが多いという特殊な状態なので、別の環境にマスターとなるミラーがあったほうが良さそうだなぁ、ということで自分の汎用サーバにしているRHEL 7 VMでNexusを動かすことにした。

データボリュームはホストマウントでsystemdのUnitファイル書いておしまい。

sudo mkdir /sonatype-work && sudo chmod 777 /sonatype-work
sudo sh -c "cat << EOM > /usr/lib/system/systemd/nexus.service
[Unit]
Description=Nexus on Docker
Requires=docker.service
After=docker.service

[Service]
Type=simple
ExecStartPre=-/usr/bin/docker stop nexus
ExecStartPre=-/usr/bin/docker rm nexus
ExecStartPre=/usr/bin/docker pull sonatype/nexus
ExecStart=/usr/bin/docker run --name nexus -p 8081:8081 -v /sonatype-work:/sonatype-work:Z sonatype/nexus

[Install]
WantedBy=multi-user.target
EOM"
sudo systemctl start nexus && sudo systemctl enable nexus

Bose QuietComfort 35を買った

Bose QuietComfort 15を使っていて今年の3月にアンオフィシャルのイヤーパッドに交換していたのだけど、やはり安物なのかすぐ皮が割れてダメになってしまった。経験上オフィシャルのイヤーパッドは2年強持つけど5000円くらいするし、QC15はもう7年前の製品なのでこのタイミングでお金かかる補修も微妙だし本体ごと買い換えるかなー、ということで今年6月に発売されていたBose QuietComfort 35をポチった。ヨドバシのポイントが結構あったのも使いたかったしね。6時間でおうちに届いた。

Nexus 6はペアリングして問題なく利用できた。

Fedora 24はペアリングできたように見えるけどヘッドフォンとして認識していない。調べてみると、LinuxのbluezはLEでのペアリングをサポートしておらず、LEが有効になったままペアリングするとダメなので一度bredrにしてペアリングして設定を戻す、という作業が必要とのこと。ペアリングを除けばLEはLinux 3.4/bluez 5からサポートされているということらしい。

http://unix.stackexchange.com/questions/292189/pairing-bose-qc-35-over-bluetooth-on-fedora

Soundを開いてBose QuietComfort 35を選択。Profileには"High Fidelity Playback (A2DP Sink)"と"Headset Head Unit (HSP/HFP)"という2つのProfileがあり、前者はふつうに高音質だが後者は非常に低音質になる。ただし、後者じゃないとマイクが認識しない。InputでQC35を選択すると自動的に後者のプロファイルになるようだ。

調べてみるとこれはBluetoothの仕様で、A2DPは片方向トラフィックなのでマイクは明らかに機能しないとのこと。音楽聞くときとビデオカンファレンスするとき、それぞれ設定で切り替えないといけないのは面倒だなぁ。

WildFly 10.1.0.Final リリースしました

WildFly 10.1.0.Finalがリリースされました。WildFlyのサイトからダウンロードできます。

f:id:nekop:20160201100503p:plain

リリースノートはこちら。今回のハイライトはデフォルトでのHTTP/2のサポートです。

HTTP/2をサポートするには、TLSの拡張であるALPNをサポートする必要があるのですが、JavaTLS実装にALPNのサポートが追加されるのはまだリリースされていないJava 9です。

Jettyにはalpn-boot.jarというbootclasspathを利用してTLS実装を差し替えるというhackライブラリがあるのですが、利用するJavaのバージョンに依存があり、バージョン毎に対応するalpn-boot.jarを利用しないと動作しないという欠点があります。そこで、WidFlyのWebサーバであるUndertowでは、ALPNをサポートする別のhackを実装して、今回のリリースとなりました。

ChromeでF12を押して、Networkタブを開き、表示項目を右クリックしてProtocolを追加するとHTTP/2であるかどうかを上のツイートのように確認できます。

OpenShift Origin 1.3.0 v1.3.0-alpha.3をoc cluster up

前回のFedora 24でoc cluster upを利用してOpenShift Originをセットアップするのalpha3バージョンです。コマンドのメモだけ。

sudo dnf install git docker -y
sudo sh -c "echo INSECURE_REGISTRY='--insecure-registry 172.30.0.0/16' >> /etc/sysconfig/docker"
sudo systemctl start docker
sudo systemctl enable docker
curl -LO https://github.com/openshift/origin/releases/download/v1.3.0-alpha.3/openshift-origin-client-tools-v1.3.0-alpha.3-7998ae4-linux-64bit.tar.gz
sudo tar xf openshift-origin-client-tools-v1.3.0-alpha.3-7998ae4-linux-64bit.tar.gz --strip=1 -C /usr/bin openshift-origin-client-tools-v1.3.0-alpha.3-7998ae4-linux-64bit/oc
sudo curl -L https://raw.githubusercontent.com/openshift/origin/master/contrib/completions/bash/oc -o /etc/bash_completion.d/oc
. /etc/bash_completion.d/oc
sudo oc cluster up
mkdir ~/.kube/
sudo cat /var/lib/origin/openshift.local.config/master/admin.kubeconfig > ~/.kube/config

Fedora 24インストール

Fedora 24がリリースされたのでいつも通りWorkstationを半自動クリーンインストール。会社のThinkPad T440s、おうちのDell XPS 13 9350とThinkPad X1 Carbon 2012。

Fedora 23でいつも通りliveusb-creatorを使ったらUSBメモリの内容が初期化されてしまった。Fedora 23でliveusb-creatorが破壊的な変更をするようになってしまったようだ。How to create and use Live USBに従ってliveusb-creatorではなくCUIlivecd-toolsを使って書き込めばいままで通りのUSBメモリが維持できる。

セットアップの流れは以下のような感じ。

  • sudo visudo
  • USBメモリから$HOMEの.gitを取得してgit reset --hard
    • $HOME以下の設定ファイルや自前スクリプト群が復元する
  • sudo dnf update -y
  • gsettings修正スクリプト実行
    • gsettings set org.gnome.desktop.input-sources xkb-options "['ctrl:nocaps']"
    • gsettings set org.gnome.desktop.interface gtk-key-theme 'Emacs'
    • gsettings set org.gnome.desktop.interface clock-show-date true
  • gitからいくつかcloneするスクリプト実行
  • いくつかパッケージをインストールするスクリプト実行
  • USBメモリからアーカイブ類のバックアップを復元するスクリプト実行
  • Emacsでpackage-install
    • ack
    • twittering-mode
    • helm
    • go-mode
  • Emacsのsemiとwanderlustインストール
    • こいつらはmake install
  • chromeとbluejeansのrpmのインストール
  • Firefox syncのセットアップ
  • Firefox about:config
    • browser.showQuitWarning = true
    • middlemouse.contentLoadURL = false
    • browser.urlbar.trimURLs = false
  • 会社のCA証明書、Wireless、VPNセットアップ

追加でインストールしているパッケージは現状こんな感じ。過去インストールしていたもののうちいくつかは会社のサーバやDockerイメージに追い出した。

git
autofs
nfs-utils
sshfs
ack
man-pages
hexchat
java-1.8.0-openjdk\*
emacs
emacs-apel
flim
w3m
emacs-w3m
aspell-en
libreoffice-writer
libreoffice-calc
libreoffice-impress
sysstat
tcpdump
strace
wireshark-gnome
zlib-devel
docker
spice-xpi
libvirt
vagrant
vagrant-libvirt
virt-manager
virt-install
gimp
rpm-build
rpmdevtools
golang

セットアップはだいたい30分で終わる。