Skip to content

Commit

Permalink
feat: Add registry role (#8)
Browse files Browse the repository at this point in the history
  • Loading branch information
konradasb authored Nov 12, 2023
1 parent de8171a commit 5f05790
Show file tree
Hide file tree
Showing 9 changed files with 182 additions and 0 deletions.
27 changes: 27 additions & 0 deletions roles/registry/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# registry

Ansible role to install and configure [distribution/registry](https://github.com/distribution/distribution).

## Requirements

None.

## Dependencies

None.

## Role Variables

Refer to [defaults/main.yml](defaults/main.yml) for a list of variables along with documentation.

## Example Playbook

```yaml
- hosts: all
roles:
- role: hostinger.core.registry
```
## License
See [LICENSE](../../LICENSE)
21 changes: 21 additions & 0 deletions roles/registry/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
registry_version: 2.8.3
registry_url: |
https://github.com/distribution/distribution/releases/download/v{{ registry_version }}/registry_{{ registry_version }}_{{ registry_os }}_{{ registry_arch }}.tar.gz
registry_arch: amd64
registry_os: linux
registry_install_dir: /opt/registry/{{ registry_version }}
registry_owner: root
registry_group: root
registry_config_dir: /etc/registry
registry_name: default
registry_config:
version: 0.1
log:
level: debug
storage:
filesystem:
rootdirectory: /var/lib/registry
http:
addr: localhost:5000
secret: asecretforlocaldevelopment
9 changes: 9 additions & 0 deletions roles/registry/handlers/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
- name: Reload systemd
ansible.builtin.systemd:
daemon_reload: true

- name: Restart registry
ansible.builtin.systemd:
name: registry@{{ registry_name }}
state: restarted
19 changes: 19 additions & 0 deletions roles/registry/meta/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
galaxy_info:
role_name: registry
author: hostinger
description: Ansible role to install and configure distribution/registry
license: license (MIT)
min_ansible_version: "2.10"
platforms:
- name: Fedora
versions:
- all
- name: Debian
versions:
- all
- name: Ubuntu
versions:
- all
galaxy_tags:
- registry
7 changes: 7 additions & 0 deletions roles/registry/molecule/default/converge.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
- name: Converge
hosts:
- all

roles:
- registry
19 changes: 19 additions & 0 deletions roles/registry/molecule/default/molecule.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
dependency:
name: galaxy
driver:
name: docker
platforms:
- name: default
image: geerlingguy/docker-${MOLECULE_DISTRO:-ubuntu2204}-ansible:latest
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
command: ${MOLECULE_DOCKER_COMMAND:-""}
cgroupns_mode: host
pre_build_image: true
privileged: true
platform: amd64
provisioner:
name: ansible
playbooks:
converge: ${MOLECULE_PLAYBOOK:-converge.yml}
63 changes: 63 additions & 0 deletions roles/registry/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
---
- name: Create directories
ansible.builtin.file:
name: "{{ item }}"
mode: 0755
owner: "{{ registry_owner }}"
group: "{{ registry_group }}"
state: directory
loop:
- "{{ registry_install_dir }}"
- "{{ registry_config_dir }}"

- name: Download tarball
ansible.builtin.get_url:
url: "{{ registry_url }}"
dest: "{{ registry_install_dir }}/registry.tar.gz"
mode: 0644
owner: "{{ registry_owner }}"
group: "{{ registry_group }}"
timeout: 30

- name: Unarchive tarball
ansible.builtin.unarchive:
src: "{{ registry_install_dir }}/registry.tar.gz"
remote_src: true
dest: "{{ registry_install_dir }}"
creates: "{{ registry_install_dir }}/registry"
owner: "{{ registry_owner }}"
group: "{{ registry_group }}"

- name: Create symlink to binary
ansible.builtin.file:
src: "{{ registry_install_dir }}/registry"
dest: /usr/local/bin/registry
mode: 0755
state: link
force: true

- name: Template service file
ansible.builtin.template:
src: registry.service.j2
dest: /etc/systemd/system/[email protected]
mode: 0644
owner: root
group: root
notify:
- Reload systemd

- name: Template config file
ansible.builtin.template:
src: config.yml.j2
dest: "{{ registry_config_dir }}/{{ registry_name }}.yml"
mode: 0644
owner: "{{ registry_owner }}"
group: "{{ registry_group }}"
notify:
- Restart registry

- name: Enable and start service
ansible.builtin.service:
name: registry@{{ registry_name }}
enabled: true
state: started
3 changes: 3 additions & 0 deletions roles/registry/templates/config.yml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{{ ansible_managed | comment }}

{{ registry_config | to_nice_yaml(indent=2) }}
14 changes: 14 additions & 0 deletions roles/registry/templates/registry.service.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{{ ansible_managed | comment }}

[Unit]
Description=Registry
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/registry serve {{ registry_config_dir }}/%i.yml
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target

0 comments on commit 5f05790

Please sign in to comment.