実用的な Web アプリケーションのデプロイの実装
これまでに学んだことを、より実用的なシナリオに適用してみましょう。Ansible の get_url モジュールを使用して、シンプルな Web アプリケーションをデプロイします。
Web アプリケーションプロジェクトのセットアップ
まず、Web アプリケーションのディレクトリ構造を作成しましょう。
mkdir -p ~/project/ansible-get-url/webapp/public
cd ~/project/ansible-get-url
Web アプリケーションデプロイ Playbook の作成
次に、Web アプリケーションに必要なファイルをダウンロードする deploy-webapp.yml という名前の Playbook を作成します。
---
- name: Deploy Web Application Files
hosts: localhost
become: no
vars:
webapp_dir: ~/project/ansible-get-url/webapp
assets_base_url: https://raw.githubusercontent.com/ansible/ansible-documentation/devel/docs/docsite/rst/_static
tasks:
- name: Ensure webapp directories exist
file:
path: "{{ item }}"
state: directory
mode: "0755"
loop:
- "{{ webapp_dir }}"
- "{{ webapp_dir }}/public"
- "{{ webapp_dir }}/public/css"
- "{{ webapp_dir }}/public/images"
- name: Create index.html
copy:
dest: "{{ webapp_dir }}/public/index.html"
content: |
<!DOCTYPE html>
<html>
<head>
<title>Ansible Demo App</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="container">
<h1>Welcome to Ansible Demo</h1>
<p>This site was deployed using Ansible's get_url module!</p>
<img src="images/ansible-logo.png" alt="Ansible Logo">
</div>
</body>
</html>
- name: Download CSS file
get_url:
url: "{{ assets_base_url }}/css/ansible.css"
dest: "{{ webapp_dir }}/public/css/style.css"
mode: "0644"
timeout: 30
retries: 3
- name: Download Ansible logo
get_url:
url: "{{ assets_base_url }}/images/ansible_logo.svg"
dest: "{{ webapp_dir }}/public/images/ansible-logo.png"
mode: "0644"
timeout: 30
retries: 3
- name: Install Python HTTP server
apt:
name: python3-http.server
state: present
become: yes
- name: Display information about running the web server
debug:
msg: |
Web application has been deployed!
To start the web server, run:
cd {{ webapp_dir }}/public && python3 -m http.server 8080
Then access it at: http://localhost:8080
この Playbook は、次のことを行います。
- Web アプリケーションに必要なディレクトリ構造を作成します。
- 基本的な HTML コンテンツを含む index.html ファイルを作成します。
get_url モジュールを使用して、CSS ファイルと Ansible ロゴ画像をダウンロードします。
- Python HTTP サーバーをインストールします。
- Web サーバーの実行方法に関する情報を表示します。
Web アプリケーションデプロイ Playbook の実行
Playbook を実行しましょう。
ansible-playbook deploy-webapp.yml
Web アプリケーションが正常にデプロイされたことを示す出力が表示されるはずです。
Web サーバーの起動
次に、デプロイしたアプリケーションをテストするために、Web サーバーを起動しましょう。
cd ~/project/ansible-get-url/webapp/public
python3 -m http.server 8080 &
Web サーバーは、ポート 8080 でバックグラウンドで実行されるようになりました。ブラウザアクセスが可能な通常の環境であれば、http://localhost:8080 で Web アプリケーションにアクセスできます。
デプロイされたファイルの確認
必要なすべてのファイルが正しくデプロイされたことを確認しましょう。
ls -la ~/project/ansible-get-url/webapp/public/
index.html ファイルと作成したディレクトリが表示されるはずです。
ls -la ~/project/ansible-get-url/webapp/public/css/
ダウンロードした CSS ファイルが表示されるはずです。
ls -la ~/project/ansible-get-url/webapp/public/images/
ダウンロードした Ansible ロゴ画像が表示されるはずです。
HTML コンテンツの表示
index.html ファイルの内容を確認しましょう。
cat ~/project/ansible-get-url/webapp/public/index.html
Playbook で作成した HTML コンテンツが表示されるはずです。
Web サーバーの停止
テストが完了したら、Web サーバーのプロセス ID を見つけて kill することで、Web サーバーを停止できます。
pkill -f "python3 -m http.server 8080"
おめでとうございます!Ansible の get_url モジュールを使用して、必要なファイルをダウンロードすることにより、シンプルな Web アプリケーションを正常にデプロイしました。