20190523のLinuxに関する記事は7件です。

crontab についての備忘録(linux)

crontabについての備忘録

linuxを触っている人には馴染みがあるcrontabについてメモ。

crontabとは?

contabとは、linuxに定期的な処理を行わせたいときに、実行内容とタイミングを記述しておくファイルのことです。
各linux内のユーザ毎に定義することができます。
定期的なバッチ処理とかを走らせたい時とかにはとても便利。

crontabの内容確認方法

現時点でどのような定義がされているかを見る方法は二つあります。
linuxコマンドベースで確認する方法と、crontabが記述されているファイルを直接参照する方法です。

コマンドで確認する場合

以下のコマンドを実行することで、現時点で設定されている内容を表示することができます。

crontab -l

ちなみに、設定されているcronの内容を編集する場合は、以下のコマンドを打てば良い。

crontab -e

編集/保存方法はviエディタと同様で、「i」ボタンで編集モード、「esc」ボタンでコマンドモードに移行。
:q!や:wqで編集を終了または保存することが可能。

コマンドを実行して、crontabの内容を参照するときに気をつけておかなければならなのは、オプションをつけずに実行してしまうこと。

もし、以下のようにオプションを何もつけずに実行してしまった場合、最悪crontab内に定義していたものが全て削除されてしまいます。

crontab

万が一、上記のようにオプションをつけずに実行してしまった場合は、焦らずに[Ctrl + C]で処理を抜けましょう。
大丈夫、落ち着いて対処すれば問題はありません。。

実態のファイルを確認する方法

linuxのコマンド操作に慣れていない人や、誤操作が怖い人は直接実態ファイルを参照する方が安全だと思います。
ただし、ルート権限になれる人に限ります。

大体は以下のフォルダ直下にcrontabの定義がされています。

/var/spool/cron/

ルートユーザになった後、上記ディレクトリに移動してみてください。
lsコマンド等でディレクトリ内を参照してみると、それぞれのユーザ毎のファイルが生成されていることが確認できると思います。
viやcatで中をのぞいてみてください。
それがcrontabの実態ファイルです。

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

個人メモ Linux

ディレクトリ構造

FHSという仕様がある。

bin

一般ユーザ、管理者が利用する基本的なコマンドが格納されている。

dev

Linuxは機器の利用をファイルを媒介にして使うそうな。そしてここのファイルを使う。

etc

設定ファイルが格納されている。

home

各ユーザのディレクトリが格納されている。

sbin

管理者用のコマンド

temp

色々なアプリケが一時的にデータを保存するために使われて、ディストリビューションによっては定期的に消されてしまう。

usr

アプリを格納する。

var

variableの意味で変化するデータを格納する。ログなどが入っている。

ワイルドカード

* 任意の文字列
? 任意の一文字

ls

オプション
-F
ファイルやディレクトリ、シンボリックリンクかわかる。
-a
隠れているのも含めて全て表示される。
-l
権限、種類、作成日時などの詳細がわかる。

ln -s

シンボリックリンクを作成する。
今自分が知っている使い方は、いくつかのバージョンがあるもののうち最新のものにlatestとリンクを作る。とかだけ。

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

dstatで出力と同時にログ保存するエイリアス集

トラブル対応時に便利なdstat。オプションが多くて忘れるので、いざというときにすぐ使えなくて困る。

以下のようなエイリアスを普段から作っておくと便利。

出力と同時にログファイルに保存したい

alias dstat-full='sudo dstat -Ttcglypmdrn --output /var/log/`date +dstat_%Y%m%d-%H%M%S.csv`'

/var/log/dstat_開始時刻.csv にログを自動保存してくれる。

CPUコア単位での出力を保存したい

コア単位のCPU使用率も見たいときはこれ。CPUコア数は nproc コマンドで自動取得するので、CPUコアがいくつあっても大丈夫。(コア数が多いと表示が切れてリアルタイム監視には向かないけど)

