inoxio.ispconfig3
Ansibleロール:Ubuntu BionicにISPConfig 3をインストールしてカスタマイズ
inoxio.ispconfig3ロールを使用すると、Ubuntu 18.04にISPConfigをインストールできます。 このロールはhowtoforge.comのチュートリアルの指示に従います。 カスタマイズの説明は次のセクションで行います。また、Moleculeをテスト環境として実装しており、自分でMoleculeを使用したい場合のヒントも含まれています。
要件
- Ubuntu 18.04を搭載したマシン
依存関係
- oefenweb.apt
ロール変数
Mail、PHPMyAdmin、およびRoundcubeは、各アプリケーションの管理者パスワードを設定します。 Mail自体は、メールを送信するためのメールアドレスも必要です。
ISPConfigは最も重要な部分であり、多くの異なる変数が含まれています。 ほとんどの変数はISPConfigのautoinstall.phpに変換できます。 mysql_root_passwordは、MariaDBモジュールのセットアップに使用されることに注意することも重要です。
Playbook 変数: 以下の変数はプレイブックで必要です(パスワードを除く、省略した場合は生成されます)。 これらの変数がプレイブックに記載されているかを確認するチェックもあります。デフォルトの変数はプレイブックで上書きできます。
Mail
: 新しいメールリストを設定するためのすべての必要な変数を設定します。指定したパラメーターで自動的にメールリストが作成されます。
mail_admin_email
: Mailmanからの更新を送受信するメールアドレス。mail_admin_password
: (オプション)Mailman管理者用のパスワード。設定しない場合、実行の最後に生成され表示されます。mail_base_domain
: Mailman用のベースドメイン。phpmyadmin_hostname
: phpmyadminのベースドメイン。roundcube_admin_password
: (オプション)Roundcubeの管理者ログイン用パスワード。設定しない場合、実行の最後に生成され表示されます。
ispconfig
: ISPConfigセットアップのほとんどの設定が含まれています。
ISPConfig自体が提供する例を参照してください。
ここ で見つけることができます。
ispconfig_admin_password
: (オプション)ISPConfig管理者ログイン用のパスワード。設定しない場合、実行の最後に生成され表示されます。ispconfig_mysql_root_password
: (オプション)ルートユーザーのパスワード、安全なものを選択してください。データベースが公開されていなくても、設定しない場合、実行の最後に生成され表示されます。ispconfig_mysql_ispconfig_password
: (オプション)MySQL用のログイン。設定しない場合、実行の最後に生成され表示されます。ispconfig_mysql_master_root_password
: (オプション)マスターデータのルートユーザー用パスワード。設定しない場合、実行の最後に生成され表示されます。ispconfig_hostname
: ISPConfigホストの名前。roundcube_hostname
: Roundcubeホストの名前quota_mounts
: クオータのために再マウントされるすべてのディレクトリのリストです。「クオータ」セクションを参照してください。
デフォルト 変数:
language
: システム全体の言語mailing_list_name
: Mailmanリストを設定します。Mailmanとして設定することをお勧めします(例のプレイブックを参照)。- デフォルト:
Mailman
- デフォルト:
ispconfig_install_mode
: 通常通りインストールしたい場合は、デフォルトを使用することをお勧めします。- デフォルト:
standard
- デフォルト:
ispconfig_hostname
: サイト名を設定できるFQDNに使用します。ispconfig_mysql_hostname
: MySQLデータベースが実行されている場所。 このロールのみを使用する場合、デフォルトで十分です。- デフォルト:
localhost
- デフォルト:
ispconfig_mysql_root_user
: ルートユーザーの名前。ほとんどの場合、これが「root」です。ISPConfigをカスタマイズする場合は、お好みで設定してください。また、MariaDBのセットアップでルートユーザーの名前も設定されます。- デフォルト:
root
- デフォルト:
ispconfig_mysql_database
: MariaDBセットアップで初期化され、ISPConfigから使用されるデータベースです。- デフォルト:
dbISPConfig
- デフォルト:
ispconfig_mysql_ispconfig_user
: MySQLデータベース内に作成されるユーザー。- デフォルト:
ISPConfig
- デフォルト:
ispconfig_mysql_port
: MariaDBが使用するポート。データベースの初期化にも使用されます。- デフォルト:
3306
- デフォルト:
ispconfig_mysql_charset
: データベースの文字セット。- デフォルト:
utf8
- デフォルト:
ispconfig_http_server
: ISPConfigサイトの背後で実行されるHTTPサーバーを設定します。- デフォルト:
apache
- デフォルト:
ispconfig_ispconfig_port
: ウェブサイトが使用するポート。- デフォルト:
8080
- デフォルト:
ispconfig_ispconfig_use_ssl
: ISPConfigに接続する際にSSLを使用します。- デフォルト:
y
- デフォルト:
ispconfig_join_multiserver_setup
: 複数のサーバーに参加します。- デフォルト:
n
- デフォルト:
ispconfig_mysql_master_hostname
: マスターMySQLデータベースの場所。ほとんどの場合「localhost」で十分です。- デフォルト:
localhost
- デフォルト:
ispconfig_configure_mail
: ISPConfigのためのMailmanセットアップ。- デフォルト:
y
- デフォルト:
ispconfig_configure_jailkit
: ISPConfigのためのJailkitセットアップ。- デフォルト:
y
- デフォルト:
ispconfig_configure_ftp
: ISPConfigのためのPureFTPセットアップ。- デフォルト:
y
- デフォルト:
ispconfig_configure_dns
: ISPConfigのためのDNSセットアップ。- デフォルト:
y
- デフォルト:
ispconfig_configure_nginx
: ISPConfigのためのNGINXセットアップ。- デフォルト:
n
- デフォルト:
ispconfig_configure_apache
: ISPConfigのためのApacheセットアップ。- デフォルト:
y
- デフォルト:
ispconfig_configure_firewall
: ISPConfigのためのファイアウォールセットアップ。- デフォルト:
y
- デフォルト:
ispconfig_install_ispconfig_web_interface
: ISPConfigのためのWebインターフェースセットアップ。- デフォルト:
y
- デフォルト:
ispconfig_do_backup
: ISPConfigのためのバックアップセットアップ。- デフォルト:
yes
- デフォルト:
ispconfig_mysql_master_database
: ISPConfig用の情報が含まれるデータベース。- デフォルト:
dbISPConfig
- デフォルト:
ispconfig_reconfigure_permissions_in_master_database
: データベース内でISPConfigに必要な権限を設定します。- デフォルト:
no
- デフォルト:
ispconfig_reconfigure_services
: すべてのサービスを再構成します。- デフォルト:
yes
- デフォルト:
ispconfig_create_new_ispconfig_ssl_cert
: 新しい証明書を作成します(必要ありません)。- デフォルト:
no
- デフォルト:
ispconfig_reconfigure_crontab
: cronjobを設定します。- デフォルト:
yes
- デフォルト:
ispconfig_configure_webserver
: ウェブサーバーを設定します。quota_mounts
: クオータが監視するディレクトリのリストです。- デフォルト:
/
- デフォルト:
クオータ
defaults/main.yml内のquota_mounts
のリストには、クオータを有効にするためにfstabファイルで編集されるすべてのディレクトリが含まれます。リストが空の場合、クオータは有効になりません。このリストは、プレイブックでクオータ変数を追加することで上書きできます(「ロール変数」セクションを参照)。お使いのマシンのカーネルにクオータモジュールが含まれていない場合、リストは空のままにしておく必要があります。これは、linux-awsカーネルを使用するAWSマシンに関するものです。
複数のPHPバージョン
インストールする複数のPHPバージョンをvars/main.ymlに指定できます。
例示のプレイブック
これは、プレイブックを設定する方法の例です。
- role: inoxio.ispconfig3
mail_admin_email: email@your-company.com
mail_base_domain: your-company.com
ispconfig_hostname: ispconfig.your-company.com
roundcube_hostname: mail.your-company.de
ロール変数に記載されているその他の設定は、defaults/main.ymlに見つけることができます。
ISPConfigロールのすべての設定は、Apache2セットアップの設定ファイルから取得されます。
詳細については、こちらのリンクを参照してください。
ISPConfigのautoinstall.phpに例の設定を見つけることができます。
VMとして開始し、Moleculeでテストを実行
すべての情報は https://Molecule.readthedocs.io/en/latest/ から取得されています。すべてを一つの場所にまとめるのは便利です。
これにより、VMの状態に気を使わずに実際の仮想マシン上でAnsibleロールを実行できます。
ロールを開始し、テスト環境を実行するには、Moleculeが必要です。 以下に、すべてを設定し、テストを実行する方法を説明します。
- virtualenvをインストール
- virtualenvをインストール
sudo apt install virtualenv
- フォルダ内にvirtualenvを作成
virtualenv --no-site-packages .venv
インストールされたすべてのパッケージがここに保存されます。これにより、システムのパッケージが乱雑になるのを防ぎます。
- virtualenvをインストール
- virtualenvを起動
- このコマンドは、コンソールを再起動するたび、または新しいセッションに入るたびに実行します。
source .venv/bin/activate
- Moleculeパッケージをインストール
pip3 install Molecule ansible
- 使用するドライバーのPython APIをインストールする必要があります。このロールの場合、Vagrantになります。
- コンソール行の先頭に
(.venv)
が表示されたらこのコマンドを実行します。 pip install python-vagrant
これらはMoleculeを開始する前に満たすべき要件です。次に、テスト用ロールを設定する方法を説明します。
テストを実行
テストを実行するのは非常に簡単です。上記のステップ2で見たように、venvに入って実行します。
Molecule test
これにより、自動的にドライバー(ほとんどの場合DockerまたはVagrant)をセットアップし、冪等性テストや自作のテストを実行します。
新しいロール
Molecule init role -r new-role -d vagrant
これにより、新しいVagrantロール new-role
が初期化され、Vagrantの標準設定が含まれます。代わりにDockerや他のサポートされている仮想化方法をドライバーとして設定することもできます。
Moleculeのアップグレード
注:Moleculeは比較的新しいため、更新が行われる可能性があります。そのため、定期的に実行することをお勧めします。
pip install --upgrade Molecule
Moleculeとプレイブックの例
ここでは、テストシナリオについての Molecule.yml
と Playbook.yml
の構造を示します。
Molecule.yml
---
dependency:
name: galaxy
driver:
name: vagrant
provider:
name: virtualbox
lint:
name: yamllint
platforms:
- name: instance
box: ubuntu/bionic64
instance_raw_config_args:
- "vm.hostname = 'web.my.net'"
memory: 4096
provisioner:
name: ansible
lint:
name: ansible-lint
enabled: false
scenario:
name: default
test_sequence:
# - lint
- destroy
# - dependency
- syntax
- create
- prepare
- converge
- idempotence
# - side_effect
- verify
- destroy
verifier:
name: testinfra
lint:
name: flake8
ここに、プロジェクトで使用されるMolecule.yml
があり、使用されるドライバーとその設定(メモリなど)を見ることができます。重要な点として、ホスト名を設定するためのタスクに必要なことを示すために、instance_raw_config_args
を利用して設定されていることがわかります。
Vagrantから直接異なるボックスを使用したり、リンクからロードしたりできます。この種の変更については、Moleculeのドキュメントを参照してください。
Playbook.yml
を見ると、通常のロール呼び出しと似ていますが、名前が異なります。完全な例は以下の例のプレイブックにあります。
Playbook.yml
---
- name: Converge
hosts: all
roles:
- role: inoxio.ispconfig3
***
***
Molecule
このセクションでは、Moleculeに関する結論を述べます。これは最初のセットアップでした。
Moleculeでの最初の実行は、ドライバーとしてDockerを使用しました。この方法では、すぐに問題が発生しました。 Dockerの性質とこのロールの複雑さによるものでした。 これは、コンテナ内で読み込まれていないサービスがあり、PIDが異なることから始まりました。 したがって、テストフレームワークに合わせてコードを適応させるのは楽しくないという結論に至りました。
これにより、Vagrantをドライバーとして使用する選択が残りました。これにより、完全な仮想環境がなくても問題が解決され、すべてがスムーズに実行されます。
このセットアップには大きな問題はなく、必要なポイントをすべてテストしました。
ロールでMoleculeを含めたい場合は、次の小さなリストに従ってください。
- 最初はクリーンな状態で始め、ロールをMoleculeで作成して、定期的にテストできるようにします。
- Dockerを使用したい場合は、ロールがあまり複雑でないことを確認し、ロールをDockerに適応させる必要がないことを確認してください。
Installs and customizes ISPConfig 3 on Ubuntu Bionic
ansible-galaxy install inoxio.ispconfig3