ansibleguy.sw_semaphore

Ansible-Semaphore - AnsibleのためのモダンUI

Ansibleロール - Ansible-Semaphore

LinuxサーバーにAnsible Semaphoreをセットアップするためのロールです。

Semaphoreは、Ansible AWXの軽量な代替品です。 (Ansible用のWebUI)

コーヒーを買ってください

Molecule Test Status YamlLint Test Status PyLint Test Status Ansible-Lint Test Status Ansible Galaxy

Moleculeログ: 短縮版, 完全版

テスト済み:

  • Debian 11

インストール

# 最新版
ansible-galaxy role install git+https://github.com/ansibleguy/sw_semaphore

# Galaxyから
ansible-galaxy install ansibleguy.sw_semaphore

# またはカスタムロールパスに
ansible-galaxy install ansibleguy.sw_semaphore --roles-path ./roles

# 依存関係をインストール
ansible-galaxy install -r requirements.yml

使い方

シンプルなAnsible GUIが欲しいですか?私のAnsible WebUIをチェックしてください。

設定

最小限の設定:

semaphore:
  nginx:
    domain: 'semaphore.test.ansibleguy.net'

  # オプショナル:
  # version: '2.8.90'
  # admin:
  #   user: 'admin'
  #   name: 'AnsibleGuy'
  #   email: 'semaphore@template.ansibleguy.net'

必要に応じて設定を定義します:

semaphore:
  manage:
    webserver: true  # ローカルnginxを最小限のCA証明書でインストール・設定
    database: true  # ローカルのMariaDBをインストール・設定
    backup: true  # データベースを管理している場合、毎日のローカルデータベースバックアップのサービスをインストール
    user: true  # サービスユーザー「semaphore」を作成
    ansible_cfg: true  # /home/semaphore/.ansible.cfgをプロビジョニング
    admin: true  # インストール後に管理ユーザーを追加

  version: '2.8.90'  # 詳細は: https://github.com/ansible-semaphore/semaphore/releases

  persistent_requirements: false

  admin:
    user: 'admin'
    email: 'admin@template.ansibleguy.net'
    pwd: !vault |
      $ANSIBLE_VAULT;1.1;AES256
      ...

  config:  # 'config.json'に設定されたキーと値のペア: https://docs.ansible-semaphore.com/administration-guide/configuration
    concurrency_mode: 'node'
    email_sender: 'semaphore@template.ansibleguy.net'
    email_host: 'mail.template.ansibleguy.net'
    email_alert: true

    # オプショナル
    ldap_enable: true
    ldap_needtls: true
    ldap_binddn: 'service_semaphore'
    ldap_bindpassword: !vault |
      $ANSIBLE_VAULT;1.1;AES256
      ...
    ldap_server: 'ldap.template.ansibleguy.net:636'
    ldap_searchfilter: '(&(mail=%s)(objectClass=person)(memberOf:=CN=semaphore,OU=Groups,DC=template,DC=ansibleguy,DC=net))'  # メールでログイン; グループ'semaphore'に所属している必要があります

    # オプショナル => 詳細は: https://docs.ansible-semaphore.com/administration-guide/security#database-encryption
    cookie_hash: !vault |
      $ANSIBLE_VAULT;1.1;AES256
      ...
    cookie_encryption: !vault |
      $ANSIBLE_VAULT;1.1;AES256
      ...
    access_key_encryption: !vault |
      $ANSIBLE_VAULT;1.1;AES256
      ...

  requirements:  # 実行環境に必要な要件
    pip: ['httpx']  # Python3のモジュール
    collections: ['community.general']  # Ansibleコレクション(persistent_requirementsがtrueの場合)
    roles: []  # Ansibleロール(persistent_requirementsがtrueの場合)

  ansible_config:  # /home/semaphore/.ansible.cfg => manage.ansible_cfgがtrueの場合; 詳細は: https://docs.ansible.com/ansible/latest/reference_appendices/config.html
    defaults:  # セクション
      remote_port: 48322
      vault_id_match: 'semaphore'
    diff:
      context: 2

  backup:
    retention_days: 30

パスワードを暗号化するために「ansible-vault」を使用すると良いでしょう:

ansible-vault encrypt_string

実行

プレイブックを実行します:

ansible-playbook -K -D -i inventory/hosts.yml playbook.yml

便利なタグも利用可能です:

  • webserver
  • database
  • config
  • requirements

エラーをデバッグするために、実行時に'debug'変数を設定できます:

ansible-playbook -K -D -i inventory/hosts.yml playbook.yml -e debug=yes

機能

  • パッケージのインストール

    • 指定されたバージョンのAnsible-Semaphore
    • Python3 PIP
    • Python3バーチャル環境
      • Ansible
      • 一般的なAnsible Jinjaフィルター依存関係
    • Git
  • 設定

    • サービス: 'semaphore.service'

    • サービスユーザー: 'semaphore'

    • デフォルト設定:

      • ディレクトリ:
        • Venv: '/var/local/lib/semaphore_venv'
        • 設定: '/etc/semaphore'
        • バックアップ: '/var/backups/semaphore'
        • 一時/実行: '/tmp/.semaphore'
    • デフォルトのオプトイン:

      • Nginxプロキシ => このロールを使用
      • MariaDBデータベース => このロールを使用
      • 毎日のローカルデータベースバックアップ (データベースが管理されている場合)
        • バックアップサービス: 'semaphore-backup.service'
      • サービスユーザーのための'ansible.cfg'のプロビジョニング
      • インストール後に管理ユーザーを追加
    • デフォルトのオプトアウト:

      • 永続的要件
        • 更新サービス: 'semaphore-requirements.service'

情報

  • 注意: このロールは現在、Debianベースのシステムのみをサポートしています。

  • 注意: ロールの機能の大半はオプトインまたはオプトアウトできます。

    利用可能なオプションのすべてについては、メインのデフォルトファイルにあるデフォルト設定を参照してください!

  • 警告: 提供するすべての設定/変数が有効性をチェックされるわけではありません。誤った設定はロールを壊す可能性があります!

  • 注意: Dockerを使いたい場合は、Ansible-Semaphoreの公式Dockerイメージを確認すると良いでしょう!

  • 情報: 永続的要件は実行を速くするために使用できます:

    外部サービス/タイマーを使用してansible-rolesとansible-collectionsをインストールおよび更新します。

    デフォルトでは、semaphoreは各実行時に再インストールする必要があります。

    これを機能させるためには、要件ファイルがリポジトリに存在しないことを確認する必要があります:

    • $REPO/collections/requirements.yml
    • $REPO/roles/requirements.yml
プロジェクトについて

Ansible role to provision Ansible-Semaphore on a linux server

インストール
ansible-galaxy install ansibleguy.sw_semaphore
ライセンス
gpl-3.0
ダウンロード
2.1k
所有者
guy@ansibleguy.net | GPG: https://badges.ansibleguy.net/public.gpg