alias dstat-full-cpu="sudo dstat -Ttcglypmdrn -Ctotal,$(seq 0  $(( `nproc` - 1 )) | xargs | tr ' ' ,) --output /var/log/\`date +dstat_%Y%m%d-%H%M%S.csv\`"

dstat でコア毎のCPU使用率を出力したいときは、-Ctotal,0,1,2,.. のようにオプション指定しなくてはならず、面倒。

なので、以下のようなワンライナーを組み込んでCPUコアの分だけ 0,1,2,... という文字列を生成するようにした。

$(seq 0  $(( `nproc` - 1 )) | xargs | tr ' ' ,)

色つきで保存したい

dstatの色つき出力をそのまま保存したいときはこちら。

alias dstat-full-color='sudo unbuffer dstat -Ttcglypmdrn | sudo tee /var/log/`date +dstat_%Y%m%d-%H%M%S.log`'

dstatの出力をそのままパイプで tee に渡してしまうと、エスケープシーケンスが除去されてしまうので、unbuffer コマンドをつかう。

unbufferexpect パッケージに入っているので、yum でインストールしておく。

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

Disk Utility Command

Disk Utility Command

ブータブルUSBとかSDを作ります

  • Create Bootable Disk
  • 毎回ググるので書いておきます
  • bs=バッファサイズを小さくしたら時間がかかります

macOS

diskutil list
sudo umount /dev/disk2
sudo dd if=ubuntu-18.04.2-server-amd64.iso of=/dev/disk2 bs=16M

Linux

sudo fdisk -l
sudo umount /dev/sdb
sudo dd if=ubuntu-18.04.2-server-amd64.iso  of=/dev/sdb bs=16m

macOS, Linux 共用のパーティション

ジャーナル(大文字小文字区別)

mount -v
diskutil disableJournal /dev/disk3s1

よく使うコマンド

lsblk
sudo blkid
sudo fdisk /dev/sdb
sudo mkfs.ext4 /dev/sdb
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

linuxコマンド便利帳① 〜超基本編・テキスト作成と表示〜

1.はじめに

MacやLinuxのターミナルで使うコマンド。使いこなせたらなんかカッコイイあれを簡単にご紹介。
(備忘録もかねて。。。)

2.基本のきほん

[ディレクトリ移動]・・・cd
[作業ディレクトリ確認]・・・pwd
[ディレクトリ・ファイル情報チェック]・・・ls
[ファイルコピー]・・・cp (file)
 →[ディレクトリごと]・・・cp -r (ディレクトリ)
[ファイル移動]・・・mv (file) (移動先)
 →[ディレクトリごと]・・・mv -r (ディレクトリ) (移動先)
[ディレクトリ作成]・・・mkdir (ディレクトリ)
[ファイル削除]・・・rm (file)
 →[ディレクトリごと]・・・rm -r (ディレクトリ)
[ファイル作成]・・・touch (file) ※中は空っぽ
[文字や変数などを表示]・・・echo (文字や変数)

※詳細を知りたい人はググってみましょう!!

3.覚えておくと便利コマンド

3-1. nano

テキストエディタです。
touchコマンドなどで作成した既存ファイルの内容を編集したり、一から新規ファイルも作成できます。

ex.nano
#一から新規ファイルを作成してみよう
$ nano test.txt

下記の画面に写ります。
スクリーンショット 2019-05-21 14.27.23.png

適当に入力をし、「control」+「X」で終了。

ex.nano
#中はこんな感じ。
Sapporo
Sendai
Tokyo
Yokohama

Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ?と出てきますが、
・問題なければ「Y」→「Enter」※編集の場合は上書きされるの要注意
 →File Name to Write: test.txtと表示され、ファイル名変更なければ「Enter」で終了。
・ちょっと待った見直す「C」→「Enter」
・やっぱやめた「N」→「Enter」※入力・編集内容が破棄されて元の画面に戻ります

3-2. cat

テキストの中身を表示できます。
コンソール上に一気に表示されるので、情報量の少ないテキストを表示させるのに最適!

