rails7とbootstrapを試す。

フロントエンド開発が大きく変わりそうなrails7.
どんな感じになるか試したら、知識がアップデートできておらずはまったのでメモ.


環境は
$ bundle exec rails -v Rails 7.0.0
まずはesbuildとbootstrapで構築開始。
$ bundle exec rails new todo -j esbuild --css bootstrap

順調に進んだものの、ここでハマったのがアセットのコンパイルが失敗する件。
$ bundle exec rails assets:precompile

エラーを見ていくとyarn buildが失敗している。原因がわからん。
試行錯誤の結果、package.jsonにbuild設定が自動で追加されないことが原因と気づいた。
メッセージでadd ...と出ていたのをちゃんと読んでいれば。。。
"scripts": { "build": "esbuild app/javascript/*.* --bundle --outdir=app/assets/builds" }

また”Command css:build failed, ensure yarn is installed and `yarn build:css`”の場合は、

"scripts": { "build:css": "sass ./app/assets/stylesheets/application.bootstrap.scss ./app/assets/builds/application.css --no-source-map --load-path=node_modules" }

をpackage.jsonに追加設定してあげることで,起動後も問題なくbootstrapが利用できました。

$ bundle exec rails s

参考:

Rails 7 をちょこっと試す(さらば、Webpacker 編) - Qiita

docker-composeで作ったコンテナに対してfirewalldによるアクセス制御は可能か?

結論:調査の結果、簡単な方法では実現不可能に思える。

代替案:リッスンポートをlocalhostにしてしまいssh port foward等でアクセス制限する。

調査結果:

参考:
今回実現できなかったのはこれが原因と思える。

ufwなのでdebian系の話と思えるが今回悩んだものと同じ原因と思われる。

docker用のZoneを定義すればできるのかもと読めた。時間があれば試してみたい。

terraformでopenstack上にVM環境を自動構築する。

以前から試したくて、少し前に試行したのでメモ。

 

準備するもの

teraform(オフィシャルサイトから)

~/.config/openstack/clouds.yaml (openstack)のクレデンシャル情報を格納

sample.tf(以下例)

# Define required providers
terraform {
required_version = ">= 0.14.0"
  required_providers {
    openstack = {
      source  = "terraform-provider-openstack/openstack"
      version = "~> 1.35.0"
    }
  }
}

# Configure the OpenStack Provider
provider "openstack" {
  cloud="devstack" #clouds.yamlに定義した名称を入れる
}

# Create a web server
resource "openstack_compute_instance_v2" "test-server" {
  # 詳細省略
}

 

実行例

$teraform init

$teraform plan

$teraform apply

これで、問題なければインスタンス作成が完了する。

OpenStack Victoriaリリース

2020/10/14にリリースされた。

主要なエンハンスは以下3つ。個人的にはネットワーク周りの改善に興味がある。OVNのカバー範囲拡大等をみていると、まだ主流はOVSベースの方が多そうに見える。

OpenStackでベアメタルサーバー提供はどこまで使えそうか?調べてみた。

検索しても実現までこぎつけた事例はあまり見つけられず、Yahooさんの事例のみ。

知りたかったのは、ベアメタルサーバー時にNWをどう分離・仮想化するかという点、

SDNスイッチが有力なんだろうけど、高いのでできれば避けたい。。

ヤフーが手掛けるベアメタルOpenStackとブロケード流「自動化」

 

あとは、事例ではないけどRHOSPであればドキュメントが存在して実現できそうな雰囲気。「デフォルトのベアメタルネットワークアーキテクチャー図」を見ると、NWの分離・仮想化は全ての通信をコントローラ経由で行うことで実現できそう。

 

ただ、コントローラ側が専用のNICを使っていないところを見ると、
どうやって分離を行うか、とかはもう少し勉強が必要そう。

 

あとは、この記事も参考になった。イメージを事前に作ってbaremetal nodeにデプロイすることでユーザ追加ができるあたり興味深い。

OpenStack TrainをRDOのall in oneで構築してみた(詳細)

実際に構築した際の手順をメモ。

試行錯誤あったけどドキュメント通りやればできると思われる。

環境詳細

OS:Centos 8.2

OpenStack Train *1

OpenStack構成:1ノード構成(all in one)

ストレージ:LVM(つまりceph無し構成)

NIC:eth1

IP:192.168.24.2

手順抜粋
$sudo hostnamectl set-hostname standalone.localdomain
$sudo hostnamectl set-hostname standalone.localdomain --transient

#パッケージ取得
$sudo dnf install -y https://trunk.rdoproject.org/centos8/component/tripleo/current/python3-tripleo-repos-.el8.noarch.rpm
#versionはその時の最新版を指定

$
sudo yum install -y python3-tripleoclient
$openstack tripleo container image prepare default \
--output-env-file $HOME/containers-prepare-parameters.yaml

#IP指定
$export IP=192.168.24.2 $export NETMASK=24 $export INTERFACE=eth1

#config生成
$cat <<EOF > $HOME/standalone_parameters.yaml parameter_defaults: CloudName: $IP ControlPlaneStaticRoutes: [] Debug: true DeploymentUser: $USER DnsServers: - 1.1.1.1 - 8.8.8.8 DockerInsecureRegistryAddress: - $IP:8787 NeutronPublicInterface: $INTERFACE # domain name used by the host NeutronDnsDomain: localdomain # re-use ctlplane bridge for public net, defined in the standalone # net config (do not change unless you know what you're doing) NeutronBridgeMappings: datacentre:br-ctlplane NeutronPhysicalBridge: br-ctlplane # enable to force metadata for public net #NeutronEnableForceMetadata: true StandaloneEnableRoutedNetworks: false StandaloneHomeDir: $HOME InterfaceLocalMtu: 1500 # Needed if running in a VM, not needed if on baremetal NovaComputeLibvirtType: qemu EOF
#デプロイ
$
sudo openstack tripleo deploy \ --templates \ --local-ip=$IP/$NETMASK \ -e /usr/share/openstack-tripleo-heat-templates/environments/standalone/standalone-tripleo.yaml \ -r /usr/share/openstack-tripleo-heat-templates/roles/Standalone.yaml \ -e $HOME/containers-prepare-parameters.yaml \ -e $HOME/standalone_parameters.yaml \ --output-dir $HOME \ --standalone
これで、上手くいけば、一旦構築完了。

*1:OpenStack Train RHOSP16と考えて選定

NVMe-oF対応ストレージって?

聞き慣れない「NVMe-oF対応ストレージ」というニュース。

NVMe-oFってと調べていくと、Mellanox ConnectX-5(つまりInfiniBand HBA)関連の情報でそれっぽいのがヒット。

まとめると、

  • NVMe-oF 技術は Ethernet、Fibre Channel、InifiniBand という物理層、RDMAやiWARP などのリモートメモリアクセス技術を使って通信することで、 NVMe プロトコルの制限(主としてPCI-Expressバスの制限)を回避できる