manatee-itの備忘ログ

プログラム初心者のブログ。ruby on railsでWebサービスを作成中。(仕事が忙しくなかななか進まず) つまずいた所をなんでも記録。 環境:Ruby2.1 + Rails4.1.1 + Passenger + CentOS6.4(Apache + sqlite/MySQL)

aws-ec2-ssh利用メモ

■まえおき
aws-ec2-sshを利用してAWS IAMユーザとLinuxOSユーザの紐付け管理を可能とする手順のメモ。
後述のURLを参考させていただきました。

■手順

1.EC2のLinuxOS上の作業
・Git(パッケージ版)をインストール
AWS CLIをインストール
aws-ec2-sshのgitクローンを作成
aws-ec2-sshディレクトリにあるファイルの中身をいろいろ確認する

2.AWS マネコン上の作業
・IAMユーザ、IAMグループ作成
・IAMロール(iam_ssh_policy.jsonを含む)をEC2に付与
・IAMユーザ毎に公開鍵を作成し、アップロード登録

3.aws-ec2-sshのインストール
・/etc/aws-ec2-ssh.conf設定
aws-ec2-sshのインストール
・OS上にユーザが作成されていることを確認
・各IAMユーザ名でログイン
・管理者権限ユーザについてはsudoでrootにスイッチできることを確認

■仕組み
調べた範囲で記載

○「import_users.sh」の設定
CLIコマンドでIAM情報取得(aws iam xxx)とOSユーザ設定
・管理者ユーザのsudo設定
 # cat /etc/sudoers.d/(管理者ユーザ名)
 (管理者ユーザ名) ALL=(ALL) NOPASSWD:ALL

○ログイン時の認証について
 OSユーザの.ssh配下にある公開鍵の代わりに、/opt/authorized_keys_command.shに
 記載されたCLIコマンド(aws iam get-ssh-public-key)実行にて、IAMユーザ毎に
 IAMに登録した公開鍵を取得する。
 # cat /etc/ssh/sshd_config | grep AuthorizedKeysCommand
 AuthorizedKeysCommand /opt/authorized_keys_command.sh
 AuthorizedKeysCommandUser nobody

■その他

各IAMユーザが公開鍵をIAMにアップロード登録する権限として、以下のポリシーなどを適宜アタッチしておく。

・ReadOnlyAccess

・IAMUserSSHKeys (ユーザ自身のみSSHキー管理が可能となる)

■参考URL
aws-ec2-sshでEC2の踏み台サーバのユーザ管理を楽にする
https://qiita.com/bigplants/items/f2d4d15922d87c0d25e4

やってみた~aws-ec2-sshでEC2の踏み台サーバのユーザ管理を楽にする~
https://hedgehogweeklyreport.hatenablog.com/entry/2018/12/08/115746

CentOS7+Jupyter NotebookのFirewalld設定

■まえおき

CentOS 7にJupyter Notebookを導入した際にFirewalldでつまずいたのでメモ。
とりあえず問題を解消したが、Firewalldの使い方?については要調査。

■環境

anyenv+pyenv+Pipenv
+Jupyter Notebookパッケージをインストール

■問題

Jupyter Notebook用に使用した8888番ポートへの通信を以下で許可したが、 ブラウザで表示されない。
tcpdumpで確認したところ、戻り通信が行われていない。

# firewall-cmd --add-port=8888/tcp --zone=public --permanent

とりあえず、drop.xmlファイルに以下の設定を追加したところ、戻り通信が行われ、表示されるようになった。
戻り通信を考慮する場合、--add-portではなく、xmlファイルを記載してserviceとして追加すればいいのだろうか。

# cat  /etc/firewalld/zones/drop.xml
<?xml version="1.0" encoding="utf-8"?>
<zone target="DROP">
  <short>Drop</short>
  <description>Unsolicited incoming network packets are dropped. Incoming packets that are related to outgoing network connections are accepted. Outgoing network connections are allowed.</description>
  <service name="ssh"/>
   :
   :
  <port protocol="tcp" port="8888"/>  #この行を追加