ex.cat
#作成したtest.txtを表示
$ cat test.txt 
Sapporo
Sendai
Tokyo
Yokohama

$ cat test2.txt 
Nagano
Nagoya
Kyoto
Osaka
Hirosima

ファイルの結合も得意です。

ex.cat
#2つ以上のファイルを繋げて表示できます
$ cat test.txt test2.txt test3.txt
Sapporo
Sendai
Tokyo
Yokohama
Nagano
Nagoya
Kyoto
Osaka
Hirosima
Matsuyama
Fukuoka
Kagoshima
Okinawa

ちょっと応用編!
コマンド結果を抽出しテキストに保存!

ex.cat
#リダイレクト > を使って出力させます。
$ cat test.txt test2.txt test3.txt > test_cat.txt

$ ls
test.txt   test2.txt   test3.txt   test_cat.txt

$ cat test_cat.txt
Sapporo
Sendai
Tokyo
Yokohama
Nagano
Nagoya
Kyoto
Osaka
Hirosima
Matsuyama
Fukuoka
Kagoshima
Okinawa

3−3. less

こちらもテキストの中身を表示できます。
コンソール上ではなく、画面が切り替わって表示されます。情報量の多いテキストを表示させるのに最適!

ex.less
$ less hg38.gtf #ヒトのGene annotation というファイルです。

こんな感じに表示される。
マウスのスクロール or 矢印キー「↓・↑」 などで表示画面もスクロールされます。
スクリーンショット 2019-05-21 16.30.14.png

行が折り返して見にくい・・・?

ex.less
#行を折り返したくないときには、オプション -S
$ less -S hg38.gtf

表示画面を抜けたい!→「q」

3-4. head

先頭○行を表示させる。
デフォルトは10行です。

ex.head
$ head test5.txt 
Sapporo
Sendai
Tokyo
Yokohama
Nagano
Nagoya
Kyoto
Osaka
Hirosima
Matsuyama

先頭○行・○文字を表示したい。

ex.head
#3行を表示しよう! オプション -n$ head -n 3 test5.txt 
Sapporo
Sendai
Tokyo
#25文字を表示しよう! オプション -c○
$ head -c 25 test5.txt 
Sapporo
Sendai
Tokyo
Yoko

3−5. tail

headの逆バージョン。
最終行○行を表示させる。
デフォルトは10行です。

ex.tail
$ tail test5.txt 
Yokohama
Nagano
Nagoya
Kyoto
Osaka
Hirosima
Matsuyama
Fukuoka
Kagoshima
Okinawa

最終行○行・○文字を表示したい。

ex.tail
#最後から3行を表示しよう! オプション -n$ tail -n 3 test5.txt 
Fukuoka
Kagoshima
Okinawa
#最後から25文字を表示しよう! オプション -c ○
$ tail -c 25 test5.txt 
ukuoka
Kagoshima
Okinawa

ちょっと応用編!
ヘッダー以外を表示したい時に!

ex.tail
$ cat test6.txt 
ID  data1   data2 ← ヘッダー は これ
A   10  10
B   20  20
C   30  30
#2行目以降を表示させtたらok。 オプション -n +○ (数字の前に”+”を付けたら○行目以降が表示される)
$ tail -n +2 test6.txt 
A   10  10
B   20  20
C   30  30

4.コマンドの合わせ技

パイプ | を使うとコマンドを組み合わせて操作できます。

パイプ | を使わないパターン

ex.command
#① 中身を表示
$ cat test5.txt 
Sapporo
Sendai
Tokyo
Yokohama
Nagano
Nagoya
Kyoto
Osaka
Hirosima
Matsuyama
Fukuoka
Kagoshima
Okinawa

#② 先頭5行目を表示(抽出)しテキスト出力
$ head -n 5 test5.txt > test5_head.txt

#③ ②の最終2行を表示(抽出)しテキストに出力
$ tail -n 2 test5_head.txt > test5_tail.txt

