lae.netbox

以下は、あなたが提供したテキストの日本語翻訳です。


:role-author: lae :role-name: netbox :role: {role-author}.{role-name} :gh-name: {role-author}/ansible-role-{role-name} :netbox-version: 3.7.3 = {role} :toc: :toc-placement: preamble ifdef::env-github[] :tip-caption: :bulb: :warning-caption: :warning: endif::[]

ifdef::env-github[] image:https://img.shields.io/badge/role-{role}-blue?style=for-the-badge[Ansible Galaxy Role, link=https://galaxy.ansible.com/{role-author}/{role-name}] endif::env-github[]

この役割は、IPアドレス管理 (IPAM) とデータセンターインフラストラクチャ管理 (DCIM) ツールである https://github.com/netbox-community/netbox[NetBox] を展開し、設定します。

この役割は、リリースターボールまたはGitを使用して、アプリケーションサーバーとしてuWSGIを利用してNetBoxを独自の仮想環境内に展開します。

CentOS 7,8 / RHEL 9 / Debian 9,10,11,12 / Ubuntu 16, 18, 20 および 22をサポートしています。

この役割は、NetBoxのドキュメントのインストール手順とは若干異なります。主な違いは以下の通りです。

  • supervisordの代わりにディストリビューション提供のsystemdを使用
  • gunicornの代わりにuWSGIをアプリケーションサーバーとして使用
  • NetBox/uWSGIサービスを強化(templates/netbox.service.j2を参照)
  • アップグレードや設定変更時にホットリロードが行われる

== クイックスタート

Ansibleがインストールされていて、デフォルト設定を使用している場合:

[source, bash, subs="attributes"]

ansible-galaxy install geerlingguy.postgresql davidwittman.redis {role} ansible-galaxy collection install community.postgresql ansible-playbook -i your.server.fqdn, ~/.ansible/roles/{role}/examples/playbook_single_host_deploy.yml -K


これにより、your.server.fqdn にNetBoxとPostgreSQLが展開されます。完了するとポート80でアクセス可能になります。必要に応じて修正してください。詳細は下記をお読みください。

Vagrantを使用して、localhost:8080でNetBoxを起動することもできます。

[source, bash, subs="attributes"]

ansible-galaxy install geerlingguy.postgresql davidwittman.redis {role} ansible-galaxy collection install community.postgresql cd ~/.ansible/roles/{role}/ vagrant up


== サポート・貢献

この役割に貢献したい場合は、DEVELOPING.mdを読んで、このリポジトリのワークフローと開発環境の設定に関する(任意の)指示を確認してください。この役割は、Travis CIでテストする際にlae.travis-lxc役割を使用します。この定義はtests/ディレクトリにあります。

ifeval::["{role-author}" == "lae"] サポートが必要な場合や、この役割に貢献したいが指導を求めたい場合は、@laeのDiscordサーバーで聞いてください:https://discord.gg/cjqr6Fg endif::[]

== 前提条件

=== PostgreSQL

この役割はPostgreSQLサーバーをセットアップしません(必要に応じてデータベースは作成します)。したがって、別途PostgreSQLサーバーをセットアップし、データベースユーザーを作成する必要があります。 「例のプレイブック」セクションを確認してください。

さらに、Ansible 2.10以上では、community.postgresqlコレクションをインストールする必要があるかもしれません。 これをプレイブックのrequirements.ymlファイルに指定することをお勧めします。 例:

[source, yaml]


collections:

  • name: community.postgresql version: 3.4.0

警告:NetBox v2.2.0以上は、最低でもPostgreSQL 9.4が必要ですが、これはあなたのディストリビューションのリポジトリにはないかもしれません。 このための役割を使用した方が良いでしょう。

=== Redis

この役割はRedisインスタンスを設定または管理しません。プレイブック内のpre_tasksのタスクを介してredis-serverをインストールするか、 https://galaxy.ansible.com/davidwittman/redis[DavidWittman.redis]のようなRedisインストール役割を使用することをお勧めします。

