20190226のLinuxに関する記事は10件です。

VMware上での仮想マシン作成(CentOS 7)

はじめに

このページで説明すること

VMware上に仮想マシンを作成して、OS(CentOS 7)をインストールします。

大まかな流れは以下の通りです。
① 仮想マシンのイメージを作ります。空の箱を準備する作業です。
② OSをインストールします。空の箱に中身を入れる作業です。

こんな方向け

✔ 初めてVMwareを使う人:hatching_chick:
✔ ひとつひとつの工程をキャプチャで確認したい人

準備するもの

  • VMware Workstation Player (今回、筆者の環境は14)
  • インストールするOSのISOファイル (今回はCentOS 7 64-bitを使用 :penguin:)
  • 仮想マシンを作成できるスペックのホストPC (メモリやストレージの空き容量に注意!)
  • (できれば)インターネットに接続できる環境

やってみよう!

仮想マシンイメージの作成

  1. VMwareのホーム画面で[新規仮想マシンの作成]をクリックします。
    1.png

  2. [後でOSをインストール]を選択し、[次へ]をクリックします。
    2.png

  3. 使用するOSとバージョンを選択し、[次へ]をクリックします。
    今回は「Linux」「CentOS 7 64ビット」を選択しています。
    3.png

  4. 仮想マシンの名前とインストール場所を入力し、[次へ]をクリックします。
    4.png

  5. 仮想マシンのディスク容量を入力し、[次へ]をクリックします。
    5.png
    ※注意※
    あまりに大きいサイズにするとホストサーバが死亡するので気をつけましょう!
    ただし、あまりに小さいとソフトウェアが動作しない可能性がありますので少し大きめにしておいた方がいいでしょう。
    使いたいソフトウェアのシステム要件をチェックしておくとGood!

  6. (任意)[ハードウェアをカスタマイズ]をクリックします。
    6.png

  7. 設定を編集します。
    今回は、メモリを2GBに変更しました。[閉じる]をクリックします。
    7.png

  8. [完了]をクリックします。
    6.png

  9. 仮想マシンの箱ができました!(左側にCentOS 7 64ビットという名前のサーバができています)
    8.png

OSインストール

ISOの接続

  1. サーバを選択し、[仮想マシンの再生]をクリックします。
    8.png

  2. [Player]→[:dvd:取り外し可能デバイス]→[CD/DVD]→[設定]を選択します。
    9.png

  3. [ISOイメージファイルを使用する]にチェックを入れ、用意したISOファイルを指定して、[OK]をクリックします。
    10.png

  4. 「Enter」キーを押します。
    この画面が出たらインストールの始まりです。やったね!
    11.png

(任意)インストール画面の解像度を変えておく方法

CentOS 7の場合、このままインストールすると画面が見切れて作業しづらいことがあります。
解像度を変更してからインストールを開始すると、適切な画面サイズで作業できます:wink:

  1. 以下の画面で「Tab」キーを押します。
    11.png

  2. 下部にあるインストールオプション(白い文字の部分)の、「...quiet」の後ろに
    resolution=1360x768と付け足して「Enter」キーを押します。
    ※設定が英語キーボード(101キーボード)になっている場合、「=」は日本語キーボードでは「^」を押すことで入力できます。
    12.png

インストール言語の設定

  1. インストールが始まり、以下の画面が出てきます。
    (解像度の変更をした場合は画像のように画面が大きくなっているはずです。やったね:thumbsup:)
    13.png

  2. [日本語]を選択し、[続行]をクリックします。
    14.png

  3. この画面が表示されます。
    15.png

地域設定

日付と時刻

  1. [日付と時刻]をクリックします。
    15 - コピー.png

  2. タイムゾーンで「アジア」と「東京」(Asia/Tokyo)を選択し、
    日付と時刻を設定して、左上の[完了]をクリックします。
    16.png

キーボード

  1. [キーボード]をクリックします。
    15 - コピー (3).png

  2. [日本語]が選択されていることを確認し、左上の[完了]をクリックします。
    17.png

言語サポート

  1. [言語サポート]をクリックします。
    15 - コピー (2).png

  2. [日本語]が選択されていることを確認し、左上の[完了]をクリックします。
    18.png

ソフトウェア設定

インストールソース

  • 何もしなくて構いません:thumbsup:

ソフトウェアの選択

  1. [ソフトウェアの選択]をクリックします。
    15 - コピー (4).png

  2. インストールするソフトウェアを選択し、左上の[完了]をクリックします。
    ※GUIを使いたいときは「サーバー(GUI使用)」を選択してね:penguin:
    画像の例では「最小限のインストール」を選択しています。
    18.png

システム設定