#④ 結果
$ cat test5_tail.txt
Yokohama
Nagano

パイプ | を使うことでいっぺんにできます。

ex.command
$ cat test5.txt | head -n 5 | tail -n 2 > test5_pipe.txt
$ cat test5_pipe.txt 
Yokohama
Nagano

5.一口メモ :slight_smile:

◎入力補完機能を使って、コマンド・ディレクトリ・ファイルを入力してみる。
候補が1つしかない場合・・・tabキーを1回クリック

ex.
#コマンドの場合
$ tou #ここでtabを1回クリック
$ touch
#今いるディレクトリにファイルが1つの場合
$ cat #ここでtabを1回クリック
$ cat test.txt

候補が2つ以上の場合・・・tabキーを2回クリック

ex.
#コマンドの場合
$ to #ここでtabを2回クリック
toe   top   tops   topsyscall   topsysproc   touch #候補が出てきた
#今いるディレクトリにファイルが2つ以上の場合
$ cat #ここでtabを2回クリック
$ cat 
test.txt test2.txt test.csv test.py test3.sh #候補が出てきた
#ディレクトリの場合はこんな感じ
$ cd #ここでtabを2回クリック
dir/ dir2/ test_dir/ test_dir2/ test.txt test2.txt test.csv test.py test3.sh # 最後スラッシュ”/”付が
ディレクトリ 

◎直近の履歴を辿る
矢印キー「↑」クリックすると、直近の履歴を表示できます。
がっつり調べたい人にはhistoryコマンド。

ex.hisotry
$ history 
・・・・(略)
  501  cd ../ 
  502  ls
  503  cd
  504  nano test.txt
  505  nano test2.txt
  506  rm test.txt 
  507  nano test3.txt
  508  nano test4.txt
  509  less genome/hg19.fa 

5. おわり

次回予告

wc
awk
grep
sed
sort
uniq
cut
tr
あたりのコマンドをまとめたいと思っています。

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

Linuxコマンド便利帳① 〜超基本編・テキスト作成と表示〜

1.はじめに

MacやLinuxのターミナルで使うコマンド。使いこなせたらなんかカッコイイあれを簡単にご紹介。
(備忘録もかねて。。。)

2.基本のきほん

[ディレクトリ移動]・・・cd
[作業ディレクトリ確認]・・・pwd
[ディレクトリ・ファイル情報チェック]・・・ls
[ファイルコピー]・・・cp (file)
 →[ディレクトリごと]・・・cp -r (ディレクトリ)
[ファイル移動]・・・mv (file) (移動先)
 →[ディレクトリごと]・・・mv -r (ディレクトリ) (移動先)
[ディレクトリ作成]・・・mkdir (ディレクトリ)
[ファイル削除]・・・rm (file)
 →[ディレクトリごと]・・・rm -r (ディレクトリ)
[ファイル作成]・・・touch (file) ※中は空っぽ
[文字や変数などを表示]・・・echo (文字や変数)

※詳細を知りたい人はググってみましょう!!

3.覚えておくと便利コマンド

3-1. nano

テキストエディタです。
touchコマンドなどで作成した既存ファイルの内容を編集したり、一から新規ファイルも作成できます。

ex.nano
#一から新規ファイルを作成してみよう
$ nano test.txt

下記の画面に写ります。
スクリーンショット 2019-05-21 14.27.23.png

適当に入力をし、「control」+「X」で終了。

ex.nano
#中はこんな感じ。
Sapporo
Sendai
Tokyo
Yokohama

Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ?と出てきますが、
・問題なければ「Y」→「Enter」※編集の場合は上書きされるの要注意
 →File Name to Write: test.txtと表示され、ファイル名変更なければ「Enter」で終了。
・ちょっと待った見直す「C」→「Enter」
・やっぱやめた「N」→「Enter」※入力・編集内容が破棄されて元の画面に戻ります

3-2. cat

テキストの中身を表示できます。
コンソール上に一気に表示されるので、情報量の少ないテキストを表示させるのに最適!