</zone>

■参考にしたURL

Jupyter Notebookの導入で以下URLを参考にさせていただきました。
CentOS7にJupyter Notebookを導入 - Qiita

systemdメモ

■まえおき

自分が使うものだけメモ

■設定コマンド

/bin/systemctl

■設定ファイル

(1)パッケージに含まれる設定ファイル

/usr/lib/systemd/system/(サービス名).service

(2)修正を加える場合に先となるファイル

/etc/systemd/system/(サービス名).service
※(1)をコピーして編集、こちらが優先される

自動起動有効化した場合のシンボリックリンク作成先

/etc/systemd/system/multi-user.target.wants/httpd.service

自動起動設定 (httpdの場合)

自動起動有効化

# systemctl enable httpd.service

実行すると以下のメッセージの通り、シンボリックリンクが作成される
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

自動起動有効化解除

# systemctl disable httpd.service

自動起動設定一覧

# systemctl list-unit-files -t service

自動起動設定一覧(特定サービス)

# systemctl is-enabled httpd.service

■サービス起動停止 (httpdの場合)

起動

# systemctl start httpd.service

終了

# systemctl stop httpd.service

再起動

# systemctl restart httpd.service

確認

# systemctl status httpd.service

Apache + Tomcatの連携手順のメモ

■まえおき

Apache + Tomcatの連携手順のメモ
記載時点のTomcat最新のバージョン(9.0.34)では2点ほど問題が発生したため、解消方法を記載した。
動作させるための最低限の設定のみであり、セキュリティの設定は記載していない。
Apache TomcatGUI Webアプリケーションマネージャは利用しない。

■環境

CentOS 7.2
httpd-2.4.6-93.el7.centos.x86_64
java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64
apache-tomcat-9.0.34.tar.gz
※インストールパス
/opt/tomcat9

■Firewalld設定

予めhttpが許可されていることを確認

# firewall-cmd --list-ports
# firewall-cmd --permanent --add-service=http
# firewall-cmd --list-services --zone=public --permanent
# firewall-cmd --list-services --permanent

Tomcatの8080を公開したい場合は以下を設定

# cat /etc/firewalld/services/tomcat.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Tomcat (HTTP)</short>
  <description>Tomcat HTTP Server.</description>
  <port protocol="tcp" port="8080"/>
</service>
# firewall-cmd --permanent --add-service=tomcat
# systemctl restart firewalld.service
# firewall-cmd --list-all

Apache 2.4インストール

# yum -y install httpd httpd-devel
自動起動有効化とサービス起動
# systemctl enable httpd.service
# systemctl start httpd.service
確認
# systemctl is-enabled httpd.service
# systemctl status httpd.service
トップページ確認(ブラウザ)

http://(IPアドレス)/

ログ出力確認

/var/log/httpd/access_log
/var/log/httpd/error_log

JDKインストール

・OpenJDKを使用する場合(今回はこちら)
# yum -y install java-1.8.0-openjdk-devel
・OracleJDKを使用する場合

以下を参照
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

切り替え確認
# alternatives --config java
# alternatives --config javac
バージョン確認
# java -version
# javac -version

Apache Tomcat 9 インストール

インストールパス

/opt/tomcat9/

ダウンロードと展開

※2020/05/03現在の最新(apache-tomcat-9.0.34)

以下のURLで最新版を確認
Tomcat 9 Software Downloads
http://tomcat.apache.org/download-90.cgi