警告:NetBox v2.9.0以上は、最低でもRedis 4.0が必要です。上記で提案された役割はデフォルトで2.8バージョンになるため、 役割変数内で新しいバージョンを指定するか、別の方法でRedis 4.0以上をデプロイしてください。

== 役割変数

ヒント:examples/で、さまざまなシナリオのために作成できるプレイブックの例を確認してください。

警告:数個の役割変数は必須です。以下の太字の required を確認してください。

[source, yaml]

netbox_stable: false netbox_git: false


上記の変数のいずれかをtrueに設定する必要があります。netbox_stable は、GitHubからtarballリリースを抽出してデプロイするように役割に指示し、netbox_gitはNetBoxのgitリポジトリをクローンするように指示します - これらは相互排他的です。

[source, yaml, subs="attributes"]

netbox_stable_version: {netbox-version} netbox_stable_uri: "https://github.com/netbox-community/netbox/archive/v{{ netbox_stable_version }}.tar.gz"


これらは、特定のバージョンを指定(例えば、インクリメントすることでアップグレードをトリガー)したり、別の場所にあるtarballを使用してデプロイするように構成できます。 リリース内の何かを修正する必要がある場合や、ファイアウォールの背後でローカルにデプロイする場合に便利です。

[source, yaml]

netbox_git_version: develop netbox_git_uri: "https://github.com/netbox-community/netbox.git"


netbox_git_versionはgitリポジトリ内の有効なリファレンスのいずれかで指定できます。 netbox_git_uriはオンプレミスのリポジトリやフォークに指向できます。

[source, yaml]

netbox_superuser_enabled: true netbox_superuser_username: admin #netbox_superuser_password: changeme netbox_superuser_email: admin@localhost netbox_superuser_create_token: false


これらの変数は、ローカルのスーパーユーザーアカウントを構成するために使用されます。作成したくない場合は無効にしてください(例えばLDAPを使用している場合 - ただし、この場合でもローカルのスーパーユーザーを持つことが有益な場合があります)。 有効にする場合は、スーパーユーザーのパスワードを設定することが必須です。この役割は、ユーザーが存在しない場合は新しいスーパーユーザーを作成し、スーパーユーザーでない場合や異なるメールまたはパスワードを持っている場合は既存のユーザーを変更します。(はい、パスワードを忘れた場合にスーパーユーザーのパスワードをリセットするためにこれを使用できます。)netbox_superuser_create_tokenを使用して、 必要に応じてスーパーユーザー用のランダムなAPIトークンを生成できます。

[source, yaml]

netbox_database: netbox netbox_database_user: netbox #netbox_database_password: changeme #netbox_database_host: localhost netbox_database_port: 5432 #netbox_database_socket: /var/run/postgresql


UNIXソケットを介して通信するためにソケットディレクトリを設定するか、ホスト/パスワードを設定することが必須です(TCP/IPを使用するため)。 データベースを構成する際の詳細については、「例のプレイブック」セクションを参照してください。

これらはconfiguration.py内のDATABASEを構成するために使用されます。

[source, yaml]

netbox_database_conn_age: 300

データベース接続を単一のリクエストより長くオープンに保つために、netbox_database_conn_ageを好みの最大接続年齢(秒単位)に設定します。 通常、300秒(5分)がスタートするのに良い数字です。

[source, yaml]

netbox_database_maintenance: postgres

Postgresデータベースが、Netboxで設定されたユーザーに特定のテーブルへのアクセスのみを許可するように構成されている場合、接続確認に使用されるデフォルトデータベースを、デフォルトのpostgres以外の異なるテーブルに置き換えるために、netbox_database_maintenanceを設定できます。 これは、デフォルトではすべてのpostgresデータベースに空のテーブルですが、一部の構成ではこのテーブルへのアクセスがブロックされることがあるため、別のテーブル(例えばnetbox_prod)を代わりに使用します。

[source, yaml]

例の使用法、デフォルトは空の辞書

netbox_database_options: sslmode: require isolation_level: 3