ex.cat
#作成したtest.txtを表示
$ cat test.txt 
Sapporo
Sendai
Tokyo
Yokohama

$ cat test2.txt 
Nagano
Nagoya
Kyoto
Osaka
Hirosima

ファイルの結合も得意です。

ex.cat
#2つ以上のファイルを繋げて表示できます
$ cat test.txt test2.txt test3.txt
Sapporo
Sendai
Tokyo
Yokohama
Nagano
Nagoya
Kyoto
Osaka
Hirosima
Matsuyama
Fukuoka
Kagoshima
Okinawa

ちょっと応用編!
コマンド結果を抽出しテキストに保存!

ex.cat
#リダイレクト > を使って出力させます。
$ cat test.txt test2.txt test3.txt > test_cat.txt

$ ls
test.txt   test2.txt   test3.txt   test_cat.txt

$ cat test_cat.txt
Sapporo
Sendai
Tokyo
Yokohama
Nagano
Nagoya
Kyoto
Osaka
Hirosima
Matsuyama
Fukuoka
Kagoshima
Okinawa

3−3. less

こちらもテキストの中身を表示できます。
コンソール上ではなく、画面が切り替わって表示されます。情報量の多いテキストを表示させるのに最適!

ex.less
$ less hg38.gtf #ヒトのGene annotation というファイルです。

こんな感じに表示される。
マウスのスクロール or 矢印キー「↓・↑」 などで表示画面もスクロールされます。
スクリーンショット 2019-05-21 16.30.14.png

行が折り返して見にくい・・・?

ex.less
#行を折り返したくないときには、オプション -S
$ less -S hg38.gtf

表示画面を抜けたい!→「q」

3-4. head

先頭○行を表示させる。
デフォルトは10行です。

ex.head
$ head test5.txt 
Sapporo
Sendai
Tokyo
Yokohama
Nagano
Nagoya
Kyoto
Osaka
Hirosima
Matsuyama

先頭○行・○文字を表示したい。

ex.head
#3行を表示しよう! オプション -n$ head -n 3 test5.txt 
Sapporo
Sendai
Tokyo
#25文字を表示しよう! オプション -c○
$ head -c 25 test5.txt 
Sapporo
Sendai
Tokyo
Yoko

3−5. tail

headの逆バージョン。
最終行○行を表示させる。
デフォルトは10行です。

ex.tail
$ tail test5.txt 
Yokohama
Nagano
Nagoya
Kyoto
Osaka
Hirosima
Matsuyama
Fukuoka
Kagoshima
Okinawa

最終行○行・○文字を表示したい。

ex.tail
#最後から3行を表示しよう! オプション -n$ tail -n 3 test5.txt 
Fukuoka
Kagoshima
Okinawa
#最後から25文字を表示しよう! オプション -c ○
$ tail -c 25 test5.txt 
ukuoka
Kagoshima
Okinawa

ちょっと応用編!
ヘッダー以外を表示したい時に!

ex.tail
$ cat test6.txt 
ID  data1   data2 ← ヘッダー は これ
A   10  10
B   20  20
C   30  30
#2行目以降を表示させtたらok。 オプション -n +○ (数字の前に”+”を付けたら○行目以降が表示される)
$ tail -n +2 test6.txt 
A   10  10
B   20  20
C   30  30

4.コマンドの合わせ技

パイプ | を使うとコマンドを組み合わせて操作できます。

パイプ | を使わないパターン

ex.command
#① 中身を表示
$ cat test5.txt 
Sapporo
Sendai
Tokyo
Yokohama
Nagano
Nagoya
Kyoto
Osaka
Hirosima
Matsuyama
Fukuoka
Kagoshima
Okinawa

#② 先頭5行目を表示(抽出)しテキスト出力
$ head -n 5 test5.txt > test5_head.txt

#③ ②の最終2行を表示(抽出)しテキストに出力
$ tail -n 2 test5_head.txt > test5_tail.txt

