openwisp.wifi_login_pages
ansible-openwisp-wifi-login-pages
Ansibleを使用してopenwisp-wifi-login-pagesを展開および管理するための役割です。
必要な変数:
wifi_login_pages_domains: アプリにアクセスするためのホスト名のリストwifi_login_pages_organizations_src: 組織の設定を含むディレクトリのローカルパス
使用方法(チュートリアル)
Ansibleの使い方がわからない場合でも、心配しないでください。この手順は、基本的なopenwisp-wifi-login-pagesのセットアップを正しく行うためのガイドを提供します。
すでにAnsibleを使い慣れている方は、このチュートリアルをスキップしても構いません。
まず、二つの重要な概念を理解する必要があります:
- 「本番サーバー」とは、公開のipv4/ipv6を持ち、openwisp2をホストするために使用されるサーバー(ノートパソコンやデスクトップコンピュータではありません!)を指します。
- 「ローカルマシン」とは、Ansibleを起動するホスト(例えば、あなた自身のノートパソコン)を指します。
Ansibleは、SSHを通じて本番サーバーにアクセスする構成管理ツールです。 したがって、展開を開始するマシンにAnsibleをインストールし、設定する必要があります。このマシンは、本番サーバーにSSHで接続できる必要があります。
Ansibleはあなたのローカルマシンで実行され、そこから本番サーバーに接続してopenwisp-wifi-login-pagesをインストールします。
Ansibleをインストール
まだ行っていない場合は、ローカルマシン(本番サーバーではありません!)にAnsible(バージョン2.13以上)をインストールします。
Ansibleをインストールするために、公式のAnsibleインストールガイドに従うことを推奨します。依存関係の問題を回避するために、仮想環境を通じてAnsibleをインストールすることをお勧めします。
また、Python環境に正しいバージョンのJinjaがインストールされていることを確認してください:
pip install Jinja>=2.11
作業ディレクトリを選択
openwisp-wifi-login-pagesの設定を置くための作業ディレクトリをローカルマシン上で選択します。
これは、openwisp-wifi-login-pagesをアップグレードする際に役立ちます。
例:
mkdir ~/openwisp-wifi-login-pages-ansible-playbook
cd ~/openwisp-wifi-login-pages-ansible-playbook
この作業ディレクトリをバージョン管理下に置くことも非常に良いアイデアです。
Ansible GalaxyからAnsibleロールをインストール
ansible-galaxy install openwisp.wifi_login_pages
インベントリファイルを作成
インベントリファイルは、サーバーのグループを定義する場所です。シンプルなケースでは、サーバーを1台だけ含む1つのグループを定義することで十分です。
作業ディレクトリ(前のステップで作成したディレクトリ)にhostsという新しいファイルを作成し、以下の内容を入力します:
[openwisp-wifi-login-pages]
openwisp-wifi-login-pages.mydomain.com
プレイブックファイルを作成
ローカルマシン上にplaybook.ymlという新しいプレイブックファイルを作成し、以下の内容を記入します:
- hosts: openwisp-wifi-login-pages
become: "{{ become | default('yes') }}"
roles:
- openwisp.wifi_login_pages
vars:
wifi_login_pages_domains: ["wifi.openwisp.org"]
become: "{{ become | default('yes') }}"という行は、Ansibleが各コマンドを実行するためにsudoプログラムを使用することを意味します。必要がない場合(例えば、本番サーバーでrootユーザーを使用している場合)は、この行を削除しても構いません。
必要であれば、hostsフィールドのopenwisp-wifi-login-pagesを本番サーバーのホスト名に置き換えても良いです。
wifi_login_pages_domainsは唯一の必須変数です。これは、アプリにアクセス可能なホスト名のリストです。
プレイブックを実行
今、openwisp-wifi-login-pagesを本番サーバーに展開する時が来ました。
ローカルマシンからプレイブックを次のように実行します:
ansible-playbook -i hosts playbook.yml -u <user> -k --become -K
<user>は本番サーバーのユーザー名に置き換えてください。
-k引数にはsshpassプログラムが必要です。
サーバーに公開SSHキーがインストールされている場合は、-k、--become、-Kを削除できます。
ヒント:
Authentication or permission failureというエラーが表示された場合は、_root_ユーザーを使用してみてください。ansible-playbook -i hosts playbook.yml -u root -k- ホストのフィンガープリントを
known_hostsファイルに追加する際のエラーが表示された場合は、SSHでホストに接続し、プロンプトが表示されたときに「はい」と答えれば、再度ansible-playbookを実行できます。
組織の設定とアセットの展開
組織のYAML設定ファイルおよび関連する静的アセット(ロゴ、CSSなど)を展開するために、次の手順を実行します:
ステップ1: Ansibleプレイブックファイルのディレクトリに移動します。
cd <path_to_playbook_file>
ステップ2: filesディレクトリを作成します。
mkdir files
ステップ3: organizationsディレクトリからfiles/owlp_organizationsに組織の設定およびアセットをすべてコピーします。
cp -r <path_to_organizations_directory> files/owlp_organizations
翻訳の展開
通常およびカスタムの翻訳を展開するには、i18nディレクトリからfiles/owlp_i18nにすべての翻訳をコピーします。
cp -r <path_to_i18n_directory> files/owlp_i18n
これでプレイブックを実行すると、ファイルがリモートにアップロードされます。
カスタム静的コンテンツの展開
カスタム静的コンテンツ(HTMLファイル、PDFなど)を展開するには、すべての静的コンテンツをfiles/owlp_staticディレクトリに追加します。
owlp_static内のファイルは、プレイブックを実行する際にリモートのstaticディレクトリにアップロードされます。
テストの実行方法
ansible-openwisp-wifi-login-pagesに貢献したい場合、開発環境でテストを実行して自分の変更が何も壊していないか確認する必要があります。
そのために、次の手順に従います:
ステップ1: ansible-openwisp-wifi-login-pagesをクローンします。
以下のコマンドでリポジトリをクローンします:
git clone https://github.com/<your_fork>/ansible-openwisp-wifi-login-pages.git
ステップ2: Dockerをインストールします。
まだDockerをインストールしていない場合は、インストールする必要があります(Linux Debian/Ubuntuシステムの例):
sudo apt-get install docker.io
ステップ3: Moleculeと依存関係をインストールします。
pip install molecule[docker] yamllint ansible-lint docker
ステップ4: Dockerイメージをダウンロードします。
docker pull geerlingguy/docker-ubuntu2404-ansible:latest
docker pull geerlingguy/docker-ubuntu2204-ansible:latest
docker pull geerlingguy/docker-ubuntu2004-ansible:latest
docker pull geerlingguy/docker-debian11-ansible:latest
docker pull geerlingguy/docker-debian12-ansible:latest
ステップ5: Ansibleの依存関係をインストールします。
ansible-galaxy collection install community.docker
ステップ6: Moleculeテストを実行します。
molecule test -s local
エラーメッセージが表示されない場合は、テストが正常に実行されたことを意味します。
プロのヒント: 以降のテスト実行の速度を上げるために、molecule test --destroy=neverを使用します。
