diff --git a/README.rst b/README.rst index d198d7f..2874375 100644 --- a/README.rst +++ b/README.rst @@ -3,6 +3,8 @@ apt-cacher Formulas to install the apt-cacher package or to configure clients to use a apt-cacher proxy. +It also supports apt-cacher-ng, the successor of apt-cacher: +https://www.unix-ag.uni-kl.de/~bloch/acng .. note:: @@ -12,6 +14,7 @@ use a apt-cacher proxy. Requirements ------------ +apt-cacher requires apache formula (apt-cacher-ng does not, as it runs in standalone mode) `apache-formula `_ Available states @@ -29,3 +32,13 @@ Available states --------------------- Sets up the system to use the apt-cacher server as the caching proxy + +``apt-cacher.ng.server`` +------- + + Install and configure apt-cacher-ng + +``apt-cacher.ng.client`` +------------ + + Sets up the system to use the apt-cacher-ng server as the caching proxy diff --git a/apt-cacher/ng/client.sls b/apt-cacher/ng/client.sls new file mode 100644 index 0000000..dcc8c55 --- /dev/null +++ b/apt-cacher/ng/client.sls @@ -0,0 +1,14 @@ +{% if grains['os_family'] == 'Debian' %} +{% from "apt-cacher/ng/map.jinja" import apt_cacher_ng with context %} +{%- if apt_cacher_ng.server_address %} + +{{ apt_cacher_ng.client_config }}: + file: + - managed + - user: root + - group: root + - mode: '644' + - source: salt://apt-cacher/ng/files/client.conf + - template: jinja +{%- endif %} +{% endif %} diff --git a/apt-cacher/ng/files/client.conf b/apt-cacher/ng/files/client.conf new file mode 100644 index 0000000..91152cc --- /dev/null +++ b/apt-cacher/ng/files/client.conf @@ -0,0 +1,2 @@ +{% from "apt-cacher/ng/map.jinja" import apt_cacher_ng with context %} +Acquire::http::Proxy "http://{{ apt_cacher_ng.server_address }}:{{ apt_cacher_ng.server_port }}"; diff --git a/apt-cacher/ng/files/security.conf b/apt-cacher/ng/files/security.conf new file mode 100644 index 0000000..9ebc00b --- /dev/null +++ b/apt-cacher/ng/files/security.conf @@ -0,0 +1,12 @@ + +# This file contains confidential data and should be protected with file +# permissions from being read by untrusted users. +# +# NOTE: permissions are fixated with dpkg-statoverride on Debian systems. +# Read its manual page for details. + +# Basic authentication with username and password, required to +# visit pages with administrative functionality. Format: username:password +{% from "apt-cacher/ng/map.jinja" import apt_cacher_ng with context %} +AdminAuth: {{ apt_cacher_ng.admin_account }}:{{ apt_cacher_ng.admin_passwd }} + diff --git a/apt-cacher/ng/files/server.conf b/apt-cacher/ng/files/server.conf new file mode 100644 index 0000000..7fa6948 --- /dev/null +++ b/apt-cacher/ng/files/server.conf @@ -0,0 +1,5 @@ +{% from "apt-cacher/ng/map.jinja" import apt_cacher_ng with context %} +BindAddress: {{ apt_cacher_ng.server_bind_address }} +CacheDir: {{ apt_cacher_ng.server_cache_dir }} +LogDir: {{ apt_cacher_ng.server_log_dir }} +Port: {{ apt_cacher_ng.server_port }} diff --git a/apt-cacher/ng/map.jinja b/apt-cacher/ng/map.jinja new file mode 100644 index 0000000..4dd1209 --- /dev/null +++ b/apt-cacher/ng/map.jinja @@ -0,0 +1,18 @@ +{% set apt_cacher_ng = salt['grains.filter_by']({ + 'Debian': { + 'server_address': 'localhost', + 'server_bind_address': '0.0.0.0', + 'server_port': '3142', + 'server_config': '/etc/apt-cacher-ng/zzz_acng.conf', + 'server_cache_dir': '/var/cache/apt-cacher-ng', + 'server_log_dir': '/var/log/apt-cacher-ng', + 'user': 'apt-cacher-ng', + 'group': 'apt-cacher-ng', + 'pkg': 'apt-cacher-ng', + 'service': 'apt-cacher-ng', + 'credentials': '/etc/apt-cacher-ng/security.conf', + 'client_config': '/etc/apt/apt.conf.d/80proxy', + 'admin_account': 'root', + 'admin_passwd': 'admin' + }, +}, merge=salt['pillar.get']('apt_cacher_ng')) %} diff --git a/apt-cacher/ng/server.sls b/apt-cacher/ng/server.sls new file mode 100644 index 0000000..685a4a4 --- /dev/null +++ b/apt-cacher/ng/server.sls @@ -0,0 +1,50 @@ +{% if grains['os_family'] == 'Debian' %} +{% from "apt-cacher/ng/map.jinja" import apt_cacher_ng with context %} + +apt-cacher-ng: + pkg: + - installed + - name: {{ apt_cacher_ng.pkg }} + service: + - running + - name: {{ apt_cacher_ng.service }} + - enable: True + - watch: + - pkg: {{ apt_cacher_ng.pkg }} + - file: {{ apt_cacher_ng.credentials }} + - file: {{ apt_cacher_ng.server_config }} + - file: {{ apt_cacher_ng.server_cache_dir }} + - file: {{ apt_cacher_ng.server_log_dir }} + +{{ apt_cacher_ng.server_config }}: + file: + - managed + - user: root + - group: root + - mode: '644' + - source: salt://apt-cacher/ng/files/server.conf + - template: jinja + +{{ apt_cacher_ng.server_cache_dir }}: + file: + - directory + - user: {{ apt_cacher_ng.user }} + - group: {{ apt_cacher_ng.group }} + - mode: '2755' + +{{ apt_cacher_ng.server_log_dir }}: + file: + - directory + - user: {{ apt_cacher_ng.user }} + - group: {{ apt_cacher_ng.group }} + - mode: '2755' + +{{ apt_cacher_ng.credentials }}: + file: + - managed + - user: {{ apt_cacher_ng.user }} + - group: {{ apt_cacher_ng.group }} + - mode: '600' + - source: salt://apt-cacher/ng/files/security.conf + - template: jinja +{% endif %} diff --git a/pillar.client.example b/pillar.client.example deleted file mode 100644 index 90300c1..0000000 --- a/pillar.client.example +++ /dev/null @@ -1,2 +0,0 @@ -apt_cacher: - host: cacher.mycompany.com diff --git a/pillar.example b/pillar.example new file mode 100644 index 0000000..51e55b6 --- /dev/null +++ b/pillar.example @@ -0,0 +1,23 @@ +apt_cacher: + host: cacher.mycompany.com + admin_email: admin@mycompany.com + +apt_cacher_ng: + # Setting up server_address is the minimal configuration requirement. + # Others options has default sane values (see map.jinja). + # server_address is the address access by apt-cacher-ng clients. + # It could be an IPv4 or a FQDN; This address MUST be resolvable by clients. + server_address: pkgproxy.example.com + + # Server binds to this address. + # It could be the same value as server_address (in most cases). + server_bind_address: 192.168.33.10 + + server_port: 3142 + cache_dir: /var/cache/apt-cacher-ng + log_dir: /var/log/apt-cacher-ng + + # Credentials for apt-cacher-ng Web management interface. + # http://:/acng-report.html + admin_account: root + admin_passwd: admin diff --git a/pillar.server.example b/pillar.server.example deleted file mode 100644 index 9ce995d..0000000 --- a/pillar.server.example +++ /dev/null @@ -1,2 +0,0 @@ -apt_cacher: - admin_email: admin@mycompany.com