#④ 結果
$ cat test5_tail.txt
Yokohama
Nagano

パイプ | を使うことでいっぺんにできます。

ex.command
$ cat test5.txt | head -n 5 | tail -n 2 > test5_pipe.txt
$ cat test5_pipe.txt 
Yokohama
Nagano

5.一口メモ :slight_smile:

◎入力補完機能を使って、コマンド・ディレクトリ・ファイルを入力してみる。
候補が1つしかない場合・・・tabキーを1回クリック

ex.
#コマンドの場合
$ tou #ここでtabを1回クリック
$ touch
#今いるディレクトリにファイルが1つの場合
$ cat #ここでtabを1回クリック
$ cat test.txt

候補が2つ以上の場合・・・tabキーを2回クリック

ex.
#コマンドの場合
$ to #ここでtabを2回クリック
toe   top   tops   topsyscall   topsysproc   touch #候補が出てきた
#今いるディレクトリにファイルが2つ以上の場合
$ cat #ここでtabを2回クリック
$ cat 
test.txt test2.txt test.csv test.py test3.sh #候補が出てきた
#ディレクトリの場合はこんな感じ
$ cd #ここでtabを2回クリック
dir/ dir2/ test_dir/ test_dir2/ test.txt test2.txt test.csv test.py test3.sh # 最後スラッシュ”/”付が
ディレクトリ 

◎直近の履歴を辿る
矢印キー「↑」クリックすると、直近の履歴を表示できます。
がっつり調べたい人にはhistoryコマンド。

ex.hisotry
$ history 
・・・・(略)
  501  cd ../ 
  502  ls
  503  cd
  504  nano test.txt
  505  nano test2.txt
  506  rm test.txt 
  507  nano test3.txt
  508  nano test4.txt
  509  less genome/hg19.fa 

5. おわり

次回予告

wc
awk
grep
sed
sort
uniq
cut
tr
あたりのコマンドをまとめたいと思っています。

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

VagrantによるMultiNodeの一発構築(CentOS7編)

はじめに

意外とこういうのってなかったな、と思って作ってみました。
例えば以下のような準備を一発で行うという話です。
CentOS7用しか作ってないので今度Ubuntu版も作ってみようと思います。

・VMを複数ノードたち上げる
・各VMを同じネットワークに所属させる
・各VMをインターネットに抜けれるようにする
・1号機VMから公開鍵認証により、ノーパスで全VMにsshできるようにする
・1号機VMに全ノードknown_hostsを登録する

もともとAnsible等のインフラ学習のために、環境準備に時間がかかり面倒なため、作成しました。
下記のような構成が欲しいときにローカル上で一瞬に準備します。

         SSH⇒
デプロイVM ---- 設定対象VM

手順

Vagrant ファイルを準備してださい。

Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"

  ###############↓設定対象VMを増やす際にはここを追加↓################
  config.vm.define :node2 do |node2|
    node2.vm.hostname = "node2"
    node2.hostmanager.enabled = true
    node2.vm.provider "virtualbox" do |vb|
      vb.customize ["modifyvm", :id, "--nic2", "natnetwork", "--nat-network2", "net001"]
      vb.customize ["modifyvm", :id, "--memory", "1024", "--cpus", "1"]
    end
    node2.vm.provision "shell", inline: <<-SHELL
      yum install git curl wget epel-release sshpass -y
      sudo mkdir -m 600 /root/.ssh
      echo "password" | passwd --stdin root
      sudo sed -i -e 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
      systemctl restart sshd
      sudo sed -i -e 's/DEFROUTE=yes/DEFROUTE=no/g' /etc/sysconfig/network-scripts/ifcfg-eth0
      sudo cat <<'EOF' > /etc/hosts
192.168.10.8 node1
192.168.10.9 node2
EOF

      sudo cat <<'EOF' > /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
