1. Создание модулей

1.1. Создайте файл init.pp в office

Директория, где создать файл

/etc/puppetlabs/code/environments/production/modules/office/manifests/

Со следующим содержимым

# Class: office
class office {
 
  if $facts['os']['family'] == 'RedHat' or $facts['os']['family'] == 'Centos' or $facts['os']['family'] == 'RedOS' {
    include yumpkg
  }
 
  if $facts['os']['family'] == 'Debian' or $facts['os']['family'] == 'Ubuntu'
  {
    include aptpkg
  }
}

1.2. Создайте файл init.pp в aptpkg

Директория, где создать файл

/etc/puppetlabs/code/environments/production/modules/aptpkg/manifests/

Со следующим содержимым

# Class: apt
class aptpkg {
 
  file { '/etc/apt/sources.list.d/r7.list':
    ensure  => file,
    content => 'deb https://downloads.r7-office.ru/repository/r7-desktop-apt/ buster main',
  }
 
  exec { 'apt_key_import':
    command => 'curl -s https://download.r7-office.ru/repos/RPM-GPG-KEY-R7-OFFICE.public | gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/r7.gpg --import',
    path    => '/usr/bin:/bin:/user/sbin:/sbin',
  }
 
  file {
    'r7.gpg':
    ensure => present,
    path   => '/etc/apt/trusted.gpg.d/r7.gpg',
    mode   => '0644'
  }
 
  exec { 'apt_update':
  command => 'apt update -y',
  path    => '/usr/bin:/bin:/user/sbin:/sbin',
  }
 
  file {
    'r7.conf':
    ensure => present,
    source => 'puppet:///modules/aptpkg/r7.conf',
    path   => '/etc/apt/auth.conf.d/r7.conf',
    mode   => '0600',
  }
 
  exec { 'apt_install_r7-office':
    command => 'apt install -y r7-office',
    path    => '/usr/bin:/bin:/user/sbin:/sbin',
  }
 
  file {
    'license.lickey':
    ensure => present,
    source => 'puppet:///modules/office/license.lickey',
    path   => '/etc/r7-office/license/license.lickey',
  }
}

1.3. Создайте файл init.pp в yumpkg

Директория, где создать файл

/etc/puppetlabs/code/environments/production/modules/yumpkg/manifests/

Со следующим содержимым

# Class: yumpkg
class yumpkg {
  yumrepo { 'r7':
    name      => 'r7',
    baseurl   => 'https://downloads.r7-office.ru/repository/r7-desktop-yum/',
    enabled   => '1',
    gpgcheck  => '1',
    gpgkey    => 'https://download.r7-office.ru/repos/RPM-GPG-KEY-R7-OFFICE.public',
    sslverify => '0',
    username  => 'desktop',
    password  => 'gyxiLab84FByn7sCTd5JY',
  }
 
  exec { 'yum_install_r7-office':
    command => 'yum install -y r7-office',
    path    => '/usr/bin:/bin:/user/sbin:/sbin',
  }
}

2. Создание необходимых файлов

2.1. Создайте файл r7.conf в aptpkg

Директория, где создать файл

/etc/puppetlabs/code/environments/production/modules/aptpkg/files/

Со следующим содержимым:

machine downloads.r7-office.ru
login desktop
password gyxiLab84FByn7sCTd5JY

2.2. Создайте файл r7.repo в yumpkg

Директория, где создать файл

/etc/puppetlabs/code/environments/production/modules/yumpkg/files/

Со следующим содержимым:

[r7]
name=r7
baseurl=https://downloads.r7-office.ru/repository/r7-desktop-yum/
enabled=1
gpgcheck=1
gpgkey=https://download.r7-office.ru/repos/RPM-GPG-KEY-R7-OFFICE.public
sslverify=0
username=desktop
password=gyxiLab84FByn7sCTd5JY

2.3. Лицензия

Поместите файл лицензии в следующей директории

/etc/puppetlabs/code/environments/production/modules/office/license.lickey

3. Настройка foreman

3.1. Выберите необходимый узел или группу узлов и нажмите кнопку Изменить

Распространение десктопных приложений и лицензий к ним через Foreman + Puppet

3.2. Выберите вкладку Puppet ENC

Выберите созданный класс office, включите его, нажав иконку со знаком «Плюс», и нажмите кнопку «Применить»

Распространение десктопных приложений и лицензий к ним через Foreman + Puppet

4. Применение на клиенте

4.1. В ручном режиме командой:

puppet agent -t

4.2. В автоматическом режиме

По умолчанию раз в 30 минут.

4.2.1. Для изменения этого параметра

Добавьте строчку в файл

/etc/puppetlabs/puppet/puppet.conf

Укажите значение в секундах в блоке main

[main]
server = foreman.builder-testad.ru
runinterval = 600