diff --git a/roles/nerdctl/README.md b/roles/nerdctl/README.md new file mode 100644 index 0000000..23d0a4a --- /dev/null +++ b/roles/nerdctl/README.md @@ -0,0 +1,27 @@ +# nerdctl + +Ansible role to install and configure [nerdctl](https://github.com/containerd/nerdctl). + +## 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.nerdctl +``` + +## License + +See [LICENSE](../../LICENSE) diff --git a/roles/nerdctl/defaults/main.yml b/roles/nerdctl/defaults/main.yml new file mode 100644 index 0000000..b40f1ff --- /dev/null +++ b/roles/nerdctl/defaults/main.yml @@ -0,0 +1,9 @@ +--- +nerdctl_version: 1.7.0 +nerdctl_url: | + https://github.com/containerd/nerdctl/releases/download/v{{ nerdctl_version }}/nerdctl-{{ nerdctl_version }}-{{ nerdctl_os }}-{{ nerdctl_arch }}.tar.gz +nerdctl_arch: amd64 +nerdctl_os: linux +nerdctl_install_dir: /opt/nerdctl/{{ nerdctl_version }} +nerdctl_owner: root +nerdctl_group: root diff --git a/roles/nerdctl/meta/main.yml b/roles/nerdctl/meta/main.yml new file mode 100644 index 0000000..d36c552 --- /dev/null +++ b/roles/nerdctl/meta/main.yml @@ -0,0 +1,19 @@ +--- +galaxy_info: + role_name: nerdctl + author: hostinger + description: Ansible role for installing nerdctl + license: license (MIT) + min_ansible_version: "2.10" + platforms: + - name: Fedora + versions: + - all + - name: Debian + versions: + - all + - name: Ubuntu + versions: + - all + galaxy_tags: + - nerdctl diff --git a/roles/nerdctl/molecule/default/converge.yml b/roles/nerdctl/molecule/default/converge.yml new file mode 100644 index 0000000..d1a6ef5 --- /dev/null +++ b/roles/nerdctl/molecule/default/converge.yml @@ -0,0 +1,7 @@ +--- +- name: Converge + hosts: + - all + + roles: + - nerdctl diff --git a/roles/nerdctl/molecule/default/molecule.yml b/roles/nerdctl/molecule/default/molecule.yml new file mode 100644 index 0000000..3dc76ce --- /dev/null +++ b/roles/nerdctl/molecule/default/molecule.yml @@ -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} diff --git a/roles/nerdctl/tasks/main.yml b/roles/nerdctl/tasks/main.yml new file mode 100644 index 0000000..af53e84 --- /dev/null +++ b/roles/nerdctl/tasks/main.yml @@ -0,0 +1,34 @@ +--- +- name: Create directory + ansible.builtin.file: + name: "{{ nerdctl_install_dir }}" + mode: 0755 + owner: "{{ nerdctl_owner }}" + group: "{{ nerdctl_group }}" + state: directory + +- name: Download tarball + ansible.builtin.get_url: + url: "{{ nerdctl_url }}" + dest: "{{ nerdctl_install_dir }}/nerdctl.tar.gz" + mode: 0644 + owner: "{{ nerdctl_owner }}" + group: "{{ nerdctl_group }}" + timeout: 30 + +- name: Unarchive tarball + ansible.builtin.unarchive: + src: "{{ nerdctl_install_dir }}/nerdctl.tar.gz" + remote_src: true + dest: "{{ nerdctl_install_dir }}" + creates: "{{ nerdctl_install_dir }}/nerdctl" + owner: "{{ nerdctl_owner }}" + group: "{{ nerdctl_group }}" + +- name: Create symlink to binary + ansible.builtin.file: + src: "{{ nerdctl_install_dir }}/nerdctl" + dest: /usr/local/bin/nerdctl + mode: 0755 + state: link + force: true