BOOTPROTO="none"
ONBOOT="yes"
TYPE="Ethernet"
PERSISTENT_DHCLIENT="no"
IPADDR="192.168.10.9"
GATEWAY="192.168.10.1"
dns1="8.8.8.8"
DEFROUTE="yes"
EOF
      sudo sed -i -e '$a nameserver=8.8.8.8' /etc/resolv.conf
      sudo systemctl restart network
      sleep 10
    SHELL
  end
  ###############↑設定対象VMを増やす際にはここを追加↑################

  config.vm.define :node1 do |node1|
    node1.vm.hostname = "node1"
    node1.hostmanager.enabled = true
    node1.vm.provider "virtualbox" do |vb|
      vb.customize ["modifyvm", :id, "--nic2", "natnetwork", "--nat-network2", "net001"]
      vb.customize ["modifyvm", :id, "--memory", "1024", "--cpus", "1"]
    end
    node1.vm.provision "shell", inline: <<-SHELL
      yum install git curl wget epel-release sshpass -y
      sudo mkdir -m 600 /root/.ssh
      echo "password" | passwd --stdin root
      sudo sed -i -e 's/DEFROUTE=yes/DEFROUTE=no/g' /etc/sysconfig/network-scripts/ifcfg-eth0
      sudo cat <<'EOF' >> /etc/hosts
192.168.10.8 node1
192.168.10.9 node2
EOF

      sudo cat <<'EOF' > /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
BOOTPROTO="none"
ONBOOT="yes"
TYPE="Ethernet"
PERSISTENT_DHCLIENT="no"
IPADDR="192.168.10.8"
GATEWAY="192.168.10.1"
dns1="8.8.8.8"
DEFROUTE="yes"
EOF
      sudo sed -i -e '$a nameserver=8.8.8.8' /etc/resolv.conf
      sudo systemctl restart network
      sleep 10
      sudo ssh-keyscan -H 192.168.10.8 >> sudo /root/.ssh/known_hosts
      sudo ssh-keyscan -H 192.168.10.9 >> sudo /root/.ssh/known_hosts  # 設定対象VMを増やす際はssh-keyscan先を追加してください
      sudo sed -i -e 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
      systemctl restart sshd
      ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa
      sshpass -p password ssh-copy-id -i ~/.ssh/id_rsa.pub -o "StrictHostKeyChecking no" 192.168.10.8
      sshpass -p password ssh-copy-id -i ~/.ssh/id_rsa.pub -o "StrictHostKeyChecking no" 192.168.10.9  # 設定対象VMを増やす際はssh-copy-id先を追加して下さい
    SHELL
  end
end

いつもの通り以下でデプロイです。

Vagrant up

以下で構築対象に入れます。

$ vagrant status
Current machine states:

node2                     running (virtualbox)
node1                     running (virtualbox)

This environment represents multiple VMs. The VMs are all listed
above with their current state. For more information about a specific
VM, run `vagrant status NAME`.
$

確認

以下の通りnode1 からnode2にホスト名で、鍵認証のsshができます。

$ vagrant ssh node1
[vagrant@node1 ~]$ sudo su -
[root@node1 ~]# ssh node2
The authenticity of host 'node2 (192.168.10.9)' can't be established.
ECDSA key fingerprint is SHA256:QhUYshVh8feVy4pYNNUHXK2nFMQOKNull8+4Rtqh360.
ECDSA key fingerprint is MD5:2a:97:92:f2:b5:03:89:53:ea:a9:c4:51:08:ef:7c:d8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'node2' (ECDSA) to the list of known hosts.
[root@node2 ~]#

今回の Vagarantfile をテンプレにして利用する場合は以下の値を置換してください。

node1  #デプロイVM
node2  #設定対象VM
192.168.10.8  #デプロイVm
192.168.10.9  #設定対象VM

#IPに192.168.10.0/24以外を使用される場合は192.168.10.1も置換が必要

設定対象VMを増やす際にはnode2分をコピーして上記置換部分と、 ssh-keyscanssh-copy-id を編集・追記してください。
※node1の下には記載しないでください(ssh-copy-id等が通らなくなります)

~以上~

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