他のPostgreSQLパラメータのキーワードを設定する必要がある場合は、ここでそれを行うことができます。 例えば、https://docs.djangoproject.com/en/3.1/ref/databases/#isolation-level[隔離レベル]などのケースでは、数値値を使用する必要があります: psycopg2.extensions.ISOLATION_LEVEL_SERIALIZABLEの代わりに3を使用します。 自分が本当に何をしているかわかっている場合のみ、ここに追加してください。

[source, yaml]

netbox_redis_host: 127.0.0.1 netbox_redis_port: 6379 netbox_redis_password: '' netbox_redis_database: 0 netbox_redis_default_timeout: 300 netbox_redis_ssl_enabled: false netbox_redis_insecure_skip_tls_verify: false

netbox_redis_cache_host: "{{ netbox_redis_host }}" netbox_redis_cache_port: "{{ netbox_redis_port }}" netbox_redis_cache_database: 1 netbox_redis_cache_password: "{{ netbox_redis_password }}" netbox_redis_cache_default_timeout: "{{ netbox_redis_default_timeout }}" netbox_redis_cache_ssl_enabled: "{{ netbox_redis_ssl_enabled }}" netbox_redis_cache_insecure_skip_tls_verify: "{{ netbox_redis_insecure_skip_tls_verify }}"


これは、configuration.py内のREDIS設定辞書を設定します。キャッシュデータベースをウェブフックデータベースから分けたい場合は、2番目の変数セットを使用してください。

[source, yaml]

netbox_redis_sentinels:

  • { host: '192.168.0.1', port: '5000' },
  • { host: '192.168.0.2', port: '5000' } netbox_redis_sentinel_service: 'netbox' netbox_redis_password: '' netbox_redis_database: 0 netbox_redis_default_timeout: 300 netbox_redis_ssl_enabled: false

netbox_redis_cache_sentinels: "{{ netbox_redis_sentinels }}" netbox_redis_cache_sentinel_service: "{{ netbox_redis_sentinel_service }}" netbox_redis_cache_database: 1 netbox_redis_cache_password: "{{ netbox_redis_password }}" netbox_redis_cache_default_timeout: "{{ netbox_redis_default_timeout }}" netbox_redis_cache_ssl_enabled: "{{ netbox_redis_ssl_enabled }}"


これを、複数のノードを持つセントラルアーキテクチャでRedisがインストールされている場合に使用します。キャッシュデータベースをウェブフックデータベースから分けたい場合は、2番目の変数セットを使用してください。

[source, yaml]

netbox_rqworker_processes: 1

システムdサービスによって開始されるリクエストキューのワーカー数を指定します。 デフォルトの1のままにしておくことができますが、大量のレポートやスクリプト、その他のバックグラウンドタスクがある場合は増やすことを検討してください。

[source, yaml]

netbox_config: #SECRET_KEY: ALLOWED_HOSTS: - localhost - 127.0.0.1 #NAPALM_USERNAME: #NAPALM_PASSWORD: MEDIA_ROOT: "{{ netbox_shared_path }}/media" REPORTS_ROOT: "{{ netbox_shared_path }}/reports" SCRIPTS_ROOT: "{{ netbox_shared_path }}/scripts"


これは、NetBoxのconfiguration.pyをテンプレート化するために使用される設定の辞書です。 http://netbox.readthedocs.io/en/stable/configuration/mandatory-settings/[必須設定] および http://netbox.readthedocs.io/en/stable/configuration/optional-settings/[オプション設定] NetBoxのドキュメントから詳細を確認し、このリポジトリ内のexamples/netbox_config.ymlもご覧ください。

ここでSECRET_KEYを定義する必要はありません。この役割は、自動的に{{ netbox_shared_path }}/generated_secret_keyに1つを作成します。 その後、このファイルからSECRET_KEYが読み取られ、次回の実行時まで保持されます。後でプレイブックでこれを設定することはできます。複数のNetBoxインスタンスを1つのロードバランサーの背後にデプロイする場合は、SECRET_KEYを定義する必要があります。

この役割でNAPALM統合を有効にした場合も、ここでNAPALMの資格情報を設定する必要があります。

