diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 5ceb386..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -venv diff --git a/README.md b/README.md index da23734..c3d04b6 100644 --- a/README.md +++ b/README.md @@ -4,18 +4,10 @@ Ansible role to manage a [Forgejo](https://forgejo.org/) instance. ## Installation -Use Ansible Galaxy to install the role locally: +Clone the repository in your local Ansible roles directory: ``` -ansible-galaxy role install git+https://git.riou.xyz/jriou/jriou.forgejo.git -``` - -Or use a requirements.yml file: - -```yaml -roles: - - src: git+https://git.riou.xyz/jriou/jriou.forgejo.git - type: git +git clone https://git.riou.xyz/jriou/ansible-role-forgejo.git ~/.ansible/roles/forgejo ``` See [Storing and finding @@ -31,267 +23,8 @@ Then define at least `forgejo_db_password` with a strong and secure password, encrypted using [ansible-vault](https://docs.ansible.com/ansible/latest/cli/ansible-vault.html). +See list of [default variables](defaults/main.yml). -## Table of Content - - -* [Role variables](#variables) - * [`forgejo_server`](#variable-forgejo_server) - * [`forgejo_version`](#variable-forgejo_version) - * [`forgejo_home_dir`](#variable-forgejo_home_dir) - * [`forgejo_config_dir`](#variable-forgejo_config_dir) - * [`forgejo_web_port`](#variable-forgejo_web_port) - * [`forgejo_ssh_port`](#variable-forgejo_ssh_port) - * [`forgejo_db_username`](#variable-forgejo_db_username) - * [`forgejo_db_password`](#variable-forgejo_db_password) - * [`forgejo_db_database`](#variable-forgejo_db_database) - * [`forgejo_mailer`](#variable-forgejo_mailer) - * [`forgejo_service`](#variable-forgejo_service) - * [`forgejo_manage_iptables`](#variable-forgejo_manage_iptables) - * [`forgejo_allowed_sources`](#variable-forgejo_allowed_sources) - * [`forgejo_runners_version`](#variable-forgejo_runners_version) - * [`forgejo_runners_config_dir`](#variable-forgejo_runners_config_dir) - * [`forgejo_runners_instance`](#variable-forgejo_runners_instance) - * [`forgejo_runners`](#variable-forgejo_runners) - - - -## Role variables - -The following variables can be configured for this role: - -| Variable | Type | Required | Default | Description (abstract) | -|----------|------|----------|---------|------------------------| -| `forgejo_server` | `bool` | No | `true` | Enable the server mode | -| `forgejo_version` | `int` | No | `13` | Version of the Forgejo binaries | -| `forgejo_home_dir` | `path` | No | `"/var/lib/forgejo"` | Path to the home directory | -| `forgejo_config_dir` | `path` | No | `"/etc/forgejo"` | Path to the configuration directory | -| `forgejo_web_port` | `int` | No | `3000` | Port to listen for the web UI | -| `forgejo_ssh_port` | `int` | No | `222` | Port to listen for SSH | -| `forgejo_db_username` | `str` | No | `"forgejo"` | Name of the user in the database | -| `forgejo_db_password` | `str` | Yes | N/A | Password of the user in the database | -| `forgejo_db_database` | `str` | No | `"forgejo"` | Name of the database | -| `forgejo_mailer` | `dict` | No | N/A | Configure the mailer to send e-mail notifications

Define a `enabled` key with a boolean to enable the mailer

Define a `from` key with the source e-mail address

See [Email setup](https://forgejo.org/docs/latest/admin/setup/email/) | -| `forgejo_service` | `dict` | No | N/A | Configure service settings

See [Service](https://forgejo.org/docs/latest/admin/config-cheat-sheet/#service-service) | -| `forgejo_manage_iptables` | `bool` | No | `false` | Configure iptables rules | -| `forgejo_allowed_sources` | `list` | No | N/A | List of IP ranges to allow when `forgejo_manage_iptables` is enabled | -| `forgejo_runners_version` | `str` | No | `"9.1.1"` | Version of the runners | -| `forgejo_runners_config_dir` | `path` | No | `"/etc/forgejo-runners"` | Path to the configuration directory of the runners | -| `forgejo_runners_instance` | `str` | No | N/A | URL of the Forgejo instance to register the runners | -| `forgejo_runners` | `dict` | No | N/A | List of runners to configure

The key is the name of the repository on the instance

The value is the token | - -### `forgejo_server` - -[*⇑ Back to ToC ⇑*](#toc) - -Enable the server mode - -- **Type**: `bool` -- **Required**: No -- **Default**: `true` - - - -### `forgejo_version` - -[*⇑ Back to ToC ⇑*](#toc) - -Version of the Forgejo binaries - -- **Type**: `int` -- **Required**: No -- **Default**: `13` - - - -### `forgejo_home_dir` - -[*⇑ Back to ToC ⇑*](#toc) - -Path to the home directory - -- **Type**: `path` -- **Required**: No -- **Default**: `"/var/lib/forgejo"` - - - -### `forgejo_config_dir` - -[*⇑ Back to ToC ⇑*](#toc) - -Path to the configuration directory - -- **Type**: `path` -- **Required**: No -- **Default**: `"/etc/forgejo"` - - - -### `forgejo_web_port` - -[*⇑ Back to ToC ⇑*](#toc) - -Port to listen for the web UI - -- **Type**: `int` -- **Required**: No -- **Default**: `3000` - - - -### `forgejo_ssh_port` - -[*⇑ Back to ToC ⇑*](#toc) - -Port to listen for SSH - -- **Type**: `int` -- **Required**: No -- **Default**: `222` - - - -### `forgejo_db_username` - -[*⇑ Back to ToC ⇑*](#toc) - -Name of the user in the database - -- **Type**: `str` -- **Required**: No -- **Default**: `"forgejo"` - - - -### `forgejo_db_password` - -[*⇑ Back to ToC ⇑*](#toc) - -Password of the user in the database - -- **Type**: `str` -- **Required**: Yes - - - -### `forgejo_db_database` - -[*⇑ Back to ToC ⇑*](#toc) - -Name of the database - -- **Type**: `str` -- **Required**: No -- **Default**: `"forgejo"` - - - -### `forgejo_mailer` - -[*⇑ Back to ToC ⇑*](#toc) - -Configure the mailer to send e-mail notifications - -Define a `enabled` key with a boolean to enable the mailer - -Define a `from` key with the source e-mail address - -See [Email setup](https://forgejo.org/docs/latest/admin/setup/email/) - -- **Type**: `dict` -- **Required**: No - - - -### `forgejo_service` - -[*⇑ Back to ToC ⇑*](#toc) - -Configure service settings - -See [Service](https://forgejo.org/docs/latest/admin/config-cheat-sheet/#service-service) - -- **Type**: `dict` -- **Required**: No - - - -### `forgejo_manage_iptables` - -[*⇑ Back to ToC ⇑*](#toc) - -Configure iptables rules - -- **Type**: `bool` -- **Required**: No -- **Default**: `false` - - - -### `forgejo_allowed_sources` - -[*⇑ Back to ToC ⇑*](#toc) - -List of IP ranges to allow when `forgejo_manage_iptables` is enabled - -- **Type**: `list` -- **Required**: No - - - -### `forgejo_runners_version` - -[*⇑ Back to ToC ⇑*](#toc) - -Version of the runners - -- **Type**: `str` -- **Required**: No -- **Default**: `"9.1.1"` - - - -### `forgejo_runners_config_dir` - -[*⇑ Back to ToC ⇑*](#toc) - -Path to the configuration directory of the runners - -- **Type**: `path` -- **Required**: No -- **Default**: `"/etc/forgejo-runners"` - - - -### `forgejo_runners_instance` - -[*⇑ Back to ToC ⇑*](#toc) - -URL of the Forgejo instance to register the runners - -- **Type**: `str` -- **Required**: No - - - -### `forgejo_runners` - -[*⇑ Back to ToC ⇑*](#toc) - -List of runners to configure - -The key is the name of the repository on the instance - -The value is the token - -- **Type**: `dict` -- **Required**: No - - - - - ## Usage @@ -300,7 +33,7 @@ Example of a basic forgejo.yml playbook: ```yaml - hosts: forgejo roles: - - jriou.forgejo + - forgejo ``` Then run the playbook: diff --git a/defaults/main.yml b/defaults/main.yml index cfb6503..8a59374 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,120 +1,26 @@ --- - -# Enable the server mode -# -# - Type: bool -# - Required: No -# - Default: true forgejo_server: true - -# Version of the Forgejo binaries -# -# - Type: int -# - Required: No -# - Default: 13 forgejo_version: 13 - -# Path to the home directory -# -# - Type: path -# - Required: No -# - Default: /var/lib/forgejo forgejo_home_dir: /var/lib/forgejo - -# Path to the configuration directory -# -# - Type: path -# - Required: No -# - Default: /etc/forgejo forgejo_config_dir: /etc/forgejo - -# Port to listen for the web UI -# -# - Type: int -# - Required: No -# - Default: 3000 forgejo_web_port: 3000 - -# Port to listen for SSH -# -# - Type: int -# - Required: No -# - Default: 222 forgejo_ssh_port: 222 - -# Name of the user in the database -# -# - Type: str -# - Required: No -# - Default: forgejo forgejo_db_username: forgejo - -# Password of the user in the database -# -# - Type: str -# - Required: Yes forgejo_db_password: CHANGEME - -# Name of the database -# -# - Type: str -# - Required: No -# - Default: forgejo forgejo_db_database: forgejo - -# Configure the mailer to send e-mail notifications -# -# Define a `enabled` key with a boolean to enable the mailer -# -# Define a `from` key with the source e-mail address -# -# See -# -# - Type: dict -# - Required: No +# forgejo_mailer: +# enabled: "true" +# from: email@test.eu +# https://forgejo.org/docs/latest/admin/setup/email/ forgejo_mailer: {} - -# Configure service settings -# -# See -# -# - Type: dict -# - Required: No +# forgejo_service: +# enable_notify_mail: "true" forgejo_service: {} - -# Configure iptables rules -# -# - Type: bool -# - Required: No -# - Default: false forgejo_manage_iptables: false - -# List of IP ranges to allow when `forgejo_manage_iptables` is enabled -# -# - Type: list -# - Required: No forgejo_allowed_sources: [] - -# Version of the runners -# -# - Type: str -# - Required: No -# - Default: 9.1.1 forgejo_runners_version: 9.1.1 - -# Path to the configuration directory of the runners -# -# - Type: path -# - Required: No -# - Default: /etc/forgejo-runners forgejo_runners_config_dir: /etc/forgejo-runners - -# List of runners to configure -# -# The key is the name of the repository on the instance -# -# The value is the token -# -# - Type: dict -# - Required: No +# forgejo_runners_instance: +# forgejo_runners: +# repository: token forgejo_runners: {} diff --git a/meta/argument_specs.yml b/meta/argument_specs.yml deleted file mode 100644 index 8c82211..0000000 --- a/meta/argument_specs.yml +++ /dev/null @@ -1,106 +0,0 @@ ---- -argument_specs: - main: - short_description: Install and configure a Forgejo instance - description: - - Install and configure a [Forgejo](https://forgejo.org/) instance. - author: - - jriou - options: - forgejo_server: - description: - - Enable the server mode - type: bool - default: true - - forgejo_version: - description: - - Version of the Forgejo binaries - type: int - default: 13 - - forgejo_home_dir: - description: - - Path to the home directory - type: path - default: /var/lib/forgejo - - forgejo_config_dir: - description: - - Path to the configuration directory - type: path - default: /etc/forgejo - - forgejo_web_port: - description: - - Port to listen for the web UI - type: int - default: 3000 - - forgejo_ssh_port: - description: - - Port to listen for SSH - type: int - default: 222 - - forgejo_db_username: - description: - - Name of the user in the database - default: forgejo - - forgejo_db_password: - description: - - Password of the user in the database - required: true - - forgejo_db_database: - description: - - Name of the database - default: forgejo - - forgejo_mailer: - description: - - Configure the mailer to send e-mail notifications - - Define a `enabled` key with a boolean to enable the mailer - - Define a `from` key with the source e-mail address - - See [Email setup](https://forgejo.org/docs/latest/admin/setup/email/) - type: dict - - forgejo_service: - description: - - Configure service settings - - See [Service](https://forgejo.org/docs/latest/admin/config-cheat-sheet/#service-service) - type: dict - - forgejo_manage_iptables: - description: - - Configure iptables rules - type: bool - default: false - - forgejo_allowed_sources: - description: - - List of IP ranges to allow when `forgejo_manage_iptables` is enabled - type: list - - forgejo_runners_version: - description: - - Version of the runners - default: 9.1.1 - - forgejo_runners_config_dir: - description: - - Path to the configuration directory of the runners - type: path - default: /etc/forgejo-runners - - forgejo_runners_instance: - description: - - URL of the Forgejo instance to register the runners - - forgejo_runners: - description: - - List of runners to configure - - The key is the name of the repository on the instance - - The value is the token - type: dict diff --git a/meta/main.yml b/meta/main.yml index 94ae890..3f5647c 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -1,18 +1,3 @@ --- dependencies: - role: geerlingguy.docker - -galaxy_info: - role_name: jriou.forgejo - author: jriou - description: Ansible role to manage a Forgejo instance - license_file: LICENSE - min_ansible_version: 2.18 - platforms: - - name: Debian - versions: - - bullseye - - bookworm - - trixie - galaxy_tags: - - forgejo diff --git a/tasks/deploy-server.yml b/tasks/deploy-server.yml index a2c7dbf..7f13938 100644 --- a/tasks/deploy-server.yml +++ b/tasks/deploy-server.yml @@ -1,8 +1,4 @@ --- -- name: check database password - ansible.builtin.assert: - that: forgejo_db_password is defined - - name: create directories ansible.builtin.file: state: directory