# cd /usr/local/src
# wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.34/bin/apache-tomcat-9.0.34.tar.gz
# tar zxf apache-tomcat-9.0.34.tar.gz
# mv apache-tomcat-9.0.34 /opt/tomcat9
# ls -l /opt/tomcat9
基本設定
# cat /etc/profile.d/tomcat.sh
export CATALINA_HOME=/opt/tomcat9
export CATALINA_BASE=/opt/tomcat9
# source /etc/profile.d/tomcat.sh  
tomcatユーザ作成
# useradd -M -d /opt/tomcat9 -s /sbin/nologin tomcat
# chown -R tomcat:tomcat /opt/tomcat9
# id tomcat
自動起動設定

以下を記載

# cat /usr/lib/systemd/system/tomcat9.service
[Unit]
Description=Apache Tomcat Servlet Container
After=syslog.target network.target

[Service]
Type=forking
User=tomcat
Group=tomcat
Environment=CATALINA_BASE=/opt/tomcat9
Environment=CATALINA_HOME=/opt/tomcat9
ExecStart=$CATALINA_HOME/bin/startup.sh
ExecStop=$CATALINA_HOME/bin/shutdown.sh
ExecReStart=$CATALINA_HOME/bin/shutdown.sh;$CATALINA_HOME/bin/startup.sh
KillMode=none

[Install]
WantedBy=multi-user.target
自動起動有効化とサービス起動
# systemctl enable tomcat9.service
# systemctl start tomcat9.service
確認
# systemctl is-enabled tomcat9.service
# systemctl status tomcat9.service
トップページ確認(ブラウザ)

http://(IPアドレス):8080/

FWを許可していない場合

# curl http://localhost:8080
ログ出力確認

catalina.YYYY-MM-DD.log
catalina.out
localhost.YYYY-MM-DD.log
localhost_access_log.YYYY-MM-DD.txt

Apache httpdTomcatの連携

httpdのモジュールの確認

以下の設定を確認

# cat /etc/httpd/conf.modules.d/00-proxy.conf | grep -e mod_proxy.so -e mod_proxy_ajp.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

ロードされていることを確認

# cat apachectl -M | grep -e proxy_module -e proxy_ajp_module
proxy_module (shared)
proxy_ajp_module (shared)
httpdのプロキシ設定

以下を設定

# cat /etc/httpd/conf.d/proxy.conf
ProxyPass / ajp://localhost:8009/
Tomcat設定

以下の設定を実施
/opt/tomcat9/conf/server.xml
修正前

    <!--
    <Connector protocol="AJP/1.3"
               address="::1"
               port="8009"
               redirectPort="8443" />
    ->

修正後

    <Connector protocol="AJP/1.3"
               apddress="localhost"  #IPv4環境向けに修正
               port="8009"
               redirectPort="8443"
               secretRequired="false" /> #明示的に"false"を記載する
【発生エラーその1】

コメント記載の設定ではIPv6環境用のアドレスとなっていたため、IPv4のみの環境ではポートがListenとならないので、削除もしくは以下に修正する。
address="::1"

apddress="localhost"

【発生エラーその2】

「secretRequired="false"」を記載しないと、以下のメッセージが発生し、Apache httpdTomcatの連携に失敗する。

tail -f /opt/tomcat9/logs/catalina.out
  :
(メッセージ日時) SEVERE [main] org.apache.catalina.util.LifecycleBase.handleSubClassException Failed to start component [Connector[AJP/1.3-8009]]
        org.apache.catalina.LifecycleException: Protocol handler start failed
                at org.apache.catalina.connector.Connector.startInternal(Connector.java:1066)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                at org.apache.catalina.core.StandardService.startInternal(StandardService.java:438)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                at org.apache.catalina.startup.Catalina.start(Catalina.java:633)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:498)
                at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:343)
                at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:474)
        Caused by: java.lang.IllegalArgumentException: The AJP Connector is configured with secretRequired="true" but the secret attribute is either null or "". This combination is not valid.
                at org.apache.coyote.ajp.AbstractAjpProtocol.start(AbstractAjpProtocol.java:264)
                at org.apache.catalina.connector.Connector.startInternal(Connector.java:1063)