MEDIA_ROOT/REPORTS_ROOT/SCRIPTS_ROOTは、NetBoxドキュメントでは必須ではありませんが、この役割では、アップグレード時にこれらのファイルが失われるのを防ぐために必須です(この役割はNetBoxをインプレースでアップグレードしません)。恒久的で、アップグレード時に失われないディレクトリに設定する必要があります(上記のデフォルトは問題なく使用できます)。この役割は、これらのディレクトリを作成し、netbox_userで設定されたものへの所有権を変更しようとします。

[source, yaml]

netbox_scripts: [] netbox_reports: []


https://netbox.readthedocs.io/en/stable/additional-features/custom-scripts/[スクリプト] および https://netbox.readthedocs.io/en/stable/additional-features/reports/[レポート] NetBox内で使用するためにアップロードします。これらはsrc属性を持つ辞書のリストで、スクリプトまたはレポートのローカルパスを指定し、name属性でモジュール名(スクリプト/レポート名)を指定します。例:

[source, yaml]

netbox_scripts:

  • src: netbox_scripts/migrate_application.py name: migrate_application netbox_reports:
  • src: netbox_reports/devices.py name: devices

これにより、プレイブックディレクトリのnetbox_scripts/migrate_application.py{{ netbox_config.SCRIPTS_ROOT }}/migrate_application.pyにコピーされ、 netbox_reports/devices.py{{ netbox.config.REPORTS_ROOT }}/devices.pyにコピーされます。

[source, yaml]

netbox_pip_packages: []

例:

netbox_pip_packages:


これは、NetBoxの仮想環境内にpipでインストールする追加のパッケージのリストです。 pipが理解できる有効なアーティファクトを指定できます。

ここにプラグインをリストする場合は、適切なプラグイン設定もnetbox_config役割変数内に含めてください。詳細については、https://netbox.readthedocs.io/en/stable/plugins/[プラグイン]をお読みください。

[source, yaml]

netbox_user: netbox netbox_group: netbox netbox_home: /srv/netbox netbox_releases_path: "{{ netbox_home }}/releases" netbox_git_repo_path: "{{ netbox_releases_path }}/git-repo" netbox_git_deploy_path: "{{ netbox_releases_path }}/git-deploy" netbox_stable_path: "{{ netbox_releases_path }}/netbox-{{ netbox_stable_version }}" netbox_current_path: "{{ netbox_home }}/current" netbox_shared_path: "{{ netbox_home }}/shared"


これらは、アプリケーションユーザーおよびアプリケーションストレージの場所を変更するために変更できるすべてのデプロイメント詳細です。netbox_releases_pathは、これまでにデプロイしたすべてのNetBoxリリースを保存します。netbox_git_repo_pathはGitリポジトリがクローンされる場所で、触らない状態にする必要があります - netbox_git_deploy_pathは、netbox_git_versionを使用してgit archiveが抽出される場所です。 netbox_stable_pathはリリースターボールから抽出されたフォルダーです。netbox_current_pathは選択されたリリースにシンボリックリンクされ、NetBoxがインストールされている場所としてサービス/設定ファイルで使用されます。netbox_shared_pathは、設定ファイルやログなどの「共有」コンテンツを保存することを目的としています。

[source, yaml]

netbox_socket: "127.0.0.1:8000" netbox_protocol: http netbox_processes: "{{ ansible_processor_vcpus }}"


netbox_socketは、uWSGIサービスがバインドするアドレスを定義し、有効な https://www.freedesktop.org/software/systemd/man/systemd.socket.html#ListenStream=[ListenStream]アドレスとして設定できます(systemdソケット)。`netbox_protocol`を`uwsgi`に設定すると、uWSGIがWSGIと通信します(たとえば、nginxをロードバランサーとして使用する場合)。`netbox_processes`は、uWSGIが要求を処理するために立ち上げるNetBoxワーカーの数を定義します。

[source, yaml]

netbox_application_log: "file:{{ netbox_shared_path }}/application.log" netbox_requests_log: "file:{{ netbox_shared_path }}/requests.log"