インストール先

  1. [インストール先]をクリックします。
    15 - コピー (5).png

  2. ディスクの追加やパーティション構成を設定し、左上の[完了]をクリックします。
    ▼パーティション:
    初めてのときや、とにかく何でもいいからサーバが欲しいときは[パーティションを自動で構成する]を選択します。
    画像の例では[パーティションを自分で構成する]を選択しています。
    19.png

  3. (パーティションを自分で構成する場合)以下の画面で左下の[+]をクリックします。
    パーティションの考え方と推奨値については、【Red Hat社公式サイト】推奨されるパーティション設定スキームで確認できます。
    20.png

  4. 追加するパーティションのマウントポイント名とサイズを入力します。
    21.png

  5. 今回は/work(5120MiB)と/home(512MiB)を作成してみました。
    ※ユーザをほとんど作らない予定のため、/homeはRed Hat社の推奨値より小さくしています。
    パーティションを決めたら、左上の[完了]をクリックします。
    22.png

  6. [変更を許可する]をクリックします。
    23.png

kdump

  1. [kdump] をクリックします。
    15 - コピー (6).png

  2. 「kdumpを有効にする」にチェックが入っていることを確認し、左上の[完了]をクリックします。
    24.png

ネットワークとホスト名

  1. [ネットワークとホスト名]をクリックします。
    15 - コピー (7).png

  2. イーサネットを[オン]にし、ホスト名を設定して左上の[完了]をクリックします。
    ※ホスト名は「localhost.localdomain」のままでも構いません。
    25.png

Security Policy

  • ここでは何もしなくて構いません:thumbsup:

インストールの開始

  1. [インストールの開始]をクリックします。
    26.png

  2. [ROOTパスワードの作成]をクリックします。
    27.png

  3. root(管理者)のパスワードを設定し、左上の[完了]をクリックします。
    28.png

  4. root以外のユーザを作成する場合は、[ユーザの作成]をクリックし、ユーザ名やパスワードを設定します。

  5. 「完了しました!」と表示されることを確認し、右下の[再起動]をクリックします。
    29.png

  6. コンソールが表示され、以下のようにログインを促すメッセージが出ていたら成功です。
    30.png

おつかれさまでした:wink:

これで仮想マシンを使えますね!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Docker Registryを構築する

はじめに

本記事は、Docker Registryを使用して、プライベートレジストリ環境を構築する手順について記載しています。

本記事の環境は以下になります。
手元のMacBook Airがクライアントで、iMacがプライベートレジストリ環境になります。

Docker.png

Docker Registry

Docker Registryは、Dockerイメージを一元管理するためのリポジトリサービスです。
公式のDocker Hubでは、CentOSなど各種Linuxディストリビューションの公式イメージや、有志で作成されたイメージなどが配布されています。

公式イメージの「registry」を使用することで、プライベートレジストリ環境を構築することができます。

現在、registryはVersion2.0系が主流で、Go言語で実装されています。

Docker Registryの構築

イメージのダウンロード(registry)

はじめに、registryイメージをダウンロードします。

  • ダウンロードするイメージの確認
    docker search registry
