diff --git a/README.md b/README.md index 7775bfb..05a8542 100755 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # install roles and collections ansible-galaxy install -r requirements.yml -# Install the playbook +# Install the frontend ansible-playbook -i inventory.yaml -e @secrets.enc --ask-vault-pass frontend.yaml # Github runner @@ -13,4 +13,24 @@ ansible-playbook -i inventory.yaml -e @secrets.enc --ask-vault-pass gitea.yaml # graphana + prometheus ansible-playbook -i inventory.yaml -e @secrets.enc --ask-vault-pass monitor.yaml + +# apt-cacheer-ng +ansible-playbook -i inventory.yaml --ask-become-pass apt-cacher-ng.yaml ``` + +To make use of the apt cache, ensure you have a file like this with CACHE_HOST changes to your actual host + +```bash +echo << EOF >> /etc/apt/apt.conf.d/01proxy +Acquire::HTTP::Proxy "http://:3142"; +Acquire::HTTPS::Proxy "false"; +EOF +``` + +or add these to a Dockerfile + +``` +RUN echo 'Acquire::HTTP::Proxy "http://:3142";' >> /etc/apt/apt.conf.d/01proxy \ + && echo 'Acquire::HTTPS::Proxy "false";' >> /etc/apt/apt.conf.d/01proxy +``` + diff --git a/apt-cacher-ng.yaml b/apt-cacher-ng.yaml new file mode 100644 index 0000000..c0a4d6a --- /dev/null +++ b/apt-cacher-ng.yaml @@ -0,0 +1,75 @@ +--- +- name: APT Cache Server + hosts: apt-cacher-ng + + vars: + username: matt + nas_host: 192.168.1.160 + + mounts: + apt_cache: + local: "/var/cache/packages" + remote: "/var/nfs/shared/apt_cache" + + docker_add_repo: true + docker_users: + - "{{ username }}" + + roles: + - role: geerlingguy.git + become: true + - role: geerlingguy.docker + become: true + + + tasks: + - name: Create app directory in home + ansible.builtin.file: + path: "{{ ansible_env.HOME }}/apt-cacher-ng" + state: directory + mode: "0755" + + - name: Copy the apt-cacher-ng compose file to the host + ansible.builtin.copy: + src: apt-cacher-ng/compose.yaml + dest: "{{ ansible_env.HOME }}/apt-cacher-ng/compose.yaml" + + - name: Stop apt-cacher-ng services if running + community.docker.docker_compose_v2: + project_src: "{{ ansible_env.HOME }}/apt-cacher-ng/" + state: absent + ignore_errors: true + + - name: Unmount NFS volumes before creating mountpoint directories + ansible.posix.mount: + path: "{{ item.value.local }}" + state: unmounted + loop: "{{ mounts | dict2items }}" + become: true + + - name: Create mountpoint directories for apt-cacher-ng + ansible.builtin.file: + path: "{{ item.value.local }}" + state: directory + mode: "0755" + loop: "{{mounts | dict2items }}" + become: true + + - name: Mount an NFS volume for cache + ansible.posix.mount: + src: "{{ nas_host }}:{{ item.value.remote }}" + path: "{{ item.value.local }}" + opts: nfsvers=3,proto=tcp,rw + state: mounted + fstype: nfs + loop: "{{ mounts | dict2items }}" + become: true + + + - name: Create and start services + community.docker.docker_compose_v2: + project_src: "{{ ansible_env.HOME }}/apt-cacher-ng/" + state: present + + + diff --git a/apt-cacher-ng/compose.yaml b/apt-cacher-ng/compose.yaml new file mode 100644 index 0000000..13c6c62 --- /dev/null +++ b/apt-cacher-ng/compose.yaml @@ -0,0 +1,14 @@ +--- +services: + apt-cacher-ng: + image: mbentley/apt-cacher-ng + container_name: apt-cacher-ng + init: true + environment: + - PUID=977 + - PGID=988 + ports: + - "3142:3142" + volumes: + - /var/cache/packages/apt-cacher-ng:/var/cache/apt-cacher-ng + restart: always diff --git a/inventory.yaml b/inventory.yaml index 93ccd26..5a90108 100755 --- a/inventory.yaml +++ b/inventory.yaml @@ -25,4 +25,7 @@ all: rpi5-1: {} gitea: hosts: - rpi5-2: {} \ No newline at end of file + rpi5-2: {} + apt-cacher-ng: + hosts: + rpi4-2: {} \ No newline at end of file