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が必要です。 以下に、すべてを設定し、テストを実行する方法を説明します。

  1. virtualenvをインストール
    • virtualenvをインストール sudo apt install virtualenv
    • フォルダ内にvirtualenvを作成 virtualenv --no-site-packages .venv インストールされたすべてのパッケージがここに保存されます。これにより、システムのパッケージが乱雑になるのを防ぎます。
  2. virtualenvを起動
    • このコマンドは、コンソールを再起動するたび、または新しいセッションに入るたびに実行します。
    • source .venv/bin/activate
  3. 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.ymlPlaybook.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に適応させる必要がないことを確認してください。
インストール
ansible-galaxy install inoxio.ispconfig3
ライセンス
apache-2.0
ダウンロード
200