不要Tomcatポートの無効化

Tomcatのページ用の8080ポートの設定は無効化する。

<!-- 
<Connector port="8080" protocol="HTTP/1.1"
  connectionTimeout="20000"
  redirectPort="8443" />
-->
トップページ確認(ブラウザ)

http://(IPアドレス)/

■参考にしたURL

Apache httpd と Tomcat を連携させる方法 | WEB ARCH LABO
Apache Tomcat 9 を CentOS 7 にインストールする手順 | WEB ARCH LABO
Cent OS 7上でApache/Tomcat開発環境を構築する - Qiita
ApacheとTomcatを連携させてみた - Qiita
https://disconnect.no-ip.org/wordpress/2020/02/14/apache-tomcat-9-0-31%E3%81%AB%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%81%97%E3%81%9F%E3%82%89%E3%82%A8%E3%83%A9%E3%83%BC%E7%99%BA%E7%94%9F/

Splatoon2のステージ情報を調べるAlexaのカスタムスキルを作った

■まえおき

Amazon Echoを購入、カスタムスキルでSplatoon2のステージ情報を調べてもらえたら便利かも、と思い作ってみました。

今回も備忘録のため、詳細は省いています。

Splatoon2のステージ情報はTwitterBotなどで確認していたが、Alexaから教えてもらえたら面白いのでは。

・LambdaとNode.jsを使ったのですが、この時点で全くの素人、ちょっと勉強してみたい。

・いずれ誰かが同じスキルをよりスマートに作成すると思われるので、とにかく動くものを作れればよい。

・できれば公開したい(まだ申請していない)

調べてみると、Splatoon2のステージ情報を調べるスキルは、すでに以下などが存在していました。 ただし、英語のみで日本語に対応したものはまだ存在してない様子。

www.amazon.com

www.amazon.com

ステージ情報はNintendo Switch Onlineにあるイカリング2にて公開されていますが、こちらから直接取得するのは大変と思われるので、公開されているAPIを利用させていただきました。

Spla2 API - スプラトゥーン2のステージ情報API

github

コードはこちら。

https://github.com/manatee2005/Splatoon2

■カスタムスキル作成について

カスタムスキル作成は、まったくの初めてなので、最初はギアパワーの説明など、埋め込んだ情報を読んでもらう簡単な機能のみとし、まずは慣れることにしました。

以下のようなものです。

ユーザ:「アレクサ、スプラトゥーンを開いて」
  ↓
Alexa:「調べたいバトルルール、またはギアパワーを言ってください。」
  ↓
ユーザ:「メインインク効率アップ」
  ↓
Alexa:「メインインク効率アップが付きやすいブランドはジモン、付きにくいブランドはバトロイカです。メインウェポンの消費インク量が少なくなります。」

その後、ステージ情報については、sync-requestモジュールのhttpGetを使い、前述のAPIから取得する機能を追加しました。

ユーザ:「ナワバリ」
  ↓
Alexa:「現在のナワバリのステージはバッテラストリートとタチウオパーキングです。次のナワバリのステージは、、」

もしくは、
ユーザ:「サーモンラン」
  ↓
Alexa:「直近のサーモンランはトキシラズいぶし工房です。ブキは○○、、」

■開発用URL

AWSコンソール(Lambda)

https://ap-northeast-1.console.aws.amazon.com

・アレクサ開発コンソール

Amazon開発者ポータル

・アレクサログイン(アプリ)

Amazonログイン

■カスタムスキル作成の基本的な操作・コード作成

基本的な内容は以下のサイトを参考にさせていただきました。 (その他いろいろ)

https://developer.amazon.com/ja/alexa-skills-kit/training/building-a-skill

[日本語Alexa] Alexa Skills Kit for Node.js はじめの一歩 | Developers.IO