これにより、ログがどこに保存されるかが定義されます。外部のロギング機能を使用することも可能ですが、 http://uwsgi-docs.readthedocs.io/en/latest/Logging.html#pluggable-loggers[uWSGIがサポートする限り]。アプリケーションログは`logger`に、リクエストログは`req-logger`に対応します。

[source, yaml]

netbox_ldap_enabled: false netbox_ldap_config_template: netbox_ldap_config.py.j2


netbox_ldap_enabledtrueに設定すると、NetBoxのLDAP認証を設定します。 netbox_ldap_config_templateは、テンプレートのパスで、デフォルトではAnsibleはプレイブックのtemplates/ディレクトリ内を検索します。 examples/内に例があります。また、netbox_config.REMOTE_AUTH_BACKENDnetbox.authentication.LDAPBackendに設定する必要があります。

ヒント:デフォルトでは、ローカル(非LDAP)スーパーユーザーはこの役割によって作成されます。これが望ましくない場合は、netbox_superuser_enabledをオフにすることを検討してください。

[source, yaml]

netbox_napalm_enabled: false netbox_napalm_packages:

  • napalm

netbox_napalm_enabledをオンにすると、NetBoxでNAPALM統合が有効になります。NAPALMを使用するには、netbox_config変数にNAPALM_USERNAMENAPALM_PASSWORDを定義する必要があります。netbox_napalm_packagesに追加のNAPALM Pythonライブラリをリストすることで追加できます(例:napalm-eos)。

[source, yaml] netbox_metrics_enabled: false

