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
参考:
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ベースの方が多そうに見える。
-
Kubernetesと統合強化
-
多様なアーキテクチャと標準のさらなるサポート
-
複雑なネットワークの問題の改善
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対応ストレージ」というニュース。
まとめると、
- SSD接続で用いられるNVMe (Non-Volatile Memory Express) プロトコルはPCI-Expressバス上を通るプロトコルであるため、接続距離、台数に制限がある。
- NVMe-oF 技術は Ethernet、Fibre Channel、InifiniBand という物理層、RDMAやiWARP などのリモートメモリアクセス技術を使って通信することで、 NVMe プロトコルの制限(主としてPCI-Expressバスの制限)を回避できる