NAME                                    DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
registry                                The Docker Registry 2.0 implementation for s…   2454                [OK]                
konradkleine/docker-registry-frontend   Browse and modify your Docker registry in a …   213                                     [OK]
hyper/docker-registry-web               Web UI, authentication service and event rec…   161                                     [OK]
atcol/docker-registry-ui                A web UI for easy private/local Docker Regis…   113                                     [OK]
distribution/registry                   WARNING: NOT the registry official image!!! …   57                                      [OK]
marvambass/nginx-registry-proxy         Docker Registry Reverse Proxy with Basic Aut…   44                                      [OK]
jhipster/jhipster-registry              JHipster Registry, based on Netflix Eureka a…   41                                      [OK]
google/docker-registry                  Docker Registry w/ Google Cloud Storage driv…   37                                      
confluentinc/cp-schema-registry         Official Confluent Docker Images for Schema …   29                                      
joxit/docker-registry-ui                Docker registry v2 web User Interface           23                                      [OK]
klausmeyer/docker-registry-browser      Web Interface for the Docker Registry HTTP A…   17                                      [OK]
openshift/origin-docker-registry        The integrated OpenShift V3 registry            13                                      
deis/registry                           Docker image registry for the Deis open sour…   12                                      
landoop/schema-registry-ui              UI for Confluent's Schema Registry              7                                       [OK]
parabuzzle/docker-registry-ui           Docker registry frontend for registry v2        6                                       
quiq/docker-registry-ui                 Docker Registry UI                              5                                       
anoxis/registry-cli                     You can list and delete tags from your priva…   5                                       [OK]
elasticio/docker-registry-ecs           Docker image to run Docker private registry …   4                                       [OK]
allingeek/registry                      A specialization of registry:2 configured fo…   4                                       [OK]
webhippie/registry                      Docker images for registry                      1                                       [OK]
aibaars/docker-registry2-gcs            Docker Registry2 w/ Google Cloud Storage dri…   1                                       
yammer/docker-registry-cache            Simple docker registry cache using squid-pro…   1                                       [OK]
convox/registry                                                                         0                                       
lorieri/registry-ceph                   Ceph Rados Gateway (and any other S3 compati…   0                                       
torchbox/kube-registry-proxy            kube-registry-proxy fork with correct timeou…   0                                       [OK]
  • イメージのダウンロード
    docker pull registry
Using default tag: latest
latest: Pulling from library/registry
169185f82c45: Pull complete 
046e2d030894: Pull complete 
188836fddeeb: Pull complete 
832744537747: Pull complete 
7ceea07e80be: Pull complete 
Digest: sha256:870474507964d8e7d8c3b53bcfa738e3356d2747a42adad26d0d81ef4479eb1b
Status: Downloaded newer image for registry:latest
  • イメージの確認
    docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
registry            latest              d0eed8dad114        3 weeks ago         25.8MB
centos              latest              1e1148e4cc2c        2 months ago        202MB

コンテナの起動

次に、ダウンロードしたregistryイメージをもとにレジストリ用のコンテナを起動します。
レジストリは5000番ポートを使用します。

  • コンテナの起動
    docker run -d -p 5000:5000 registry
e4a6f960fdb3c79250a4baf90e84c96bcebedd86c023900bb3786f32828ae0b8
  • コンテナの起動確認
    docker ps --format "{{.ID}}\t{{.Image}}\t{{.Ports}}"
e4a6f960fdb3    registry    0.0.0.0:5000->5000/tcp

これでプライベートレジストリ環境が構築できました。

イメージのアップロード

構築したレジストリ環境にアップロードするためのイメージを作成します。
(※)本記事の環境はMac

本記事では例として、CentOSののベースイメージにnginxをインストールします。
なお、nginxをインストールするためには、nginx用レポジトリの追加が必要になるため、公式を参考にして、レポジトリファイルの内容をコピーして作成します。

  • Dockerfileの作成
    vi Dockerfile
# イメージの取得
FROM centos:latest

# 作成者情報
MAINTAINER 0.1 https://twitter.com/Brutus08159681

# Nginx用レポジトリファイルのコピー
ADD nginx.repo /etc/yum.repos.d/

# Nginxのインストール
RUN ["yum", "-y", "install", "nginx"]

# Nginxの自動起動設定
RUN ["systemctl", "enable", "nginx.service"]
  • nginx.repoの作成
    vi nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
  • Dockerファイルのビルド
    docker build -t webserver .
Sending build context to Docker daemon  10.75kB
Step 1/5 : FROM centos:latest
 ---> 1e1148e4cc2c
Step 2/5 : MAINTAINER 0.1 https://twitter.com/Brutus08159681
 ---> Running in 4d7ff271e184
Removing intermediate container 4d7ff271e184
 ---> 360f621826fd
Step 3/5 : ADD nginx.repo /etc/yum.repos.d/
 ---> 065d346e93ad
Step 4/5 : RUN ["yum", "-y", "install", "nginx"]
 ---> Running in db772f205c5a
Loaded plugins: fastestmirror, ovl

//途中省略

Installed:
  nginx.x86_64 1:1.14.2-1.el7_4.ngx                                             

Dependency Installed:
  make.x86_64 1:3.82-23.el7            openssl.x86_64 1:1.0.2k-16.el7           

Complete!
Removing intermediate container db772f205c5a
 ---> a5dc224331c9
Step 5/5 : RUN ["systemctl", "enable", "nginx.service"]
 ---> Running in cb98e1b1ec8a
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service, pointing to /usr/lib/systemd/system/nginx.service.
Removing intermediate container cb98e1b1ec8a
 ---> afd46670157f
Successfully built afd46670157f
Successfully tagged webserver:latest

プライベートレジストリにアップロードするために、先ほど作成したイメージにタグを付けます。

  • タグ付け
    docker tag webserver localhost:5000/nginx
    docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
webserver              latest              bc4ced76a58a        2 minutes ago       284MB
localhost:5000/nginx   latest              bc4ced76a58a        2 minutes ago       284MB
registry               latest              d0eed8dad114        3 weeks ago         25.8MB
centos                 latest              1e1148e4cc2c        2 months ago        202MB

タグ付けしたイメージをプライベートレジストリ環境にアップロードします。

  • イメージのアップロード(コンテナのプライベートレジストリ)
    docker push localhost:5000/nginx
The push refers to repository [localhost:5000/nginx]
eecb714a1eec: Pushed 
f12d083c2a5d: Pushed 
fbf94d353010: Pushed 
071d8bd76517: Layer already exists 
latest: digest: sha256:ec84796f9312457e9afd0a0b3fff1ee40e52512f4f3b83dbaee8a7e728971ee4 size: 1155

イメージのアップロードが完了したので、確認のため、ローカルに保存したイメージを削除します。

docker rmi webserver

Untagged: webserver:latest

docker rmi localhost:5000/nginx

Untagged: localhost:5000/nginx:latest
Untagged: localhost:5000/nginx@sha256:ec84796f9312457e9afd0a0b3fff1ee40e52512f4f3b83dbaee8a7e728971ee4
Deleted: sha256:afd46670157fa5608642dae40aaad502eb69787bb0494536d9774089f7e44d8d
Deleted: sha256:edfe82b3e83ea6e3fbcb29ba5d801f7a00d5cc6cd1c650fe519d00fbea6a34f7
Deleted: sha256:a5dc224331c9be59615fdf8101d188ed56dd6052176c744f07d1bbdb23109464
Deleted: sha256:313c7c3089ee43faf482383dcb1e04e35cef648c566332239a86920fb4921d1e
Deleted: sha256:065d346e93ad13542b6790324f0ca7766335730334d0d39200948239737164a6
Deleted: sha256:d24e00ece851f250e549c84f3e2165f952cee2bf43c913dd1328023e8888bb81
Deleted: sha256:360f621826fd1ad8823e54e70a586a37cbdea1c9844b6b9f7b00853537931548

docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
registry            latest              d0eed8dad114        3 weeks ago         25.8MB
centos              latest              1e1148e4cc2c        2 months ago        202MB

イメージのダウンロード(プライベートレジストリ環境→nginxのイメージ)

プライベートレジストリ環境にあるレジストリ用のコンテナから、先ほどアップロードしたnginxのイメージをダウンロードします。

  • コンテナのプライベートレジストリ環境からダウンロード
    docker pull localhost:5000/nginx
latest: Pulling from nginx
a02a4930cb5d: Already exists 
53cacbc24ea9: Pull complete 
6743d7a92897: Pull complete 
0b2d1befb17c: Pull complete 
Digest: sha256:ec84796f9312457e9afd0a0b3fff1ee40e52512f4f3b83dbaee8a7e728971ee4
Status: Downloaded newer image for localhost:5000/nginx:latest
  • イメージの確認
    docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
localhost:5000/nginx   latest              afd46670157f        3 minutes ago       284MB
registry               latest              d0eed8dad114        3 weeks ago         25.8MB
centos                 latest              1e1148e4cc2c        2 months ago        202MB
  • コンテナの起動
    docker run --privileged --name "test1" -d -p 8080:80 localhost:5000/nginx /sbin/init
  • nginxの起動確認
    ブラウザからローカルホストの8080にアクセスします。 スクリーンショット 2019-02-23 20.40.35.png

「Welcome to nginx!」の画面が表示されればOKです。

他のDockerクライアントからのダウンロード

他のDockerがインストールされているクライアントから、プライベートレジストリ環境にあるイメージをダウンロードする手順について解説します。

プライベートレジストリ環境のイメージをダウンロードする場合は、docker pullコマンドの引数にプライベートレジストリ環境のIP:5000/取得イメージ名を指定するだけですが、ホスト側で証明書の設定をしていないと以下のようにエラーが出力されます。

docker pull プライベートレジストリ環境のIP:5000/nginx

Using default tag: latest
Error response from daemon: Get https://プライベートレジストリ環境のIPアドレス:5000/v2/: http: server gave HTTP response to HTTPS client

ホスト側で証明書を使用しないでHTTP接続する場合は、以下の設定を行います。
(※)本記事の環境はMac

クライアン側のDockerアイコンをクリックして、perferencesのDeamonタブを開きます。
スクリーンショット 2019-02-23 21.08.24.png

insecure-registries:の「+」をクリックし、プライベートレジストリ環境のIP:5000を追加します。最後に、「Apply & Restart」をクリックします。

スクリーンショット 2019-02-23 21.15.36.png

Docker再起動後、再度、docker pullコマンドを実行すると、イメージがダウンロードできます。

Using default tag: latest
latest: Pulling from nginx
a02a4930cb5d: Pull complete 
53cacbc24ea9: Pull complete 
6743d7a92897: Pull complete 
0b2d1befb17c: Pull complete 
Digest: sha256:ec84796f9312457e9afd0a0b3fff1ee40e52512f4f3b83dbaee8a7e728971ee4
Status: Downloaded newer image for プライベートレジストリ環境のIPアドレス:5000/nginx:latest

おわりに

プライベートレジストリ環境を構築することで、統一したイメージを使用した開発ができるので、Dockerの持ち味をより引き出せます。

参考

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux の Homebrew を試してみた

こんにちは
Linux でも、最新バージョン(例えば GitHub の latest バージョン)をほぼ常に使いたい場合には、Homebrew が解となりそうです。実際にインストールして試してみました1

$ brew --version
Homebrew 2.0.2
Linuxbrew/homebrew-core (git revision 26046; last commit 2019-02-26)
$ brew install gcc binutils
$ g++ --version
  g++ (Homebrew gcc 5.5.0_4) 5.5.0
$ ld --version
GNU ld (GNU Binutils) 2.32
$ which gcc
/home/linuxbrew/.linuxbrew/bin/gcc
$ which ld
/home/linuxbrew/.linuxbrew/bin/ld

標準的なコンパイル方法例は、

$ g++ -std=c++11 -I/usr/include -I$HOMEBREW_PREFIX/include -L$HOMEBREW_PREFIX/lib test.cpp

なお MacOSX (の Homebrew)では、Xcode でインストールした clang++ を使い、/bin/ls を使うところが、比較すると異なっている気がしました。


  1. brewがlinuxで使えるらしいのでやってみる」などで紹介されています。 

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux の Homebrew を試した

こんにちは
Linux でも、最新バージョン(例えば GitHub の latest バージョン)をほぼ常に使いたい場合には、Homebrew が解となりそうです。実際にインストールして試してみました1

$ brew --version
Homebrew 2.0.2
Linuxbrew/homebrew-core (git revision 26046; last commit 2019-02-26)
$ brew install gcc binutils
$ g++ --version
  g++ (Homebrew gcc 5.5.0_4) 5.5.0
$ ld --version
GNU ld (GNU Binutils) 2.32
$ which gcc
/home/linuxbrew/.linuxbrew/bin/gcc
$ which ld
/home/linuxbrew/.linuxbrew/bin/ld

標準的なコンパイル方法例は、

$ g++ -std=c++11 -I/usr/include -I$HOMEBREW_PREFIX/include -L$HOMEBREW_PREFIX/lib test.cpp

なお MacOSX (の Homebrew)の場合では、Xcode でインストールした clang++ を使い、/bin/ls を使うところが、比較すると異なっている気がしました。


  1. brewがlinuxで使えるらしいのでやってみる」などで紹介されています。 

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Ruby  irb、テキストエディタ使用とエラー解決方法

動作環境はMacとなります。
主に自分の勉強用メモとして残しています。

Rubyプログラム irb使用

文字列はシングルクオートかダブルクオートで囲む

irb(main):001:0> "Hello, World"
=> "Hello, World"#Rubyは最後の式を自動的に出力するので、プログラムとは言えない。

putsは何かを出力する命令で、これをつけることでプログラムと言える。

irb(main):004:0> puts 'Hello World!'#これがプログラム
Hello World!
=> nil#putsは必ずnilを返す

数値の計算

irb(main):005:0> 1 + 1
=> 2
irb(main):006:0> 10 - 1
=> 9

irbで記述したプログラムをクリアしたい時

clear か control+lキー

irbを終了したい場合

exit か contol+dキー

テキストエディタ使用

この環境ではAtom使用しています。
$はターミナルでの操作を表します。

ファイル作成

$mkdir ruby_projects #mkdirはmake directoryの略でファイル作成の意味
$ls #今いるディレクトリの中身を確認
$cd ruby_projects/ #今いるディレクトリから移動
$touch hello.rb #ファイル作成
$atom . #Atomを開く時のコマンド

rubyプログラムを作成する場合、拡張子は.rbとする。

テキストエディタ

hello.rb
puts 'Hello, World!'#行末に;をつけてもエラーにはならないが、rubyは改行で認識されるため通常書かない
puts 10 + 3

ターミナル

$ ruby hello.rb #ruby + ファイル名で出力
Hello, World!
13

Linuxコマンド

現在のディレクトリをカレントディレクトリという。
ディレクトリとファイルはざっくり同じ。

$ pwd #現在いるファイルの階層を表示
$ cd .. #現在いるフォルダの1つ上の階層に移動
$ ls #現在いるフォルダの中身を表示

エラーを自力で取り除く方法

hello.rb
puts 'Hello, World!'
put 10 + 3 #putsをputと間違えた

ターミナル

$ ruby hello.rb
Hello, World! #問題なく出力される。
hello.rb:2:in `<main>': undefined method `put' for main:Object (NoMethodError)
#hello.rbファイルの二行目のputというメソッドがないよというエラー
Did you mean?  puts
               putc
#もしかしてこういう意味?とエラーが教えてくれている。

メソッドとは処理のまとまりのこと。
エラーメッセージをグーグル検索すると、解決の意図が見つかることが多い。
特にrubyは日本で広く普及されているので、情報が見つかりやすい。

以上を踏まえて修正

hello.rb
puts 'Hello, World!'
puts 10 + 3 #putをputsへ修正

ターミナル

$ ruby hello.rb
Hello, World!
13

正常にプログラムが実行された!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

nmcliでネットワークの初期設定の実施

computer_hub_loop_setsuzoku.png

背景

ネットワーク関連の設定方法nmcli編
仮想マシン構築したりする際にぱっと出てこないのでチートシート

man

何事もmanを読むとこから。
usageだけ参照。

NAME
       nmcli - command-line tool for controlling NetworkManager

SYNOPSIS
       nmcli [OPTIONS...] {help | general | networking | radio | connection | device | agent |
             monitor} [COMMAND] [ARGUMENTS...]

NIC繋いだらやること

デバイスを確認
$ nmcli device

インターフェイスを有効化
$ nmcli connection modify eth0 connection.autoconnect yes

IPアドレス変更

$ nmcli connection modify ens1 ipv4.method manual ipv4.addresses 192.168.1.100/24 

再起動後も含めた恒久的な変更は「connection.autoconnect yes」を付与するだけです。
nmtuiでいう「autoconnect」がこれに当たります。

$ nmcli connection modify ens1 ipv4.method manual ipv4.addresses 192.168.1.100/24 connection.autoconnect yes

デフォルトゲートウェイやDNSも変更できる

デフォルトゲートウェイを設定
$ nmcli connection modify eth0 ipv4.gateway 172.16.0.1

DNS設定
$ nmcli connection modify eth0 ipv4.dns 172.16.0.1

ホスト名変更

hostnamectlとかでもいいですがnmcliでも変更できます。便利。
「systemd-hostnamed」

$ nmcli general hostname srv01
$ systemctl restart systemd-hostnamed

NIC名変更

NICの名前の変更も出来ます。
デフォルトで6系から命名規則が変わりましたが

$ nmcli c m ens0 connection.interface-name enp0s8 connection.id ens

Bondig

bondingデバイスを追加

$ nmcli connection add type bond autoconnect no con-name bond01 ifname bond01 mode active-backup

slaveを割り当てる

$ nmcli connection add type bond-slave autoconnect no ifname enp8s0f1 master bond01

bondingデバイスへIPアドレスを割り当てる

$ nmcli connection modify <bond con-name> ipv4.method manual ipv4.address <ip address/suffix> ipv4.gateway <gateway address> ipv6.method ignore

$ nmcli  connection modify <bond con-name> ipv4.dns <dns address>

自動接続設定の無効化(元のNICの設定を変更)

$ nmcli connection modify <slave con-name①> connection.autoconnect no

自動接続設定

$ nmcli connection modify bond-slave-<slave con-name①> connection.autoconnect yes
$ nmcli connection modify bond-slave-<slave con-name②> connection.autoconnect yes
$ nmcli connection modify <bond con-name> connection.autoconnect yes
$ nmcli connection modify <bond con-name> connection.autoconnect-slaves 1

Bondigモデルの説明

・balance-rr
全スレーブを順繰り(ラウンドロビン)に使ってパケットを送信。
送信のみ負荷分散。

・active-backup
1つのスレーブのみを active interfaceとしパケットを送信。
active interfaceに障害が発生した場合、他の backup slave を active interfaceに切り替え、冗長性を確保。

・balance-xor
送信元/先 MACアドレスを元に送信スレーブを決定しパケットを送信。
送信のみ負荷分散。

・802.3ad
IEEE 802.3ad(LACP)に準拠したリンクアグリゲーション。

・balance-tlb
スレーブの負荷に応じて送信スレーブを決定しパケットを送信。
送信のみ負荷分散

・balance-alb
balance-tlbの機能に加え、受信も負荷分散。

・balance-alb
balance-tlbの機能に加え、受信も負荷分散。

まとめ

本業じゃないので雑な感じになってます。

参考リンク

https://blog.lorentzca.me/configure-network-bonding-in-centos7-dont-forget-subnetmask/
https://qiita.com/yteraoka/items/e661c2a8c6e7617e64f9

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Red Hat Enterprize Linux 8.0 Betaをとりあえずインストールしてみました。

Red Hat Enterprize Linux 8.0 Betaをとりあえずインストールしてみました。

Red Hat Enterprize Linux 8.0 Betaをとりあえずインストール

2018年11月15日にRed Hat Enterprize Linux 8.0 Betaが公開されました。
なので、とりあえずVMware Workstation 15 Playerにインストールしてみました。

注意点として、ゲストOSの選択でLinuxを選択し、バージョンを「その他のLinux4.x以降のカーネル」を選択すること。
※64ビットを選択するとディスクを認識しないので必ず、64ビットの記載なしのほうを選択して下さい。(私はこれが分からずハマリました...w)

RHEL8Beta_001
後は、RHEL7となんら変わらずにインストールできました。(Beta版では言語で日本語は選択肢が存在しませんでした。
RHEL8Beta_002

RHEL8Beta_003

RHEL8Beta_004

Red Hat Enterprize Linux 8.0 Betaの気になったポイント

  • カーネルがやっと4.18(5.0のrc版が出ているのに!?)

  • AnacondaのGUIや、Kickstartコマンドにおいて、Btrfsが利用できなくなります。

  • RedHat 7.xでは、ntpとchronyの両方が利用可能でしたが、8.xではchronyのみがサポート。

  • yumがDNFベースのYum 4に変更。(サブコマンドが拡張されてます)

  • ディスプレイサーバーがXorgからWaylandに変更されます

  • iptables、firewalldがnftablesに置き換えられます。(firewalldをやっと覚えたのに・・・。)

  • ストレージ暗号化のデフォルトフォーマットがLUKSv2に変更。

  • OpenSSL 1.1.1およびTLS 1.3をサポート

  • シンプルで一貫したユーザ管理画面「Red Hat Enterprise Linux Web Console」

  • API経由での洗練されたデータ管理を実現する新ストレージ管理システム「Stratis」

  • IPVLANを経由で仮想マシンに配置されたコンテナとホストを接続することで,スループットの負荷を低減し,レイテンシを最小限に

  • ネットワークのパフォーマンスを高速化する新たなTCP/IPスタックとして「Bandwith and Rpund-trip propagation time(BBR)⁠」を採用

  • RHELのリポジトリがBaseOSとAppStreamsの2つになりました。

以上、個人的(ITインフラ開発者として)にきになった点をざっと羅列してみました!

なお、RHEL8の変更点が以下のスライドでまとまってました。
https://speakerdeck.com/moriwaka/red-hat-enterprise-linux-8-betafalsemidokoro

Red Hat Enterprise Linux 8の一般提供は2019年中だそうです。

最後に

とあえず今日はここまでとします。
nftables、chrony、リポジトリについては、後々調査してレポートしてみたいと思います。
「Red Hat Enterprise Linux Web Console」もどんなものか興味ありますが、何せ情報が少ない。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

大いなる力には大いなる責任が伴うらしい

先日の勉強会での話。
社内の勉強会でSVNを利用しているのだが、先日Apacheが落ちていてSVNが起動しなかった。

サーバー管理者の人はまだ来ていないけど、きっとこのコマンドで行けるはず・・・というわけで、以下コマンドをがちゃがちゃ。

sudo service httpd restart

Enter!

あなたはシステム管理者から通常の講習を受けたはずです。
これは通常、以下の3点に要約されます:

#1)他人のプライバシーを尊重すること。
#2)タイプする前に考えること。
#3)大いなる力には大いなる責任が伴うこと。

・・・ほう。

結局何かあっても怖いので管理者が来るまで待った(ノД`)・゜・。
余計なことしなきゃよかったーと涙・・。

あとから調べてみると、上記メッセージはsudoコマンドを初めて実行すると表示されるそうだ。
大いなる力には大いなる責任が伴う・・。確かにその通りかもしれない。
ちなみに3)の元ネタはスパイダーマンだそう。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

celeron搭載の低スペックPCでは、本当にプログラミングは出来ないのか?

qiitaの投稿にハマり始めた駆け出しエンジニアです。

今日の投稿は、PCにちょっとだけ知識があった未経験新人エンジニアが実体験した記事です。
普段はPCでネットサーフィンをする位だけど、今回初めてLINUXに挑戦してみるよ!という方向けの記事になります。
プロの方から見たら恥ずかしい内容かもしれませんが、個人的にすごく達成感があったので誰かのお役に立てればと思い投稿してみました。

それでは、低スペックPCでプログラミングは出来ないのか?という課題について解決してみたいと思います。

対象PCスペック
mouse computer製 LB-C240E-S-MA
CPU celeron N3160 64bit
メモリー 3.8GB

プログラミングでは仮想環境を構築することが多いと思いますが、スペック不足で仮想環境が構築できないことがあると思います。
※上記スペックで仮想環境を構築したらPCがフリーズしました…汗笑

ここまでくるにあたり、色々と試してみました↓↓
・fedora(初心者には難しかった)、
・CentOS(上に同じ)、
・Kari Linux(そもそも初心者が手を出してはいけなかった...笑)、
・Linux mint(エディター使用時、chmodでもファイル変更権限が解決できない問題)、
・AWS cloud9(オンライン環境でしか使用できない。でもすごく便利) 

結果、一番しっくりくるのものがUbuntuで最低限のパッケージをインストールする方法でした。

記事の内容では、既存のOSを削除してLINUXのみをインストールしています。windows、macOSは無くなりますのでご注意下さい。

以下方法です。

-手順①LINUXの入手-

LINUXのディストリビューション(配布という意味)入手します。
Ubuntu japanese team : https://www.ubuntulinux.jp/

「Ubuntuのダウンロード」と進み、

「日本語Remixイメージのダウンロード」と進み、

「ubuntu-ja-18.04.1-desktop-amd64.iso(ISOイメージ)」をダウンロードさせて頂きました。

-手順②USB起動ディスクの作成-

用意するもの
・Rufus を使用させて頂きました。
 Rufus : https://rufus.ie/
・USBメモリー(手元にあった16GBの物を使いました)

先ほどのISOファイルを使います。
使い方は製作者様のHPに記載がありますのでここでは割愛します。

ここまでで、Ubuntuの起動ディスク(が入ったUSBメモリー) が完成します。

-手順③BIOSの設定-

予め、先ほど作成したUSB起動ディスクを対象のPCにセットしておきます。

次に対象のPCのBIOSを起動します。

今回インストールしたPCは電源を入れた後、F2連打でBIOS画面に移りました。どのボタンを連打するかはPCによって違うみたいです。

初めてBIOSを見ると「大丈夫かな・・」となると思いますが、慣れると面白いです。

BIOS起動後、Bootタブを選びます。

「Boot Option Priorities」という文があり、その下に4行程なにやらあると思います。

これが、起動時に選択をしているところです。

ここを、先ほど作成したUSB起動ディスクから起動できるように設定を変更します。

「enter」で選択した後、USB起動ディスク以外の項目を全て「Disabled」に変えてしまいます。

終わりましたら「Save & Exit」タブを選択し「Save Changes and Reset」を選択して「Yes」を押すと再起動します。

-手順④LINUXのインストール-

Ubuntuの説明通りにインストールすれば問題なく進めることが出来ると思います。

途中、「フルパッケージを入れるか?最低限のものにするか?」的な事を聞かれます。
今回の対象PCはスペックが低い為、最低限のインストールパッケージを選択しました。

またまた途中で、「現在あるOSを削除します」的な選択が出てくると思います。
今回の記事では既存のOSを削除してLINUXのみをインストールしたいので、
少し緊張しますが、ここで既存のOSに別れを告げ、新たにUbuntuさんを迎える準備をして下さい。

順調にいけばこのまま進めると思います。

インストール完了後、PCログイン画面が表示され、ログインしたら可愛いビーバーさんが表示されていると思います。

これで、USBはもう外して大丈夫です。

-手順⑤BIOSの設定変更-

最後に、BISOの設定を元に戻しておきます。

BIOSを起動した後、手順③で設定したUSB起動ディスクを「Disabled」にしておきましょう。




これで無事Ubuntuがインストール出来ると思います。

自分はこの低スペックPCにUbuntuをインストールし、Java環境構築とeclipseエディター使い正常に使えています。
新しいハイスペックPCを購入して仮想環境を構築する方法も解決策としてありますが、こういった形で解決するという方法もあります。
(自分はただお金がないだけでしたが・・・笑)

初めての挑戦は何でも怖いです。僕はちょっと前まで右も左も分かりませんでした。
しかし、知らないものに挑戦することに価値があると思います。
出来ないことが出来る様になる、という事はとても楽しい事だと思いますので、
興味のある方は是非挑戦してみてください。




結論「 LINUX は すごく 楽しい。」

※但し、スクール等で勉強中は、仮想環境構築出来るスペックのPCを買った方が効率が良いです。
















最後に、ここまで協力してくださった方々、ソフトウェアの開発者様にこの場を借りてお礼を申し上げます。
ありがとうございます。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ハッシュ値を使ってディレクトリ内の変更を確認するshell script

1. ディレクトリ内のファイルを確認

   ~ $ cd /media/test/
   /media/test $ ls -1
   japan.wav  tone.wav  voice.wav

2. ファイルをアルファベット順にリスト化する

   /media/test $ ls -1 /media/test |sort |sed 's/^\(.*\)$/"\1"/g' > /media/file_list
   /media/test $ cat /media/file_list 
   "japan.wav"
   "tone.wav"
   "voice.wav"

3. ファイルごとのハッシュ値を求める

   /media/test $ cat /media/file_list |xargs sha1sum > /media/cache_list
   /media/test $ cat /media/cache_list
   2a81a44333cd78a4011131d7988682129499b5ab  japan.wav
   f6f9e50fe7414c8618a9a4a71172072b6915b060  tone.wav
   0a22fa706661d01348569199a68c37aa5373f3c3  voice.wav

★ハッシュ値はデータの中身が一つでも違うと異なる値になる

4. 一つのハッシュ値を求める

   /media/test $ sha1sum /media/cache_list |sed 's/\s\s*\/.*$//g' > /media/cache
   /media/test $ cat /media/cache
   5caaff923034a87e3416542c95608b17693bde0b

5. ディレクトリ内の変更を確認するスクリプト

4.で求めたハッシュ値が前回と異なっていれば変更アリ。同じであれば変更ナシとなる。

#!/bin/sh

# $1 - 前回のハッシュ値

TEST_DIRECTORY="/media/test"
FILE_LIST="/media/file_list"
CACHE_LIST="/media/cache_list"
CACHE="/media/cache"

cd $TEST_DIRECTORY

ls -1 $TEST_DIRECTORY |sort |sed 's/^\(.*\)$/"\1"/g' > $FILE_LIST
cat $FILE_LIST |xargs sha1sum > $CACHE_LIST
sha1sum $CACHE_LIST |sed 's/\s\s*\/.*$//g' > $CACHE

cd

EXPECTED_CACHE=$1
CURRENT_CACHE=`cat $CACHE`

if [ "x${EXPECTED_CACHE}x" = "x${CURRENT_CACHE}x" ]
then
    echo "Up-to-date"
else
    echo "Need to update"
fi

実行結果

   ~ $ /media/./test.sh 5caaff923034a87e3416542c95608b17693bde0b
   Up-to-date
   ~ $ /media/./test.sh aaa
   Need to update

参考
ls -1: https://kazmax.zpp.jp/cmd/l/ls.1.html
xargs: https://www.atmarkit.co.jp/ait/articles/1801/19/news014.html
sortコマンド: https://eng-entrance.com/linux-command-sort
sedコマンド: https://hydrocul.github.io/wiki/commands/sed.html
ハッシュ値: https://eng-entrance.com/linux-command-sha1sum

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む