
# Copyright 2017-present Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


---
# roles/apt-cacher-ng/tasks

- name: Install apt-cacher-ng with apt
  apt:
    name: "{{ item }}"
    update_cache: yes
    cache_valid_time: 3600
  with_items:
    - apt-cacher-ng

- name: Configure apt-cacher-ng to pass through ssl repos
  when: apt_ssl_sites is defined
  lineinfile:
    'dest=/etc/apt-cacher-ng/acng.conf
    insertafter="^# PassThroughPattern"
    regexp="^PassThroughPattern"
    line="PassThroughPattern: ({{ apt_ssl_sites | join(\"|\")}}):443$"'
  notify:
    restart apt-cacher-ng

- name: Configure local system to use apt-cacher-ng
  template:
    src: "{{ item }}.j2"
    dest: "/etc/apt/apt.conf.d/{{ item }}"
    owner: root
    group: root
    mode: "0644"
  with_items:
    - 02broken-repos
    - 03apt-cacher-ng