netbox_metrics_enabledtrueに設定すると、アプリケーションメトリクス(https://github.com/korfuri/django-prometheus[django-prometheusを介して])が有効になります。これにより、正しいメトリクス処理のための関連する設定が追加されます。 (https://netbox.readthedocs.io/en/stable/additional-features/prometheus-metrics/[詳細はこちら])。

[source, yaml]

netbox_metrics_dir: netbox_metrics netbox_metrics_path: "/run/{{ netbox_metrics_dir }}"


メトリクスファイルが保存されるディレクトリ名はnetbox_metrics_dirで設定できます。ただし、netbox_metrics_pathはデフォルトのまま(上記のもの)にしておく必要があります。これはsystemdおよびRuntimeDirectoryパラメーター(このパラメーターは/runのみを指す)で機能するためです。

[source, yaml] netbox_keep_uwsgi_updated: false

netbox_keep_uwsgi_updatedtrueに設定すると、uWSGIサーバーが最新のリリースであることを保証します。そうでない場合、uWSGIはプレイブックの次回の実行時には更新されません。

[source, yaml] netbox_uwsgi_options: {}

uwsgi.iniに挿入する追加の設定オプションをここで指定します。これは、キー/バリューの辞書であることが期待されます(例:buffer-size: 65535)。

[source, yaml] netbox_uwsgi_in_venv: false

netbox_uwsgi_in_venvtrueに設定すると、uwsgiはNetBoxと同じ仮想環境にインストールされます。 そうでない場合、使用されたPythonバージョンのライブラリパスにシステム全体にインストールされます(正常/レガシーの動作)。

警告:後のバージョンでは、これがデフォルトになる可能性があります(さらなるクロスプラットフォームテストの後に)。詳細は https://github.com/lae/ansible-role-netbox/issues/144[issue #144]で確認してください。

[source, yaml] netbox_install_epel: true

netbox_install_epelfalseに設定すると、この役割がFedora EPELをインストールしないようになります。これは、企業の環境でシステムのリポジトリが企業によって管理/ミラーリングされている場合に便利です。

[source, yaml]

netbox_packages: [] netbox_python_packages: [] netbox_python_binary: /usr/bin/python{{ some version }} netbox_ldap_packages: []


これらの変数は、ターゲットディストリビューションに基づいて動的に生成されます。vars/ディレクトリの下でこれらのデフォルトを確認できます。これらの変数を使用して、サポートされていないオペレーティングシステムをターゲットにするか(サポートを追加するためにPRをオープンすることもできます!)、デプロイに使用するカスタムPythonインタープリター(たとえば、PyPy)を指定できます。ただし、この役割によるサポートは、代替Pythonインストールに対しては制限される場合があります。

== 例のプレイブック

以下は、PostgreSQLをインストールし、@geerlingguyの堅牢なPostgres役割でユーザーを作成した後、デフォルトのnetboxデータベースユーザーを使用してPostgresサーバーと対話するためにローカルのUNIXソケットでNetBoxを展開および設定するプレイブックの例です。

[source, yaml, subs="attributes"]

  • hosts: netbox.idolactiviti.es become: yes roles:
    • geerlingguy.postgresql
    • davidwittman.redis
    • {role} vars: netbox_stable: true netbox_database_socket: "{{ postgresql_unix_socket_directories[0] }}" netbox_superuser_password: netbox netbox_socket: "0.0.0.0:80" netbox_config: ALLOWED_HOSTS:
      • netbox.idolactiviti.es MEDIA_ROOT: "{{ netbox_shared_path }}/media" REPORTS_ROOT: "{{ netbox_shared_path }}/reports" SCRIPTS_ROOT: "{{ netbox_shared_path }}/scripts" postgresql_users:
      • name: "{{ netbox_database_user }}" role_attr_flags: CREATEDB,NOSUPERUSER redis_bind: 127.0.0.1 redis_version: 6.0.9 redis_checksum: sha256:dc2bdcf81c620e9f09cfd12e85d3bc631c897b2db7a55218fd8a65eaa37f86dd

CREATEDB属性に注意してください。

netbox_prod_userというユーザーが作成された状態で、すでに稼働中のPGサーバーがあると仮定し、このユーザーはnetbox_prodというデータベースを所有し、NetBoxをインストールするホストがTCPで認証できるように許可しています:

[source, yaml, subs="attributes"]

  • hosts: netbox.idolactiviti.es become: yes roles:
    • davidwittman.redis
    • {role} vars: netbox_stable: true netbox_superuser_password: netbox netbox_socket: "0.0.0.0:80" netbox_config: ALLOWED_HOSTS:
      • "{{ inventory_hostname }}" MEDIA_ROOT: "{{ netbox_shared_path }}/media" REPORTS_ROOT: "{{ netbox_shared_path }}/reports" SCRIPTS_ROOT: "{{ netbox_shared_path }}/scripts" netbox_database_host: pg-netbox.idolactiviti.es netbox_database_port: 15432 netbox_database: netbox_prod netbox_database_user: netbox_prod_user netbox_database_password: "very_secure_password_for_prod" netbox_database_maintenance: netbox_prod redis_bind: 127.0.0.1 redis_version: 6.0.9 redis_checksum: sha256:dc2bdcf81c620e9f09cfd12e85d3bc631c897b2db7a55218fd8a65eaa37f86dd

examples/ディレクトリを確認してください。

== トラブルシューティング

=== uWSGIによるTCP接続のリセット netbox_protocolhttpに設定されていると、uWSGIは奇妙な動作を示し、TCP接続をランダムにリセットする可能性があります。これは、APIを使用する際に「接続がリセットされました」といったエラーとして表れることがあります。影響を受ける場合は、netbox_protocoluwsgiに切り替え、ロードバランサーを使用するか、次のようにnetbox_uwsgi_optionsを調整してみてください。関連する議論については、https://github.com/lae/ansible-role-netbox/issues/130#issuecomment-847571006[this GitHub issue]を参照してください。 [source, yaml, subs="attributes"]


netbox_uwsgi_options: http-keepalive: "true" http-auto-chunked: "true" add-header: "Connection: Close"



これは、与えられたテキストの日本語へのわかりやすい翻訳です。何か他に知りたいことがあればお知らせください。

プロジェクトについて

Installs and configures NetBox, a DCIM suite, in a production setting.

インストール
ansible-galaxy install lae.netbox
ライセンス
mit
ダウンロード
107.6k
所有者