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 TomcatのGUI 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 httpd と Tomcatの連携
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 httpdとTomcatの連携に失敗する。
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のステージ情報はTwitterのBotなどで確認していたが、Alexaから教えてもらえたら面白いのでは。
・LambdaとNode.jsを使ったのですが、この時点で全くの素人、ちょっと勉強してみたい。
・いずれ誰かが同じスキルをよりスマートに作成すると思われるので、とにかく動くものを作れればよい。
・できれば公開したい(まだ申請していない)
調べてみると、Splatoon2のステージ情報を調べるスキルは、すでに以下などが存在していました。 ただし、英語のみで日本語に対応したものはまだ存在してない様子。
ステージ情報はNintendo Switch Onlineにあるイカリング2にて公開されていますが、こちらから直接取得するのは大変と思われるので、公開されているAPIを利用させていただきました。
Spla2 API - スプラトゥーン2のステージ情報API
コードはこちら。
https://github.com/manatee2005/Splatoon2
■カスタムスキル作成について
カスタムスキル作成は、まったくの初めてなので、最初はギアパワーの説明など、埋め込んだ情報を読んでもらう簡単な機能のみとし、まずは慣れることにしました。
以下のようなものです。
ユーザ:「アレクサ、スプラトゥーンを開いて」
↓
Alexa:「調べたいバトルルール、またはギアパワーを言ってください。」
↓
ユーザ:「メインインク効率アップ」
↓
Alexa:「メインインク効率アップが付きやすいブランドはジモン、付きにくいブランドはバトロイカです。メインウェポンの消費インク量が少なくなります。」
その後、ステージ情報については、sync-requestモジュールのhttpGetを使い、前述のAPIから取得する機能を追加しました。
ユーザ:「ナワバリ」
↓
Alexa:「現在のナワバリのステージはバッテラストリートとタチウオパーキングです。次のナワバリのステージは、、」
もしくは、
ユーザ:「サーモンラン」
↓
Alexa:「直近のサーモンランはトキシラズいぶし工房です。ブキは○○、、」
■開発用URL
・AWSコンソール(Lambda)
https://ap-northeast-1.console.aws.amazon.com
・アレクサ開発コンソール
・アレクサログイン(アプリ)
■カスタムスキル作成の基本的な操作・コード作成
基本的な内容は以下のサイトを参考にさせていただきました。 (その他いろいろ)
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
■躓いたところ
いろいろと躓いたところは、以下のサイトが参考になりました。
・スロット値の取り出し方がわからない。
→「Synonyms(同義語)で設定した id をチェック、、」を参照しました。配列の取り出し方。
電車の運行情報を教えてくれるAlexa Skillを作ってみた - Qiita
・Lambda側の設定は完了、コンソール側のスキルを削除して作り直し、エンドポイントの設定でARNの指定を行い保存したところ、以下のエラーが発生。
「"The trigger setting for the Lambda
→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
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
[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の導入方法を確認しました。
■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