Ansibleを利用して簡単にLAMP環境を構築する
久しぶりにブログを書いています。
今回はAnsibleを使って、簡単なLAMP環境を構築するPlaybookを作成します。
今回のゴール
今回は下記内容を記載し、記事を見ながら同じ作業ができることを目標とします。
- 「Ansibleとは?」という概要の説明
- Ansibleのインストール方法説明
- Playbook作成方法
- LAMP環境構築Playbook
Ansibleとは
Ansibleを検索すると、構成管理ツールとして紹介されることがよく見られます。
構成管理でググると次のような文章が出てきます。
構成管理とは、システムの構成やプロジェクトにおける成果物を管理することである。
つまり、システム構成を管理してくれるソフトウェアということです。Ansibleというツールを利用することによって、Ansibleを利用できる条件が整っている任意のサーバに例えばPHPのインストールを行うことができます。
Ansible以外の構成管理ツールとしては、Chef(シェフ)やPuppet(パペット)と呼ばれるツールもあります。
AnsibleとChef,Puppetの大きな違いは、エージェントレスかどうかということです。
先ほどの例で挙げたPHPのインストールですが、Ansibleで利用できる条件が整っている場合のみインストールすることが可能です。インストールする条件は下記の2つのみです。
- インストールする対象サーバ(管理対象サーバ)にpython2.4以上がインストールされている
- 管理対象サーバにsshにて接続ができる
エージェントのインストールといった、管理対象サーバに変更を加えることをAnsibleは行いません。
ChefやPuppetは管理対象サーバに対してエージェントをインストールすることが前提となります。管理対象サーバに変更を加える必要があるため、変更を加えたくない場合はAnsibleを使うほうがいいと思います。
Ansibleのインストール方法
Ansibleのインストール方法はとても簡単です。RHEL、CentOSであれば基本的に下記コマンドで一発でインストール可能です。
ただし、インストールするサーバにpython2.6以上がインストールされていることが条件です。事前にpythonのバージョンを確認しておき、インストールやバージョンアップが必要な場合は適宜行ってください。
python --version
今回実行する環境ではバージョン2.7.5がインストールされているため、特にバージョンアップの必要がありませんでした。そのためさっとインストールしてしまいます。
yum -y install ansible
コマンド実行後、下記のような画面が表示されます。
~中略~
インストール完了後、ansible --version
にてインストールしたバージョン確認が行えます。
今回OSをCentOS7にて実行しました。
これにてAnsibleのインストールは終わりです。
playbook作成方法
playbookとは、管理対象の構成を記述したファイルの名称です。playbookに記載する内容が、サーバの構成に直結します。
例えば、「対象サーバにPHPをインストールしたい!」と思った場合、playbookにPHPをインストールするplaybookを記載する必要があります。もちろん、記載して実行する必要があります。
playbookはYAML形式で記載します。簡単なplaybookであれば、playbookを実行する対象サーバと実行するタスクを記載する程度で十分だと思います。他にも記載方法はいろいろありますが、まずは簡単なところから実行していきます。
playbookはどこでも作成可能です。対象ホスト名はIPアドレスのべた書きでも大丈夫ですが、一般的にはhostsというファイルを作成し、その中に構築対象サーバのIPアドレスを記載していきます。hostsを読み込ませるためには、ansible.cfgというファイルを作成し、実行するホストを反映させるなど作業が必要です。
今回は、デフォルトの/etc/ansibleディレクトリ内で作成していきます。
playbookの構文は以下の通りです。通常もう少し複雑ですが、本記事ではわかりやすさを求めるためいったん実行できるplaybookを作成します。
test.yml
- hosts: test_host #管理対象サーバのIPアドレスを記載したグループ名。 #IPアドレス直書きでもOKだが、今回はホスト名を設定。 tasks: #tasks以降に管理対象サーバに加えたい変更を記載する。 yum: name: xxx #インストールしたいMWを選択。PHPやApache等 state: present #既にインストールされている場合の対応を選択。 #presentは既にインストールされている場合変更を加えないという設定。
hosts
[test_host] IPアドレス
あとは作成したplaybookを実行するだけです。コマンドは、ansible-playbook test.yml
です。上記playbookをもとに、PHPをインストールするplaybookを記載し実行してみます。
無事実行ができました。
LAMP環境構築Playbook
ここからが本題です。LAMP環境を構築するplaybookを記載し実行します。playbookは下記のとおりです。本来はyumが複数あるためwith_itemsでループしたりするほうがいいのですが、一つ一つをわかりやすくするためあえてべた書きにしています。
- hosts: test-server tasks: #httpdインストール - name: install httpd yum: name: httpd state: present #phpインストール - name: install php yum: name: php state: present #MariaDB(旧MySQL)インストール - name: install mariadb yum: name: mariadb state: present - name: install mysql-python yum: name: MySQL-python state: present - name: install mariadb-server yum: name: mariadb-server state: present #httpdサービススタート - name: start httpd service: name: httpd state: started #MariaDBサービススタート - name: start mysql service: name: mariadb state: started #MariaDB用ユーザ作成 - name: create mariadb user mysql_user: name: mariadb password: mariadb #databases作成 - name: create mariadb database mysql_db: name: testdb state: present #MariaDB設定ファイルを反映する場合実行 #コメントアウトを削除し反映 # - name: copy mariadb config file # copy: # src: /root/my.cnf # dest: /etc/my.cnf #MariaDBサービス起動 - name: start mysql service: name: mariadb state: started
これでLAMP環境が構築できます。インストールしてから設定ファイルを変更していないため、設定ファイルを変更するplaybookを記載するのもいいかもしれません。
Node-REDのTwitterAPIノードを使って遊ぶ
※注意
今回の記事では、IBM Cloud上のサービスとして展開されているNode-RED Starterを使って作業しています。
Node-REDの導入までは下記の記事をご確認ください。
relativelayout.hatenablog.com
また、IBM Cloudのライトアカウントを取得していることが前提となっております。ご注意ください。
目次
今回やる内容
今回は自分自身がお気に入り登録したツイートの情報を取得できるところまでを行います。かなり簡単なので、記事を見たらすぐできると思います。
Node-REDの簡単な使い方
今回はタイトル通り、Node-REDを使って遊びます。
まずはNode-REDを起動します。
これがNode-REDのメイン画面となります。左側にある四角い箱のようなものをノードといい、このノードを複数つなげたりしてプログラミングを行います。
またNode-REDの特徴として、別のノードへ変数を渡す際、msgと呼ばれるオブジェクトに値を入力します。
Node-REDの使い方としては、以下の流れで行います。
① functionノードにコードを記載
② debugノードをfunctionノードに繋げて内容を出力できるようにする
③ injectノードをfunctionノードに繋げて処理を実行
次の画像には、実行を行うとdebugノードへHello Worldと出力を行うコードを記載しています。
1行目のmsg.payload = "Hello World";
のpayloadと呼ばれるプロパティに出力する値が保存されています。
2行目のreturn msg;
で、次のノードへ値を渡しています。
Node-RED上で今記載したプログラムを実行するためには、実行のためのトリガーと、それに対する出力用のノードが必要となります。
左のタブにあるinjectと記載されたノードとdebugと記載されたノードをドラッグして処理を行えるようにします。
ノードをダブルクリックすることで、設定やノードの表示名称を変更することができます。
適当に編集して以下の画像のようにしました。
実行する際は、右上のデプロイという赤いボタンを押してください。デプロイが成功すると、それぞれのノードの右上に出ている青い丸が消えてプログラムを実行できるようになります。
簡単ですが、以上がNode-REDの使い方です。
TwitterAPIで遊ぶ
ここからが本題です。
Node-RED上で用意されているTwitterAPIを利用して遊んでみます。
左側のスクロールバーをずらすと、Twitterのアイコンが書かれたノードがでてきます。
このノードを利用すると、Twitterの情報を簡単に取得することができます。
Twitterのノードを配置してダブルクリックをすると、以下のような設定項目が出てきます。
TwitterIDで認証している場合、青塗りで隠している箇所に認証したTwitterIDが表示されます。
検索対象というのは、何をトリガーとしてツイッターのデータを取得するかという設定項目です。試しに、自身のイベントを選択します。
デプロイを実行後、Twitterで選択したアカウントでツイートをふぁぼ(お気に入り登録)をしてみます。
ふぁぼした後の実行結果です。お気に入り登録をしたツイートの情報が取得できました。
こんな感じでツイートのデータを簡単に取得できます。これを利用したら、次のようなことができるかも…?
■特定のツイートに反応してリプライを送る
■つぶやかれる内容をトリガーにしてお気に入り登録の実施
今後できるならこういう内容を確認してみるのもありかもしれませんね。
IBMのwatsonは川島コラを判定できるのか
IT系の技術力が皆無のため勉強がてらに実施します。
今回はIBM Cloud(旧Bluemix)のサービスの一つであるVisual Recognitionを利用して川島コラ判定を行うClassifiersを作成します。
アイドルマスターシンデレラガールズで一時期よく見かけた川島瑞樹コラ。
本物の画像とコラ画像双方を学習させたら、Watsonは川島コラと認識できるのでしょうか。
Visual Recognitionとは
簡単に言えば、IBMが提供するWatsonの画像認識機能です。
Watsonとは?という疑問に関しては、以下のページを参照ください。
特徴としては、自分で画像認識機能を作成する際、最低50枚からで始めることができるという点です。最低10枚からでした
画像が50枚あれば画像分析が可能です。
利用する画像
今回Watsonに覚えされるデータとして、モバマスの川島瑞樹さんの画像とコラ画像を用意しました。
まずは通常の川島瑞樹さんの画像です。
アイドルマスターシンデレラガールズで最初に登場した川島さんの画像です。
このようにモバゲー版での画像とデレステでの画像合わせて38枚、グラブルでの川島さん画像2枚、4コマの川島さん画像10枚の合計50枚を利用します。
次に、コラ画像です。
コラ画像は、単純なものですと他のアイドルの顔に川島さんの顔をかぶせたものです。
これは北条加蓮のカードに川島さんの顔写真を載せたコラ画像です。
このようなコラ画像を50枚集めました。
この50枚の画像を元データとし、Watsonに学習させます。
本題のVisual Recognition
では早速利用していきます。
IBM Cloudにログインします。
アカウントがない方は登録する必要があります
※IBM Cloudにはライトアカウントと呼ばれるクレジット登録を行わなくても利用できるプランがありますが、Visual Recognitionはライトアカウントでは利用できません。
ログイン後、カタログを選択してください。
上の検索画面から、Visual Recognitionと入力。
Visual Recognitionを選択します。
デプロイするロケーション、組織とスペースをそれぞれ任意の場所を選択します。
このまま下へスクロールしていくと、Visual Recognitionの料金体系を選択できます。
今回はfreeで作成します。
作成後、Visual Recognitionを選択すると以下の画面に行きます。
このまま大きい緑の画面を押すと、APIKeyを求められる画面に飛びます。
サービスの詳細より、サービス詳細情報から、新規資格情報を選択します。
名前を決めた後、追加を選択。
サービス資格情報作成後、資格情報の表示が行えるようになります。
資格情報を表示を選択し、api_keyと書かれた箇所のダブルクォーテーション内の英数字文字列をコピーし、先ほどのAPIキー入力画面で入力し、サービスを利用します。
画像を学習させる(Classifiers作成)
ここまでがVisual Recognitionを利用する流れです。ここから画像を学習させていきます。
Visual RecognitionTool画面の左上に、Create classifierというボタンがあるので、選択します。
選択すると、以下の画面が出てきます。
画像をZIP形式であげることで学習が行えます。
ということで、ZIPファイルでアップロードします。
Class Nameのところには、入力された画像が何の画像であるかと表示される名前となります。
今回は、
正規画像:kawashima
コラ画像:kawashima_kora
という名前で名前を付けました。
今回はこれでOKなので、右下のCreateボタンを押してClassifiersを作成します。
作成が終わると、trainingと画面が表示されオレンジ色に光っています。
トレーニングが終わると緑色でreadyと
と表示されます。
大体5分~10分でトレーニングが終わります。
Watson VS 川島瑞樹コラ
これでコラ判定が行えます。
とりあえずコラ画像と通常画像両方投げてみます。
投げるコラ画像はこれです。
三好紗南ちゃんの画像に川島さんの顔写真が貼られています。
choose your filesを選択すると、画像が川島さんかコラ画像かどうか判定できます。
危ういながらコラ判定されました!
数値が低い理由は、この画像は学習させた画像ではない画像であるからですかね…?
本物の川島さん画像は、学習させた画像と少し違う画像を利用してみます。
この画像を投げてみます。
ちゃんと判定してくれました!
では4コマや別の画像を投げてみます。
4コマの川島さんです。突っ込んでみましょう。
!?
コラと認識された…!?
んーやっぱり学習内容が少なかったのか…?
とりあえず新しい川島さんSRが来たら判定していただきます。
Watson VS 川島コラ
若干Watsonが負けかけですね…
自分のやり方が悪いかもしれないので、もう少しお勉強してリベンジします。
Tera Termから仮想マシンへログインする
IT系の技術力が皆無のため勉強がてらに実施します。
今回は前回接続確認した仮想マシンに接続して色々と確認を行います。
前回の記事は下のリンクを参照してください。
今回は仮想マシンを起動させたあと、ホストマシンであるWindows10からTeraTermを使って接続を行います。
1.仮想マシンのIPアドレス確認
Tera Termは22番ポート、SSHを利用して接続します。
その際、接続先である仮想マシンのIPアドレスがわからないといけません。
というわけで、確認をしてみます。
IPアドレスの確認コマンドは、
$ ip address showです。
$ ip addrでも確認はできます。
インタフェースenp0s3に、IPアドレス10.0.2.15が振られています。
ということで、Windows10のコマンドプロンプトより、pingをうってみます。
ping疎通が確認できたら、パスが通っていると確認ができます。
おや…タイムアウトしてしまいました。
ちょっと詰まってしまいました…。
2.ホストオンリーアダプタの追加
軽くググってみると、以下の記事が出てきました。
どうやら、ホストオンリーアダプタを設定するといいみたいですね。
早速設定してみます。
いったん仮想マシンの電源を落として、設定よりネットワークのアダプター2を許可します。
割り当てはホストオンリーアダプタ、名前はデフォルトのまま行きます。
OKを押して、再度仮想マシンを起動させます。
3.再度IPアドレス確認
再び$ ip addrとたたいてIPアドレスの確認をします。
IPアドレス192.168.56.101が増えました。
またWindows10のコマンドプロンプトから、pingをうってみます。
今度はちゃんと通りました。よかったー。
4.Tera Termから接続
さ、本題のTera Termから仮想マシンの接続を行います。
ホスト名はIPアドレス、先ほど判明した192.168.56.101を設定します。
TCPポートは22番を設定。OKを押します。
ログイン画面が出てきます。
ユーザ名とパスワードを入力後、OKを押します。
Tera Term上から仮想マシンへログインができましたー!!
今回はここで終わります。
次回はApacheを導入します。
仮想マシンにCentOS7をインストールする
IT系の技術力が皆無のため勉強がてらに実施します。
今回は前回立てた仮想マシンに色々設定を行って接続できるまで確認します。
前回の記事は下のリンクを参照してください。
はじめに:機器構成
前回と同様ですが、仮想マシンはWindows10の上に立てます。
わかりにくいと思いますが、以下の図を見てください。
仮想マシンにCentOS7をインストールした後の構成です。
現在利用しているPCのOSはWindows10です。
そのWindows10上に、仮想化ソフトウェアであるVirualBOXをインストールしています。
VirtualBOX上で仮想マシンを立て、一つのOS上で別のOSを動かしています。
このような仮想化方法は一般的にホストOS型と呼ばれます。
ホストOS型では、Windows10のような通常のOSをホストOSと呼び、VirtualBOX上で動作しているCentOSのことをゲストOSと呼びます。
1.環境設定
前回、VirtualBOXに仮想マシンを作成しました。
仮想マシンを立ち上げる前に、ストレージ設定とネットワーク設定をする必要があるため、環境設定の変更を行います。
仮想マシンから設定を選択すると、以下の画面が出ます。
まずはストレージ設定の変更を行います。
ストレージを選択すると、コントローラ IDEが空になっています。
このコントローラに前回の記事でダウンロードしたISOイメージを設定させます。
もしそのまま仮想マシンを立ち上げると、
FATAL:could not read from the boot medium!
System halted.
といった記述が出てしまいます。
ISOイメージを選択するには、空となっているコントローラを選択し、ディスクのアイコンをクリック。
前回ダウンロードしたISOイメージを選択します。
次に、ネットワーク設定の変更を行います。
ネットワークを選択後、アダプター1の割り当てをNATに変更してください。
NATにすると、ホストOSとゲストOSの間にVirtualBOXが入り、ゲストOSのIPアドレスを変換してくれます。つまりルータの役割を担ってくれます。
NATに変更後、OKを選択してウインドウを閉じます。
ウインドウを閉じだあと、起動を選択し仮想マシンを起動させます。
2.仮想マシンにCentOS7をインストール
緑色の起動ボタンを選択後、このような画面が出てきます。
今回はインストールを行うので、Install CentOS7を選択します。
選択する際、画面上でマウスをクリックしないと画面内での操作ができなくなります。
画面内を選択している最中は、マウスを画面外に移動することができません。
画面外へマウスを移動させる際は、キーボード右側のCtrlキーを押してください。
インストール中です。このまましばらく放置します。
インストール完了後、セットアップ画面が出てきます。
OSの言語選択です。日本語を選択します。
インストーラ概要です。ここでタイムゾーン設定の変更ができます。
システムのインストール先が選択されていないため、インストールを行うことができません。
インストール先をクリック後、デバイスを選択します。
今回はローカルの標準ディスクを選択しました。ディスク選択後完了をクリックします。
これでインストールできるようになりました。
インストールの開始を押してCentOSをインストールします。
インストール中にrootユーザのパスワードとユーザの追加ができます。
今回はパスワード設定のみを行います。
自分で作成したパスワードを設定し、完了をクリック。
しばらく待っておきます。
完了すると、再起動を求められます。
そのまま仮想マシンの再起動を行います。
3.仮想マシンへログイン
再起動後しばらく待っておくとログインを求められます。
以下の通り入力し、ログインしてみます。
ユーザID:root
パスワード:先ほど決めたパスワード
無事ログインが完了しました。
これで、仮想マシン上にCentOS7がインストールされました。
次回以降はどのような設定になっているかという確認コマンドを入力して構成を確認します。
VirtualBOX5.2をWindows10にインストールする
IT系の技術力が皆無のため勉強がてらに実施します。
今回の流れは目次の通りです。
VBOXインストール後CentOS7用の仮想マシンを立ち上げます。
はじめに:機器構成
今回はこのような環境で構成します。
OS:Windows10 Home 64ビット
CPU:Intel(R)Core(TM) i7-7700 CPU@ 3.60GHz
作成する仮想マシンの構成は以下の通りです。
OS:CentOS7
RAM:1024MB(1GB)
仮想HDD:8GB
イメージとしては、Windows10の上に仮想的にCentOS7を立てます。
1.VirutualBOXのインストール
まずは以下のURLからVirtualBOXのページを開きます。
URLを開いてダウンロードを選択したらこのような画面が出てきます。
今回はWindow10にインストールするので"Windows hosts"を選択。
インストーラがダウンロードされます。ダウンロード完了後exeファイルを起動。
そのままNextを選択。
セットアップ画面が出てきます。アプリケーションは全部選択しておきます。
Locationに関しては、今回はE:\VirtualBOX\Browseに作成します。
ショートカット等を作るかという画面です。何も考えずそのままNextを選択。
ネットワークコネクションが一時的に切れてしまう警告画面です。
そのままYesを選択(動画見ながら作業している人はお気をつけて)
このままInstallを選択。
これでVirtualBOXがインストールできます。
10秒程度でインストール完了します。
Finishを押すとそのままVirtualBOXが起動します。
2.CentOS7でサーバ作成
今回は仮想マシンのOSをCentOS7で作成します。
VirtualBOXはサーバ構築時にOSのisoファイル(中身を一つにまとめたイメージファイル)が必要となります。
そのため、CentOSのisoファイルをダウンロードしておきます。
以下のURLより、CentOSのダウンロードページへ行きます
https://www.centos.org/download/
このページよりCentOSのisoファイルをダウンロードしますが、それぞれのisoファイルには違いがあります。
・DVD ISO
一般的なサーバで利用する際のISOファイル。GUIでインストールできる全パッケージが含まれています。
・Everything ISO
サーバGUIでインストールできるパッケージ以外すべて入っているISOイファイル。ローカルミラーリポジトリと呼ばれるものを作成する際は選択します。
・Minimal ISO
必要最低限のパッケージしか入っていないISOファイル。容量も約1GBと少ないです。
今回はMinimal ISOファイルから作成します。
Minimal ISOを選択します。
各種ISOイメージがおかれているミラーサイトがあります。
選択してISOイメージをダウンロードします。
ダウンロード完了後、VirtualBOXに戻って新規を選択します。
ウインドウが出てくるので、以下のパラメータでサーバを作成します。
名前 :CentOS 7 - dev
タイプ :Linux
バージョン:RedHat(64bit)
名前に関してはVirtualBOX上で表記される名前です。今回は開発用ということでこの名前にしました。
メモリサイズの設定です。今回は1GBで設定します。
ハードディスクの設定です。
必要サイズ8GBで作成します。
ハードディスクのファイルタイプ選択です。
そのままVDIを選択します。
ストレージのサイズの選択です。
スナップショットを取る際にどちらかが影響しますが、今回は可変サイズで作成します(影響した際はサーバ削除後固定サイズに変更)
ファイルサイズと場所の設定です。
ファイルデータ上限は仮想ハードディスク上限と同じ8GBにしておきます。
フォルダ名はそのままの名前にしておきます。
このまま作成ボタンを押し、仮想サーバを作成します。
これで仮想サーバが立ちました。
次回以降にCentOS7の起動から設定をしていきます。
参考記事