とりあえずこれだけで対話を動かせる!Amazon Echo ALEXA(Alexa Skill Set)カスタムスキル開発入門 - Qiita

Alexaのカスタムスキルを作る(その2) - Qiita

https://developer.amazon.com/ja/blogs/alexa/post/07377568-2815-4028-8c21-409dd8e84fa2/alexa-training-jp-2nd

■躓いたところ

いろいろと躓いたところは、以下のサイトが参考になりました。

・スロット値の取り出し方がわからない。

→「Synonyms(同義語)で設定した id をチェック、、」を参照しました。配列の取り出し方。

電車の運行情報を教えてくれるAlexa Skillを作ってみた - Qiita

・Lambda側の設定は完了、コンソール側のスキルを削除して作り直し、エンドポイントの設定でARNの指定を行い保存したところ、以下のエラーが発生。

「"The trigger setting for the Lambda is invalid. Error code: SkillManifestError - (日時)" 」

→Lambda側の設定を削除して作り直したところエラーは解消

・非同期処理が理由でHTMLのボディがrequest関数の外部へ取り出せない。

→requestモジュールではなく、sync-requestモジュールを用いる。

同期処理でrequestモジュールの戻り値を返す(Node.js)(非コールバック) - designetwork

・ZIPファイルにてsync-requestモジュールの追加の際に、「Lambda 関数 「GearpowerSkill」のデプロイパッケージが大きすぎて、インラインコード編集を有効にできません。ただし、関数を今すぐ呼び出すことはできます。」が発生。

→AWS SDKを削除する。

Alexa Skillで利用するLambda関数(Node.js)を、ハマらずに「一から作成」する方法 - Qiita

■その他の参考となったサイト

AWSのLambdaのタイムゾーンをUTCからJST(東京)に変更 - Qiita

【JavaScript】日付/時刻データを操作する(Dateオブジェクト) - みこむらめもむらむらむら

sandbox/日英対応表 - Splatoon2 - スプラトゥーン2 攻略&検証 Wiki*

Partedによるパーティション作成+LVM作成+ファイルシステム作成+マウント処理

インストール時に使い切っていなかったディスク領域にpartedコマンドでパーティション+LVMを作成し、ext4でフォーマットを実施。

環境:CentOS 6.5

パーティション作成 LVM作成 ファイルシステム作成 マウント処理

パーティション作成

[root@CentOS ~]# parted /dev/sda
GNU Parted 2.1
/dev/sda を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) print
モデル: ATA WDC WD5000AAKX-0 (scsi)
ディスク /dev/sda: 500GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt

番号  開始    終了   サイズ  ファイルシステム  名前  フラグ
 1    1049kB  211MB  210MB   ext4                    boot
 2    211MB   108GB  107GB                           lvm

(parted) unit MB
(parted) print
モデル: ATA WDC WD5000AAKX-0 (scsi)
ディスク /dev/sda: 500108MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt

番号  開始    終了      サイズ    ファイルシステム  名前  フラグ
 1    1.05MB  211MB     210MB     ext4                    boot
 2    211MB   107585MB  107374MB                          lvm

(parted) mkpart
パーティションの名前?  []?
ファイルシステムの種類?  [ext2]?
開始? 107585
終了? 500108
警告: WARNING: the kernel failed to re-read the partition table on /dev/sda (デバイスもしくはリソースがビジー状態です).  As a result, it may not reflect all
of your changes until after reboot.
(parted) print
モデル: ATA WDC WD5000AAKX-0 (scsi)
ディスク /dev/sda: 500108MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt

番号  開始      終了      サイズ    ファイルシステム  名前  フラグ
 1    1.05MB    211MB     210MB     ext4                    boot
 2    211MB     107585MB  107374MB                          lvm
 3    107585MB  500108MB  392523MB

