diff --git a/group_vars/create-container-vlan-30.yml b/create-container-vlan-30.yml
similarity index 100%
rename from group_vars/create-container-vlan-30.yml
rename to create-container-vlan-30.yml
diff --git a/deploy_printer_srv.yml b/deploy_printer_srv.yml
new file mode 100644
index 0000000..3275493
--- /dev/null
+++ b/deploy_printer_srv.yml
@@ -0,0 +1,10 @@
+---
+- name: Настройка сервера печати в LXC
+ hosts: all
+ become: yes
+ vars:
+ printer_name: "HP"
+ printer_ip: "192.168.20.249"
+
+ roles:
+ - cups_server
diff --git a/group_vars/all.yml b/group_vars/all.yml
deleted file mode 100644
index 05b1422..0000000
--- a/group_vars/all.yml
+++ /dev/null
@@ -1,78 +0,0 @@
----
-- name: Финальное развертывание Unprivileged LXC (ZFS + VLAN)
- hosts: localhost
- connection: local
- become: yes
- gather_facts: no
- vars:
- # Базовый конфиг (ID маппинг согласно вашему /etc/subuid)
- base_lxc_conf: |
- lxc.include = /usr/share/lxc/config/common.conf
- lxc.include = /usr/share/lxc/config/debian.common.conf
- lxc.arch = x86_64
- # Маппинг для безопасного root (хост: 1,000,000 -> контейнер: 0)
- lxc.idmap = u 0 1000000 65536
- lxc.idmap = g 0 1000000 65536
- # Сетевой интерфейс
- lxc.net.0.type = veth
- lxc.net.0.link = br0
- lxc.net.0.flags = up
- lxc.net.0.name = eth0
-
- tasks:
- - name: 1. Мгновенный клон из обновленного шаблона
- shell: "zfs clone pool/lxc/template-debian12@snap0 pool/lxc/{{ item }}"
- loop: [ 'bit-srv-prn', 'mail-bit-it-ru' ]
-
- - name: 2. Настройка Legacy Mountpoint (важно для ZFS + LXC)
- shell: "zfs set mountpoint=legacy pool/lxc/{{ item }}"
- loop: [ 'bit-srv-prn', 'mail-bit-it-ru' ]
-
- - name: 3. Подготовка директорий контейнеров
- file:
- path: "/var/lib/lxc/{{ item }}"
- state: directory
- loop: [ 'bit-srv-prn', 'mail-bit-it-ru' ]
-
- - name: 4. Права на внешние данные почты (UID 1000000)
- file:
- path: /pool/bit-mail-data
- owner: "1000000"
- group: "1000000"
- state: directory
- recurse: yes
-
- - name: 5. Запись конфига ПРИНТЕР (VLAN 30)
- copy:
- dest: /var/lib/lxc/bit-srv-prn/config
- content: |
- {{ base_lxc_conf }}
- lxc.uts.name = bit-srv-prn
- lxc.rootfs.path = zfs:pool/lxc/bit-srv-prn
- lxc.net.0.veth.vlan.id = 30
-
- - name: 6. Запись конфига ПОЧТА (VLAN 60 + Mount)
- copy:
- dest: /var/lib/lxc/mail-bit-it-ru/config
- content: |
- {{ base_lxc_conf }}
- lxc.uts.name = mail-bit-it-ru
- lxc.rootfs.path = zfs:pool/lxc/mail-bit-it-ru
- lxc.net.0.veth.vlan.id = 60
- lxc.mount.entry = /pool/bit-mail-data var/mail none bind,create=dir 0 0
-
- - name: 7. Запуск контейнеров
- shell: "lxc-start -n {{ item }} -d"
- loop: [ 'bit-srv-prn', 'mail-bit-it-ru' ]
-
- - name: 8. Проверка статуса (ждем загрузку)
- pause:
- seconds: 5
-
- - name: 9. Итоговая таблица
- shell: "lxc-ls -f"
- register: lxc_final
-
- - name: Результат
- debug:
- msg: "{{ lxc_final.stdout_lines }}"
diff --git a/group_vars/all.yml-old b/group_vars/all.yml-old
deleted file mode 100644
index cd967b8..0000000
--- a/group_vars/all.yml-old
+++ /dev/null
@@ -1,69 +0,0 @@
----
-- name: Развертывание Unprivileged LXC (Финал)
- hosts: localhost
- connection: local
- become: yes
- gather_facts: no
- vars:
- # Конфиг уже включает ID Mapping
- base_conf: |
- lxc.include = /usr/share/lxc/config/common.conf
- lxc.include = /usr/share/lxc/config/debian.common.conf
- lxc.arch = x86_64
- lxc.idmap = u 0 100000 65536
- lxc.idmap = g 0 100000 65536
- lxc.net.0.type = veth
- lxc.net.0.link = br0
- lxc.net.0.flags = up
- lxc.net.0.name = eth0
-
- tasks:
- - name: 1. Очистка старых контейнеров
- shell: |
- lxc-stop -n {{ item }} -k || true
- lxc-destroy -n {{ item }} || true
- zfs destroy -r pool/lxc/{{ item }} || true
- loop: [ 'bit-srv-prn', 'mail-bit-it-ru' ]
- failed_when: false
-
- - name: 2. Мгновенный клон ZFS (уже с правами 100000)
- shell: "zfs clone pool/lxc/template-debian12@snap0 pool/lxc/{{ item }}"
- loop: [ 'bit-srv-prn', 'mail-bit-it-ru' ]
-
- - name: 3. Установка legacy mountpoint
- shell: "zfs set mountpoint=legacy pool/lxc/{{ item }}"
- loop: [ 'bit-srv-prn', 'mail-bit-it-ru' ]
-
- - name: 4. Подготовка папок LXC
- file:
- path: "/var/lib/lxc/{{ item }}"
- state: directory
-
-
-loop: [ 'bit-srv-prn', 'mail-bit-it-ru' ]
-
- - name: 5. Права на внешние данные (для почты)
- file:
- path: /pool/bit-mail-data
- owner: "100000"
- group: "100000"
- recurse: yes
-
- - name: 6. Запись конфигов
- copy:
- dest: "/var/lib/lxc/{{ item.name }}/config"
- content: |
- {{ base_conf }}
- lxc.net.0.veth.vlan.id = {{ item.vlan }}
- lxc.rootfs.path = zfs:pool/lxc/{{ item.name }}
- lxc.uts.name = {{ item.name }}
- {% if item.mount is defined %}{{ item.mount }}{% endif %}
- loop:
- - { name: 'bit-srv-prn', vlan: '30' }
- - { name: 'mail-bit-it-ru', vlan: '60', mount: 'lxc.mount.entry = /pool/bit-mail-data var/mail none bind,create=dir 0 0' }
-
- - name: 7. Запуск
- shell: "lxc-start -n {{ item.name }} -d"
- loop:
- - { name: 'bit-srv-prn' }
- - { name: 'mail-bit-it-ru' }
diff --git a/roles/cups_server/files/HP_P2015d.ppd b/roles/cups_server/files/HP_P2015d.ppd
new file mode 100644
index 0000000..fac2ca5
--- /dev/null
+++ b/roles/cups_server/files/HP_P2015d.ppd
@@ -0,0 +1,237 @@
+*PPD-Adobe: "4.3"
+*%%%% PPD file for HP LaserJet p2015d Series with CUPS.
+*%%%% Created by the CUPS PPD Compiler CUPS v2.4.2.
+*% (c) 2008 Copyright HP Development Company, LP
+*FormatVersion: "4.3"
+*FileVersion: "3.22.10"
+*LanguageVersion: English
+*LanguageEncoding: ISOLatin1
+*PCFileName: "hp-laserjet_p2015d_series.ppd"
+*Product: "(HP LaserJet p2015d Printer)"
+*Manufacturer: "HP"
+*ModelName: "HP LaserJet p2015d Series"
+*ShortNickName: "HP LaserJet p2015d Series"
+*NickName: "HP LaserJet p2015d Series, hpcups 3.22.10"
+*PSVersion: "(3010.000) 0"
+*LanguageLevel: "3"
+*ColorDevice: False
+*DefaultColorSpace: Gray
+*FileSystem: False
+*Throughput: "1"
+*LandscapeOrientation: Plus90
+*TTRasterizer: Type42
+*% Driver-defined attributes...
+*RequiresPageRegion All: True
+*cupsEvenDuplex: True
+*hpPrinterLanguage: "ljmono"
+*cupsModelName: "HP LaserJet"
+*1284DeviceID: "MFG:Hewlett-Packard;MDL:hp laserjet p2015d series;DES:hp laserjet p2015d series;"
+*cupsVersion: 2.4
+*cupsModelNumber: 0
+*cupsManualCopies: True
+*cupsFilter: "application/vnd.cups-raster 0 hpcups"
+*cupsLanguages: "en"
+*OpenUI *PageSize/Media Size: PickOne
+*OrderDependency: 10 AnySetup *PageSize
+*DefaultPageSize: Letter
+*PageSize Card3x5/Index Card 3x5in: "<>setpagedevice"
+*PageSize Hagaki/Hagaki 100x148mm: "<>setpagedevice"
+*PageSize Photo4x6/Photo 4x6in: "<>setpagedevice"
+*PageSize A6/A6 105x148mm: "<>setpagedevice"
+*PageSize Photo5x7/Photo 5x7in: "<>setpagedevice"
+*PageSize Card5x8/Index Card 5x8in: "<>setpagedevice"
+*PageSize Oufuku/Oufuku-Hagaki 148x200mm: "<>setpagedevice"
+*PageSize A5/A5 148x210mm: "<>setpagedevice"
+*PageSize B5/B5 176x250mm: "<>setpagedevice"
+*PageSize JB5/JB5 182x257mm: "<>setpagedevice"
+*PageSize Executive/Executive 7.25x10.5in: "<>setpagedevice"
+*PageSize 16k/16k 7.75x10.75in: "<>setpagedevice"
+*PageSize Letter/Letter 8.5x11in: "<>setpagedevice"
+*PageSize A4/A4 210x297mm: "<>setpagedevice"
+*PageSize ExecutiveJIS/Executive (JIS) 8.5x12.986in: "<>setpagedevice"
+*PageSize FLSA/American Foolscap 8.5x13in: "<>setpagedevice"
+*PageSize Legal/Legal 8.5x14in: "<>setpagedevice"
+*PageSize EnvA2/A2 Envelope 4.37x5.75in: "<>setpagedevice"
+*PageSize EnvC6/C6 Envelope 114x162mm: "<>setpagedevice"
+*PageSize EnvChou4/#4 Japanese Envelope 90x205mm: "<>setpagedevice"
+*PageSize EnvMonarch/Monarch Envelope 3.875x7.5in: "<>setpagedevice"
+*PageSize EnvDL/DL Envelope 110x220mm: "<>setpagedevice"
+*PageSize Env10/#10 Envelope 4.12x9.5in: "<>setpagedevice"
+*PageSize EnvChou3/#3 Japanese Envelope 120x235mm: "<>setpagedevice"
+*PageSize EnvC5/C5 Envelope 162x229mm: "<>setpagedevice"
+*PageSize EnvB5/B5 Envelope 176x250mm: "<>setpagedevice"
+*CloseUI: *PageSize
+*OpenUI *PageRegion/Media Size: PickOne
+*OrderDependency: 10 AnySetup *PageRegion
+*DefaultPageRegion: Letter
+*PageRegion Card3x5/Index Card 3x5in: "<>setpagedevice"
+*PageRegion Hagaki/Hagaki 100x148mm: "<>setpagedevice"
+*PageRegion Photo4x6/Photo 4x6in: "<>setpagedevice"
+*PageRegion A6/A6 105x148mm: "<>setpagedevice"
+*PageRegion Photo5x7/Photo 5x7in: "<>setpagedevice"
+*PageRegion Card5x8/Index Card 5x8in: "<>setpagedevice"
+*PageRegion Oufuku/Oufuku-Hagaki 148x200mm: "<>setpagedevice"
+*PageRegion A5/A5 148x210mm: "<>setpagedevice"
+*PageRegion B5/B5 176x250mm: "<>setpagedevice"
+*PageRegion JB5/JB5 182x257mm: "<>setpagedevice"
+*PageRegion Executive/Executive 7.25x10.5in: "<>setpagedevice"
+*PageRegion 16k/16k 7.75x10.75in: "<>setpagedevice"
+*PageRegion Letter/Letter 8.5x11in: "<>setpagedevice"
+*PageRegion A4/A4 210x297mm: "<>setpagedevice"
+*PageRegion ExecutiveJIS/Executive (JIS) 8.5x12.986in: "<>setpagedevice"
+*PageRegion FLSA/American Foolscap 8.5x13in: "<>setpagedevice"
+*PageRegion Legal/Legal 8.5x14in: "<>setpagedevice"
+*PageRegion EnvA2/A2 Envelope 4.37x5.75in: "<>setpagedevice"
+*PageRegion EnvC6/C6 Envelope 114x162mm: "<>setpagedevice"
+*PageRegion EnvChou4/#4 Japanese Envelope 90x205mm: "<>setpagedevice"
+*PageRegion EnvMonarch/Monarch Envelope 3.875x7.5in: "<>setpagedevice"
+*PageRegion EnvDL/DL Envelope 110x220mm: "<>setpagedevice"
+*PageRegion Env10/#10 Envelope 4.12x9.5in: "<>setpagedevice"
+*PageRegion EnvChou3/#3 Japanese Envelope 120x235mm: "<>setpagedevice"
+*PageRegion EnvC5/C5 Envelope 162x229mm: "<>setpagedevice"
+*PageRegion EnvB5/B5 Envelope 176x250mm: "<>setpagedevice"
+*CloseUI: *PageRegion
+*DefaultImageableArea: Letter
+*ImageableArea Card3x5/Index Card 3x5in: "18 14 198 346"
+*ImageableArea Hagaki/Hagaki 100x148mm: "18 14 266 406"
+*ImageableArea Photo4x6/Photo 4x6in: "18 14 270 418"
+*ImageableArea A6/A6 105x148mm: "18 14 279.359985351562 405.760009765625"
+*ImageableArea Photo5x7/Photo 5x7in: "18 14 342 490"
+*ImageableArea Card5x8/Index Card 5x8in: "18 14 342 562"
+*ImageableArea Oufuku/Oufuku-Hagaki 148x200mm: "18 14 549 406"
+*ImageableArea A5/A5 148x210mm: "18 14 401.760009765625 581.440002441406"
+*ImageableArea B5/B5 176x250mm: "18 14 480.959991455078 694.47998046875"
+*ImageableArea JB5/JB5 182x257mm: "18 14 498.239990234375 714.640014648438"
+*ImageableArea Executive/Executive 7.25x10.5in: "18 14 504 742"
+*ImageableArea 16k/16k 7.75x10.75in: "18 14 540 760"
+*ImageableArea Letter/Letter 8.5x11in: "18 14 594 778"
+*ImageableArea A4/A4 210x297mm: "18 14 577.440002441406 827.679992675781"
+*ImageableArea ExecutiveJIS/Executive (JIS) 8.5x12.986in: "18 14 594 922"
+*ImageableArea FLSA/American Foolscap 8.5x13in: "18 14 594 922"
+*ImageableArea Legal/Legal 8.5x14in: "18 14 594 994"
+*ImageableArea EnvA2/A2 Envelope 4.37x5.75in: "18 14 296.640014648438 400"
+*ImageableArea EnvC6/C6 Envelope 114x162mm: "18 14 305.279998779297 445.359985351562"
+*ImageableArea EnvChou4/#4 Japanese Envelope 90x205mm: "18 14 236.880004882812 567.039978027344"
+*ImageableArea EnvMonarch/Monarch Envelope 3.875x7.5in: "18 14 261 526"
+*ImageableArea EnvDL/DL Envelope 110x220mm: "18 14 293.760009765625 609.52001953125"
+*ImageableArea Env10/#10 Envelope 4.12x9.5in: "18 14 279 670"
+*ImageableArea EnvChou3/#3 Japanese Envelope 120x235mm: "18 14 321.839996337891 652"
+*ImageableArea EnvC5/C5 Envelope 162x229mm: "18 14 441 635"
+*ImageableArea EnvB5/B5 Envelope 176x250mm: "18 14 481 695"
+*DefaultPaperDimension: Letter
+*PaperDimension Card3x5/Index Card 3x5in: "216 360"
+*PaperDimension Hagaki/Hagaki 100x148mm: "284 420"
+*PaperDimension Photo4x6/Photo 4x6in: "288 432"
+*PaperDimension A6/A6 105x148mm: "297.359985351562 419.760009765625"
+*PaperDimension Photo5x7/Photo 5x7in: "360 504"
+*PaperDimension Card5x8/Index Card 5x8in: "360 576"
+*PaperDimension Oufuku/Oufuku-Hagaki 148x200mm: "567 420"
+*PaperDimension A5/A5 148x210mm: "419.760009765625 595.440002441406"
+*PaperDimension B5/B5 176x250mm: "498.959991455078 708.47998046875"
+*PaperDimension JB5/JB5 182x257mm: "516.239990234375 728.640014648438"
+*PaperDimension Executive/Executive 7.25x10.5in: "522 756"
+*PaperDimension 16k/16k 7.75x10.75in: "558 774"
+*PaperDimension Letter/Letter 8.5x11in: "612 792"
+*PaperDimension A4/A4 210x297mm: "595.440002441406 841.679992675781"
+*PaperDimension ExecutiveJIS/Executive (JIS) 8.5x12.986in: "612 936"
+*PaperDimension FLSA/American Foolscap 8.5x13in: "612 936"
+*PaperDimension Legal/Legal 8.5x14in: "612 1008"
+*PaperDimension EnvA2/A2 Envelope 4.37x5.75in: "314.640014648438 414"
+*PaperDimension EnvC6/C6 Envelope 114x162mm: "323.279998779297 459.359985351562"
+*PaperDimension EnvChou4/#4 Japanese Envelope 90x205mm: "254.880004882812 581.039978027344"
+*PaperDimension EnvMonarch/Monarch Envelope 3.875x7.5in: "279 540"
+*PaperDimension EnvDL/DL Envelope 110x220mm: "311.760009765625 623.52001953125"
+*PaperDimension Env10/#10 Envelope 4.12x9.5in: "297 684"
+*PaperDimension EnvChou3/#3 Japanese Envelope 120x235mm: "339.839996337891 666"
+*PaperDimension EnvC5/C5 Envelope 162x229mm: "459 649"
+*PaperDimension EnvB5/B5 Envelope 176x250mm: "499 709"
+*MaxMediaWidth: "612"
+*MaxMediaHeight: "1008"
+*HWMargins: 18 14 18 14
+*CustomPageSize True: "pop pop pop <>setpagedevice"
+*ParamCustomPageSize Width: 1 points 72 612
+*ParamCustomPageSize Height: 2 points 288 1008
+*ParamCustomPageSize WidthOffset: 3 points 0 0
+*ParamCustomPageSize HeightOffset: 4 points 0 0
+*ParamCustomPageSize Orientation: 5 int 0 0
+*OpenUI *Duplex/Double-Sided Printing: PickOne
+*OrderDependency: 10 AnySetup *Duplex
+*DefaultDuplex: DuplexNoTumble
+*Duplex DuplexNoTumble/Long Edge (Standard): "<>setpagedevice"
+*Duplex DuplexTumble/Short Edge (Flip): "<>setpagedevice"
+*Duplex None/Off: "<>setpagedevice"
+*CloseUI: *Duplex
+*OpenUI *InputSlot/Media Source: PickOne
+*OrderDependency: 10 AnySetup *InputSlot
+*DefaultInputSlot: Auto
+*InputSlot Auto/Auto-Select: "<>setpagedevice"
+*InputSlot PhotoTray/Photo Tray: "<>setpagedevice"
+*InputSlot Upper/Upper Tray: "<>setpagedevice"
+*InputSlot Lower/Lower Tray: "<>setpagedevice"
+*InputSlot Envelope/Envelope Feeder: "<>setpagedevice"
+*InputSlot LargeCapacity/Large Capacity Tray: "<>setpagedevice"
+*InputSlot Manual/Manual Feeder: "<>setpagedevice"
+*InputSlot MPTray/Multi Purpose Tray: "<>setpagedevice"
+*CloseUI: *InputSlot
+*OpenUI *ColorModel/Output Mode: PickOne
+*OrderDependency: 10 AnySetup *ColorModel
+*DefaultColorModel: Gray
+*ColorModel Gray/Grayscale: "<>setpagedevice"
+*CloseUI: *ColorModel
+*OpenUI *MediaType/Media Type: PickOne
+*OrderDependency: 10 AnySetup *MediaType
+*DefaultMediaType: Plain
+*MediaType Plain/Plain Paper: "<>setpagedevice"
+*CloseUI: *MediaType
+*OpenUI *OutputMode/Print Quality: PickOne
+*OrderDependency: 10 AnySetup *OutputMode
+*DefaultOutputMode: Normal
+*OutputMode Normal/Normal: "<>setpagedevice"
+*OutputMode Draft/Draft (Economy): "<>setpagedevice"
+*OutputMode Best/Best: "<>setpagedevice"
+*CloseUI: *OutputMode
+*OpenGroup: InstallableOptions/Installable Options
+*OpenUI *OptionDuplex/Duplexer Installed: Boolean
+*OrderDependency: 10 AnySetup *OptionDuplex
+*DefaultOptionDuplex: False
+*OptionDuplex False/Not Installed: ""
+*OptionDuplex True/Installed: ""
+*CloseUI: *OptionDuplex
+*CloseGroup: InstallableOptions
+*DefaultFont: Courier
+*Font AvantGarde-Book: Standard "(1.05)" Standard ROM
+*Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM
+*Font AvantGarde-Demi: Standard "(1.05)" Standard ROM
+*Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM
+*Font Bookman-Demi: Standard "(1.05)" Standard ROM
+*Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM
+*Font Bookman-Light: Standard "(1.05)" Standard ROM
+*Font Bookman-LightItalic: Standard "(1.05)" Standard ROM
+*Font Courier: Standard "(1.05)" Standard ROM
+*Font Courier-Bold: Standard "(1.05)" Standard ROM
+*Font Courier-BoldOblique: Standard "(1.05)" Standard ROM
+*Font Courier-Oblique: Standard "(1.05)" Standard ROM
+*Font Helvetica: Standard "(1.05)" Standard ROM
+*Font Helvetica-Bold: Standard "(1.05)" Standard ROM
+*Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM
+*Font Helvetica-Narrow: Standard "(1.05)" Standard ROM
+*Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM
+*Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM
+*Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM
+*Font Helvetica-Oblique: Standard "(1.05)" Standard ROM
+*Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM
+*Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM
+*Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM
+*Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM
+*Font Palatino-Bold: Standard "(1.05)" Standard ROM
+*Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM
+*Font Palatino-Italic: Standard "(1.05)" Standard ROM
+*Font Palatino-Roman: Standard "(1.05)" Standard ROM
+*Font Symbol: Special "(001.005)" Special ROM
+*Font Times-Bold: Standard "(1.05)" Standard ROM
+*Font Times-BoldItalic: Standard "(1.05)" Standard ROM
+*Font Times-Italic: Standard "(1.05)" Standard ROM
+*Font Times-Roman: Standard "(1.05)" Standard ROM
+*Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM
+*Font ZapfDingbats: Special "(001.005)" Special ROM
+*% End of hp-laserjet_p2015d_series.ppd, 15199 bytes.
diff --git a/roles/cups_server/handlers/main.yml b/roles/cups_server/handlers/main.yml
new file mode 100644
index 0000000..3b3bf7c
--- /dev/null
+++ b/roles/cups_server/handlers/main.yml
@@ -0,0 +1,5 @@
+---
+- name: restart_cups
+ service:
+ name: cups
+ state: restarted
diff --git a/roles/cups_server/tasks/main.yml b/roles/cups_server/tasks/main.yml
new file mode 100644
index 0000000..59c0783
--- /dev/null
+++ b/roles/cups_server/tasks/main.yml
@@ -0,0 +1,45 @@
+---
+- name: Установка необходимых пакетов печати
+ apt:
+ name:
+ - cups
+ - hplip
+ - printer-driver-hpcups
+ state: present
+ update_cache: yes
+
+- name: Остановка сервиса CUPS перед обновлением конфига
+ service:
+ name: cups
+ state: stopped
+
+- name: Развертывание конфигурации принтеров из шаблона
+ template:
+ src: printers.conf.j2
+ dest: /etc/cups/printers.conf
+ owner: root
+ group: lp
+ mode: '0600'
+
+- name: Копирование PPD файла (настройки дуплекса и драйвера)
+ copy:
+ src: HP_P2015d.ppd
+ dest: /etc/cups/ppd/HP_P2015d.ppd
+ owner: root
+ group: root
+ mode: '0644'
+
+- name: Развертывание основного конфигурационного файла CUPS
+ template:
+ src: cupsd.conf.j2
+ dest: /etc/cups/cupsd.conf
+ owner: root
+ group: lp
+ mode: '0644'
+ notify: restart_cups
+
+- name: Запуск и включение сервиса CUPS
+ service:
+ name: cups
+ state: started
+ enabled: yes
diff --git a/roles/cups_server/templates/cupsd.conf.j2 b/roles/cups_server/templates/cupsd.conf.j2
new file mode 100644
index 0000000..5ed14c0
--- /dev/null
+++ b/roles/cups_server/templates/cupsd.conf.j2
@@ -0,0 +1,145 @@
+LogLevel warn
+PageLogFormat
+MaxLogSize 0
+ErrorPolicy retry-job
+# Allow remote access
+Port 631
+Listen *:631
+ServerAlias bit-srv-prn.bit-it.ru
+# Share local printers on the local network.
+Browsing On
+BrowseLocalProtocols dnssd
+DefaultAuthType Basic
+WebInterface Yes
+IdleExitTimeout 60
+
+ Order allow,deny
+ Allow 192.168.0.0/16
+ Allow localhost
+
+
+
+ AuthType Default
+ Require user @SYSTEM
+ Order allow,deny
+ Allow 192.168.0.0/16
+ Allow localhost
+
+
+
+
+ AuthType Default
+ Require user @SYSTEM
+ Order allow,deny
+ Allow 192.168.0.0/16
+
+
+
+ AuthType Default
+ Require user @SYSTEM
+ Order allow,deny
+ Allow 192.168.0.0/16
+
+
+
+
+ JobPrivateAccess default
+ JobPrivateValues default
+ SubscriptionPrivateAccess default
+ SubscriptionPrivateValues default
+
+ Order deny,allow
+
+
+ Require user @OWNER @SYSTEM
+ Order deny,allow
+
+
+ AuthType Default
+ Require user @OWNER @SYSTEM
+ Order deny,allow
+
+
+ AuthType Default
+ Require user @SYSTEM
+ Order deny,allow
+
+
+ AuthType Default
+ Require user @SYSTEM
+ Order deny,allow
+
+
+ Require user @OWNER @SYSTEM
+ Order deny,allow
+
+
+ Order deny,allow
+
+
+
+ JobPrivateAccess default
+ JobPrivateValues default
+ SubscriptionPrivateAccess default
+ SubscriptionPrivateValues default
+
+ AuthType Default
+ Order deny,allow
+
+
+ AuthType Default
+ Require user @OWNER @SYSTEM
+ Order deny,allow
+
+
+ AuthType Default
+ Require user @SYSTEM
+ Order deny,allow
+
+
+ AuthType Default
+ Require user @SYSTEM
+ Order deny,allow
+
+
+ AuthType Default
+ Require user @OWNER @SYSTEM
+ Order deny,allow
+
+
+ Order deny,allow
+
+
+
+ JobPrivateAccess default
+ JobPrivateValues default
+ SubscriptionPrivateAccess default
+ SubscriptionPrivateValues default
+
+ AuthType Negotiate
+ Order deny,allow
+
+
+ AuthType Negotiate
+ Require user @OWNER @SYSTEM
+ Order deny,allow
+
+
+ AuthType Default
+ Require user @SYSTEM
+ Order deny,allow
+
+
+ AuthType Default
+ Require user @SYSTEM
+ Order deny,allow
+
+
+ AuthType Negotiate
+ Require user @OWNER @SYSTEM
+ Order deny,allow
+
+
+ Order deny,allow
+
+
diff --git a/roles/cups_server/templates/printers.conf.j2 b/roles/cups_server/templates/printers.conf.j2
new file mode 100644
index 0000000..078283b
--- /dev/null
+++ b/roles/cups_server/templates/printers.conf.j2
@@ -0,0 +1,22 @@
+NextPrinterId 3
+
+PrinterId 2
+UUID urn:uuid:{{ 10000000 | random | hash('md5') | batch(8) | map('join') | join('-') }}
+Info {{ printer_info | default('HP LaserJet P2015d') }}
+MakeModel HP LaserJet p2015d Series, hpcups 3.22.10
+DeviceURI socket://{{ printer_ip }}:9100
+State Idle
+StateTime {{ ansible_date_time.epoch }}
+ConfigTime {{ ansible_date_time.epoch }}
+Type 36884
+Accepting Yes
+Shared Yes
+JobSheets none none
+QuotaPeriod 0
+PageLimit 0
+KLimit 0
+OpPolicy default
+ErrorPolicy retry-job
+Option Duplex DuplexNoTumble
+Option Duplexer True
+