(parted) set
パーティション番号? 3
反転するフラグ? lvm
新しい状態?  [on]/off? on
警告: WARNING: the kernel failed to re-read the partition table on /dev/sda (デバイスもしくはリソースがビジー状態です).  As a result, it may not reflect all
of your changes until after reboot.
(parted) print
モデル: ATA WDC WD5000AAKX-0 (scsi)
ディスク /dev/sda: 500108MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt

番号  開始      終了      サイズ    ファイルシステム  名前  フラグ
 1    1.05MB    211MB     210MB     ext4                    boot
 2    211MB     107585MB  107374MB                          lvm
 3    107585MB  500108MB  392523MB                          lvm

(parted) quit

■LVM作成

【PVの作成】

[root@CentOS ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg_centos
  PV Size               100.00 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              25599
  Free PE               0
  Allocated PE          25599
  PV UUID               djfDDx-6Rpo-4X5d-5MeC-YWn0-yONI-Jy8QlI

  "/dev/sda3" is a new physical volume of "365.57 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda3
  VG Name
  PV Size               365.57 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               AjNZRX-mMEs-QXkR-2VH8-kRFA-4caI-b1cky6



[root@CentOS ~]# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created
[root@CentOS ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg_centos
  PV Size               100.00 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              25599
  Free PE               0
  Allocated PE          25599
  PV UUID               djfDDx-6Rpo-4X5d-5MeC-YWn0-yONI-Jy8QlI

  "/dev/sda3" is a new physical volume of "365.57 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda3
  VG Name
  PV Size               365.57 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               3u11TK-uRB6-j8oe-i77M-JsKj-Jvas-kzJKpN

【VGの作成】

[root@CentOS ~]# vgdisplay
  --- Volume group ---
  VG Name               vg_centos
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               100.00 GiB
  PE Size               4.00 MiB
  Total PE              25599
  Alloc PE / Size       25599 / 100.00 GiB
  Free  PE / Size       0 / 0
  VG UUID               jS4d8e-1Tax-ulu0-41qT-DrlL-hONN-XcpoMh

[root@CentOS ~]# vgcreate vg_virtualbox /dev/sda3
  Volume group "vg_virtualbox" successfully created
[root@CentOS ~]# vgdisplay
  --- Volume group ---
  VG Name               vg_virtualbox
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               365.56 GiB
  PE Size               4.00 MiB
  Total PE              93584
  Alloc PE / Size       0 / 0
  Free  PE / Size       93584 / 365.56 GiB
  VG UUID               A0o3SZ-ziMe-targ-Re2J-F6Ax-jkpb-xnVBqQ

  --- Volume group ---
  VG Name               vg_centos
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               100.00 GiB
  PE Size               4.00 MiB
  Total PE              25599
  Alloc PE / Size       25599 / 100.00 GiB
  Free  PE / Size       0 / 0
  VG UUID               jS4d8e-1Tax-ulu0-41qT-DrlL-hONN-XcpoMh

【LVの作成】  現状で必要な容量のみ作成することにし、他のLVを追加するかそのまま拡張するか後で決めることにした。

[root@CentOS ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vg_centos/LogVol01
  LV Name                LogVol01
  VG Name                vg_centos
  LV UUID                afUoDQ-z5FZ-IvQG-19sy-RgAc-TMH1-DZBnOR
  LV Write Access        read/write
  LV Creation host, time CentOS, 2015-07-05 14:21:10 +0900
  LV Status              available
  # open                 1
  LV Size                96.00 GiB
  Current LE             24575
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/vg_centos/LogVol00
  LV Name                LogVol00
  VG Name                vg_centos
  LV UUID                opf5WS-n2mV-3X4o-KHN2-v5rP-sbC7-3YWSQj
  LV Write Access        read/write
  LV Creation host, time CentOS, 2015-07-05 14:21:28 +0900
  LV Status              available
  # open                 1
  LV Size                4.00 GiB
  Current LE             1024
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1



[root@CentOS ~]# lvcreate -n /dev/vg_virtualbox/LogVol00 -L 144GB vg_virtualbox
  Logical volume "LogVol00" created
[root@CentOS ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vg_virtualbox/LogVol00
  LV Name                LogVol00
  VG Name                vg_virtualbox
  LV UUID                n5Grvt-rvhF-XY10-SdZL-Hq0M-JVMn-iJ66kV
  LV Write Access        read/write
  LV Creation host, time CentOS, 2015-07-25 23:21:33 +0900
  LV Status              available
  # open                 0
  LV Size                144.00 GiB
  Current LE             36864
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

  --- Logical volume ---
  LV Path                /dev/vg_centos/LogVol01
  LV Name                LogVol01
  VG Name                vg_centos
  LV UUID                afUoDQ-z5FZ-IvQG-19sy-RgAc-TMH1-DZBnOR
  LV Write Access        read/write
  LV Creation host, time CentOS, 2015-07-05 14:21:10 +0900
  LV Status              available
  # open                 1
  LV Size                96.00 GiB
  Current LE             24575
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/vg_centos/LogVol00
  LV Name                LogVol00
  VG Name                vg_centos
  LV UUID                opf5WS-n2mV-3X4o-KHN2-v5rP-sbC7-3YWSQj
  LV Write Access        read/write
  LV Creation host, time CentOS, 2015-07-05 14:21:28 +0900
  LV Status              available
  # open                 1
  LV Size                4.00 GiB
  Current LE             1024
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

ext4ファイルシステム作成

[root@CentOS ~]# mkfs -t ext4 /dev/vg_virtualbox/LogVol00
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
9437184 inodes, 37748736 blocks
1887436 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
1152 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@CentOS ~]# tune2fs -l /dev/vg_virtualbox/LogVol00
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          55f40716-75dc-411f-a8ae-ab1ee90720b4
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              9437184
Block count:              37748736
Reserved block count:     1887436
Free blocks:              37108459
Free inodes:              9437173
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1015
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Sat Jul 25 23:23:53 2015
Last mount time:          n/a
Last write time:          Sat Jul 25 23:24:19 2015
Mount count:              0
Maximum mount count:      26
Last checked:             Sat Jul 25 23:23:53 2015
Check interval:           15552000 (6 months)
Next check after:         Thu Jan 21 23:23:53 2016
Lifetime writes:          2437 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      041343e4-690e-4af6-945e-5e731ac0076d
Journal backup:           inode blocks


[root@CentOS ~]# tune2fs -c 0 -i 0 /dev/vg_virtualbox/LogVol00
tune2fs 1.41.12 (17-May-2010)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds

[root@CentOS ~]#[root@CentOS ~]# tune2fs -l /dev/vg_virtualbox/LogVol00 |grep -e 'Check interval' -e 'Maximum mount count'
Maximum mount count:      -1
Check interval:           0 (<none>)

■マウント処理

[root@CentOS ~]# mkdir /virtualbox
[root@CentOS ~]# vim /etc/fstab
[root@CentOS ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sun Jul  5 14:24:36 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_centos-LogVol01 /                       ext4    defaults        1 1
UUID=fb09d98f-b893-42ad-a001-f5d1cc343ec4 /boot                   ext4    defaults        1 2
/dev/mapper/vg_virtualbox-LogVol00 /virtualbox                       ext4    defaults        1 3
/dev/mapper/vg_centos-LogVol00 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
[root@CentOS ~]# mount -a
[root@CentOS ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos-LogVol01
                       95G   50G   41G  56% /
tmpfs                 3.8G     0  3.8G   0% /dev/shm
/dev/sda1             190M   64M  117M  36% /boot
/dev/mapper/vg_virtualbox-LogVol00
                      142G   60M  135G   1% /virtualbox
[root@CentOS ~]# ls /virtualbox/
lost+found
[root@CentOS ~]# chown manatee. /virtualbox/
[root@CentOS ~]# ls -ld /virtualbox/
drwxr-xr-x. 5 manatee manatee 4096  7月 25 23:45 2015 /virtualbox/

Vagrantのboxの適用

以下を参考にboxの導入方法を確認しました。

dotinstall.com

■boxの適用

Box毎にディレクトリを分ける。

$ mkdir -p VagrantTest/testcentos
$ cd VagrantTest/testcentos

Boxの初期化

$ vagrant init chef/centos-6.5
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

ネットワークの有効化。

$ vim Vagrantfile
  #config.vm.network "private_network", ip: "192.168.33.10"
  ↓
  config.vm.network "private_network", ip: "192.168.33.10"

IPアドレスを編集したところ、"vagrant up"でエラーとなったため、そのままコメントアウト

$ grep -v -e '^\s*#' -e '^\s*$' Vagrantfile
Vagrant.configure(2) do |config|
  config.vm.box = "chef/centos-7.1"
  config.vm.network "private_network", ip: "192.168.33.10"
end

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'chef/centos-6.5' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Loading metadata for box 'chef/centos-6.5'
    default: URL: https://atlas.hashicorp.com/chef/centos-6.5
==> default: Adding box 'chef/centos-6.5' (v1.0.0) for provider: virtualbox
    default: Downloading: https://atlas.hashicorp.com/chef/boxes/centos-6.5/versions/1.0.0/providers/virtualbox.box
==> default: Successfully added box 'chef/centos-6.5' (v1.0.0) for 'virtualbox'!
==> default: Importing base box 'chef/centos-6.5'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'chef/centos-6.5' is up to date...
==> default: Setting the name of the VM: testcentos65_default_1436103308988_60424
==> default: Fixed port collision for 22 => 2222. Now on port 2201.
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 => 2201 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2201
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if its present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /vagrant => /home/manatee/VagrantTest/testcentos65

IPアドレスを変更したところ、以下のようにエラーとなった。ホストと同じセグメントするためには、パブリックネットワークの設定を行う必要がある。

Vagrantのネットワーク周りのあれこれ | Septeni Engineers' Blog | セプテーニ エンジニアブログ vagrantのネットワークについて - Qiita

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'chef/centos-7.1' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Loading metadata for box 'chef/centos-7.1'
    default: URL: https://atlas.hashicorp.com/chef/centos-7.1
==> default: Adding box 'chef/centos-7.1' (v1.0.0) for provider: virtualbox
    default: Downloading: https://atlas.hashicorp.com/chef/boxes/centos-7.1/versions/1.0.0/providers/virtualbox.box
==> default: Successfully added box 'chef/centos-7.1' (v1.0.0) for 'virtualbox'!
==> default: Importing base box 'chef/centos-7.1'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'chef/centos-7.1' is up to date...
==> default: Setting the name of the VM: testcentos_default_1436101003101_87114
==> default: Fixed port collision for 22 => 2222. Now on port 2200.
==> default: Clearing any previously set network interfaces...
The specified host network collides with a non-hostonly network!
This will cause your specified IP to be inaccessible. Please change
the IP or name of your host only network so that it no longer matches that of
a bridged or non-hostonly network.

$ vagrant ssh
Last login: Fri Mar  7 16:57:20 2014 from 10.0.2.2

■ゲストOSの設定

ドットインストールにて用意されたスクリプトを実行。 Ansibleを利用して基本的な設定が一括して行われる様子。

gitをインストール

$ sudo yum -y install git
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
 :
 :

ドットインストールのスクリプトをダウンロード

$ git clone https://github.com/dotinstallres/centos65.git
Initialized empty Git repository in /home/vagrant/centos65/.git/
remote: Counting objects: 89, done.
remote: Total 89 (delta 0), reused 0 (delta 0), pack-reused 89
Unpacking objects: 100% (89/89), done.

スクリプトを実行

$ cd centos65/
$ ./run.sh