Содержание

Skip to end of metadata
Go to start of metadata

Подробнее про службы времени в Astra Linux см. статью
Службы синхронизации времени в ОС Astra Linux

Данная статья применима к:

  • ОС ОН Орёл 2.12.26


Конфигурация стенда

Управляющий узел: master.astra.lan 192.168.230.10

Управляемый узел: agent1.astra.lan 192.168.230.11

Для разрешения IP-адресов обоих узлов используются файл /etc/hosts. При необходимости можно настроить DNS-сервер.

Настройка служб времени с помощью Ansible

Предварительные настройки

1. Устанавливаем Ansible

sudo apt install ansible

2. Настраиваем inventory-файл

По умолчанию inventory-файл hosts располагается в каталоге /etc/ansible/.

Расположение inventory-файла можно задать переменной окружения $ANSIBLE_HOSTS, либо через параметр -i при выполнении команд ansible и ansible-playbook

Изменим содержимое этого файла на следующее:

[agents]
agent1.astra.lan ansible_ssh_host=192.168.230.11

3. Генерируем ssh-ключ и переносим на управляемый узел

ssh-keygen -t rsa -b 4096
ssh-copy-id user@192.168.230.11

4. Проверяем

ansible -m ping agents

agent1.astra.lan | SUCCESS => {
"changed": false,
"ping": "pong"
}

5. Настройка каталогов модулей

Перед установкой puppet-модулей выполнить следующие действия:

  1. Создать каталог /usr/share/puppet/modules:

    sudo mkdir -p /usr/share/puppet/modules

  2. Отредактировать файл /etc/puppetlabs/code/environments/production/environment.conf, добавив в него строку:

    modulepath = /usr/share/puppet/modules:./modules:$basemodulepath
  3. Применить настройки, выполнив команду:

    sudo /opt/puppetlabs/bin/puppet apply --configprint modulepath

  4. Проверить, что новый путь добавился можно следующей командой:

    sudo /opt/puppetlabs/bin/puppet config print modulepath --section master --environment production


Настройка NTP с помощью Ansible

1. Устанавливаем роль

sudo apt install ansible-role-geerlingguy-ntp

2. Создаем Ansible-плэйбук configure_ntp.yml

configure_ntp.yml
---
- hosts: all
  become: yes
  roles:
    - role: geerlingguy.ntp
      vars:
        ntp_timezone: Europe/Moscow
        ntp_manage_config: true
        ntp_servers:
          - "ntp1.vniiftri.ru iburst"
          - "0.ru.pool.ntp.org iburst"
          - "1.ru.pool.ntp.org iburst"
          - "2.ru.pool.ntp.org iburst"
          - "3.ru.pool.ntp.org iburst"

При необходимости можно изменить поведение этой роли. Перечень доступных переменных представлен в таблице:

Переменная

Доступное значение

Значение по умолчанию

Описание

ntp_enabled

true/false

true

Указывает нужно ли запускать службу ntp и включать ее при запуске системы.

ntp_timezone

<string>

Etc / UTC

Задает часовой пояс

ntp_package

ntp/chrony

ntp

Указывает название пакета, обеспечивающего функциональность NTP.

ntp_config_file

<string>

/etc/ntp.conf

Указывает путь к файлу конфигурации NTP. Для RHEL / CentOS 7 и новее значение по умолчанию etc/chrony.conf

ntp_manage_config

true/false

false

Разрешает или запрещает роли управлять файлом конфигурации NTP

ntp_area

<string>

отсутствует

Устанавливает NTP Pool Area

ntp_servers

<list>

- "0 {{'.' + ntp_area, если ntp_area else ''}}. pool.ntp.org iburst "

- "1 {{'.' + ntp_area, если ntp_area else ''}}. pool.ntp.org iburst "

- "2 {{'.' + ntp_area, если ntp_area else ''}}. pool.ntp.org iburst "

- "3 {{'.' + ntp_area, если ntp_area else ''}}. pool.ntp.org iburst "

Устанавливает NTP сервера для использования. Используется только в том случае, если роли разрешено управлять файлом конфигурации NTP.

ntp_restrict

<list>

- "127.0.0.1"

- ":: 1"

Ограничивает доступ NTP к указанным хостам.

ntp_cron_handler_enabled

true/false

false

Разрешает или запрещает перезапуск демона cron после изменения часового пояса

ntp_tinker_panic

true/false

true

Включает или выключает «параноидальный» режим ntp.

3. Выполняем плэйбук

ansible-playbook configure_ntp.yml

PLAY [all] *********************************************************************

TASK [setup] *******************************************************************
ok: [agent1.astra.lan]

TASK [idiv-biodiversity.systemd_timesyncd : set time zone] *********************
ok: [agent1.astra.lan]

TASK [idiv-biodiversity.systemd_timesyncd : remove unneeded ntp clients] *******
changed: [agent1.astra.lan]

TASK [idiv-biodiversity.systemd_timesyncd : install systemd] *******************
ok: [agent1.astra.lan]

TASK [idiv-biodiversity.systemd_timesyncd : configure systemd-timesyncd] *******
changed: [agent1.astra.lan]

TASK [idiv-biodiversity.systemd_timesyncd : restart systemd-timesyncd] *********
changed: [agent1.astra.lan]

TASK [idiv-biodiversity.systemd_timesyncd : enable systemd-timesyncd service and assure it is started] ***
ok: [agent1.astra.lan]

PLAY RECAP *********************************************************************
agent1.astra.lan : ok=7 changed=3 unreachable=0 failed=0 

Настройка systemd-timesyncd с помощью Ansible

1. Уставливаем роль

sudo apt install ansible-role-idiv-biodiversity-systemd-timesyncd

2. Создаем Ansible-плэйбук configure-systemd_timesyncd.yml

configure-systemd_timesyncd.yml
---
  - hosts: all
    become: yes
    roles:
      - role: idiv-biodiversity.systemd_timesyncd
        vars:
          system_timezone: Europe/Moscow
          ntp_servers:
            - "ntp1.vniiftri.ru"
          ntp_fallback_servers:
            - "0.ru.pool.ntp.org"
            - "1.ru.pool.ntp.org"
            - "2.ru.pool.ntp.org"
            - "3.ru.pool.ntp.org"
        tags:
          - systemd-timesyncd


Доступные переменные:

  1. system_timezone — часовой пояс системы;
  2. ntp_servers — список предпочтительных NTP-серверов;
  3. ntp_fallback_servers — списко региональных второстепенных NTP-серверов.


С помощью тэгов можно запускать только определенные части ansible-роли:

  1. timezone — используется, если необходимо просто установить часовой пояс;
  2. systemd-timesyncd — настраивает /etc/systemd/timesyncd.conf и перезапускает при необходимости сервис;
  3. service, service-timesyncd и timesyncd-service — включает и запускает сервис.

3. Выполяем плэйбук

ansible-playbook configure-systemd_timesyncd.yml

PLAY [all] *********************************************************************

TASK [setup] *******************************************************************
ok: [agent1.astra.lan]

TASK [idiv-biodiversity.systemd_timesyncd : set time zone] *********************
ok: [agent1.astra.lan]

TASK [idiv-biodiversity.systemd_timesyncd : remove unneeded ntp clients] *******
changed: [agent1.astra.lan]

TASK [idiv-biodiversity.systemd_timesyncd : install systemd] *******************
ok: [agent1.astra.lan]

TASK [idiv-biodiversity.systemd_timesyncd : configure systemd-timesyncd] *******
changed: [agent1.astra.lan]

TASK [idiv-biodiversity.systemd_timesyncd : restart systemd-timesyncd] *********
changed: [agent1.astra.lan]

TASK [idiv-biodiversity.systemd_timesyncd : enable systemd-timesyncd service and assure it is started] ***
ok: [agent1.astra.lan]

PLAY RECAP *********************************************************************
agent1.astra.lan : ok=7 changed=3 unreachable=0 failed=0

Настройка OpenNTPd с помощью Ansible

1. Уставливаем роль

sudo apt install ansible-role-trombik-openntpd

2. Создаем Ansible-плэйбук configure-openntpd.yml

configure-openntpd.yml
---
- hosts: all
  become: yes
  roles:
    - role: trombik.openntpd
      vars:
        openntpd_flags: -s
        openntpd_config: |
          servers ntp1.vniiftri.ru
          sensor *
          constraints from "https://www.google.com"

Доступные переменные:

  1. openntpd_flags — дополнительный флаг для ntpd;
  2. openntpd_config — содержимое конфигурационного файла /etc/openntpd/ntpd.conf.

3. Выполяем плэйбук

PLAY [all] *********************************************************************


TASK [setup] *******************************************************************
ok: [agent1.astra.lan]


TASK [trombik.openntpd : Include OS-specific variables.] ***********************
skipping: [agent1.astra.lan]


TASK [trombik.openntpd : Include OS-specific variables (AstraLinux).] **********
ok: [agent1.astra.lan]


TASK [trombik.openntpd : Include OS-specific install.] *************************
skipping: [agent1.astra.lan]


TASK [trombik.openntpd : Install openntpd] *************************************
changed: [agent1.astra.lan]


TASK [trombik.openntpd : Create /etc/default/openntpd] *************************
changed: [agent1.astra.lan]


TASK [trombik.openntpd : Enable openntpd] **************************************
ok: [agent1.astra.lan]


TASK [trombik.openntpd : Create ntpd.conf] *************************************
changed: [agent1.astra.lan]


TASK [trombik.openntpd : Start openntpd] ***************************************
ok: [agent1.astra.lan]


TASK [trombik.openntpd : Restart openntpd at the end of the role] **************
changed: [agent1.astra.lan]


RUNNING HANDLER [trombik.openntpd : Restart openntpd] **************************
changed: [agent1.astra.lan]


PLAY RECAP *********************************************************************
agent1.astra.lan : ok=9 changed=5 unreachable=0 failed=0

Настройка служб времени с помощью Puppet

Предварительные настройки

1. Устанавливаем и настраиваем Puppet Server на управляющем узле

sudo apt install puppetserver
sudo ufw allow 8140
sudo systemctl enable puppetserver
sudo systemctl start puppetserver

2. Устанавливаем и настраиваем Puppet Agent на управляемом узле

sudo apt install puppet-agent

В файле /etc/puppetlabs/puppet/puppet.conf добавляем/изменяем в секции main параметры:

server = master.astra.lan
show_diff = true

sudo systemctl enable puppet
sudo systemctl start puppet

3. Подписываем сертификаты на управляющем узле

sudo /opt/puppetlabs/bin/puppetserver ca sign --certname agent1.astra.lan

4. Проверяем на управляемом узле

sudo systemctl stop puppet
sudo /opt/puppetlabs/bin/puppet agent --test

sudo systemctl start puppet

Настройка NTP с помощью Puppet

1. Устанавливаем модуль

sudo apt install puppet-module-puppetlabs-ntp

2. Создаем/редактируем манифест

sudo nano /etc/puppetlabs/code/environments/production/manifests/site.pp


/etc/puppetlabs/code/environments/production/manifests/site.pp
node default {
  class { 'ntp':
    servers => [ 'ntp1.vniiftri.ru', 'ntp2.vniiftri.ru' ],
    restrict  => [
      'default ignore',
      '-6 default ignore',
      '127.0.0.1',
      '-6 ::1'
    ],
  }
}

Используемые параметры:

  1. servers –  список NTP-серверов;
  2. restrict – правила подключения клиентов.

3. Запрашиваем изменения конфигурации на управляющем узле

sudo /opt/puppetlabs/bin/puppet agent --test

Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin

Info: Computing checksum on file /etc/ntp.conf
Info: /Stage[main]/Ntp::Config/File[/etc/ntp.conf]: Filebucketed /etc/ntp.conf to puppet with sum 46220696b8e1a45932533296bddeabc9
Notice: /Stage[main]/Ntp::Config/File[/etc/ntp.conf]/content: content changed '{md5}46220696b8e1a45932533296bddeabc9' to '{md5}093a967a0f58919dd8ba4f7e67feba94'
Info: Class[Ntp::Config]: Scheduling refresh of Class[Ntp::Service]
Info: Class[Ntp::Service]: Scheduling refresh of Service[ntp]
Notice: /Stage[main]/Ntp::Service/Service[ntp]/ensure: ensure changed 'stopped' to 'running'
Info: /Stage[main]/Ntp::Service/Service[ntp]: Unscheduling refresh on Service[ntp]
Notice: Applied catalog in 0.73 seconds

Настройка systemd-timesyncd с помощью Puppet

1. Устанавливаем модуль

sudo apt install puppet-module-camptocamp-systemd

2. Создаем/редактируем манифест

sudo nano /etc/puppetlabs/code/environments/production/manifests/site.pp

/etc/puppetlabs/code/environments/production/manifests/site.pp
node default {
  class{'systemd':
    manage_timesyncd => true,
    ntp_server => ['ntp1.vniiftri.ru', 'ntp2.vniiftri.ru'],
    fallback_ntp_server => ['0.ru.pool.ntp.org', '1.ru.pool.ntp.org','2.ru.pool.ntp.org', '3.ru.pool.ntp.org'],
  }
}

Используемые параметры:

  1. manage_timesyncd – настраивает /etc/systemd/timesyncd.conf;
  2. ntp_server – список основных NTP-серверов;
  3. fallback_ntp_server – список региональных второстепенных NTP-серверов.

3. Запрашиваем изменения конфигурации на управляющем узле

sudo /opt/puppetlabs/bin/puppet agent --test

Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
...
Info: Retrieving locales
Info: Loading facts
Info: Caching catalog for agent1.astra.lan
Info: Applying configuration version '1586530810'
Notice: /Stage[main]/Systemd::Timesyncd/Ini_setting[ntp_server]/ensure: created
Info: /Stage[main]/Systemd::Timesyncd/Ini_setting[ntp_server]: Scheduling refresh of Service[systemd-timesyncd]
Notice: /Stage[main]/Systemd::Timesyncd/Ini_setting[fallback_ntp_server]/ensure: created
Info: /Stage[main]/Systemd::Timesyncd/Ini_setting[fallback_ntp_server]: Scheduling refresh of Service[systemd-timesyncd]
Notice: /Stage[main]/Systemd::Timesyncd/Service[systemd-timesyncd]/ensure: ensure changed 'stopped' to 'running'
Info: /Stage[main]/Systemd::Timesyncd/Service[systemd-timesyncd]: Unscheduling refresh on Service[systemd-timesyncd]
Notice: Applied catalog in 0.20 seconds

Настройка OpenNTPd с помощью Puppet

1. Устанавливаем модуль

sudo apt install puppet-module-tohuwabohu-openntp

2. Создаем/редактируем манифест

sudo nano /etc/puppetlabs/code/environments/production/manifests/site.pp

/etc/puppetlabs/code/environments/production/manifests/site.pp
node default {
  class { 'openntp': 
    server => ['ntp1.vniiftri.ru'] 
  }
}

Используемые параметры:

  1. server – NTP-сервер.

3. Запрашиваем изменения конфигруации на управляющем узле

sudo /opt/puppetlabs/bin/puppet agent --test

Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Loading facts
Info: Caching catalog for agent1.astra.lan
Info: Applying configuration version '1587724838'
Notice: /Stage[main]/Openntp::Install/Package[openntpd]/ensure: created
...
Info: Computing checksum on file /etc/openntpd/ntpd.conf
Info: /Stage[main]/Openntp::Config/File[/etc/openntpd/ntpd.conf]: Filebucketed /etc/openntpd/ntpd.conf to puppet with sum d79975ee6ca862279de0f4d8d68833f6
Notice: /Stage[main]/Openntp::Config/File[/etc/openntpd/ntpd.conf]/content: content changed '{md5}d79975ee6ca862279de0f4d8d68833f6' to '{md5}9560617a8c9371f531b636abb542aa8a'
Info: Class[Openntp::Config]: Scheduling refresh of Class[Openntp::Service]
Info: Class[Openntp::Service]: Scheduling refresh of Service[openntpd]
Notice: /Stage[main]/Openntp::Service/Service[openntpd]: Triggered 'refresh' from 1 event
Notice: Applied catalog in 3.24 seconds

Настройка linuxptp с помощью Puppet

1. Устанавливаем модуль

sudo apt install puppet-module-zshi-redhat-ptp

2. Создаем/редактируем манифест

sudo nano /etc/puppetlabs/code/environments/production/manifests/site.pp

/etc/puppetlabs/code/environments/production/manifests/site.pp
node default {
  ptp::instance_ptp4l { 'instance_name':
    ptp4l_interface => 'eth0',
  }
}

Используемые параметры:

  1. ptp4l_interface – используемый сетевой интерфейс.

3. Запрашиваем изменения конфигурации на управляющем узле

sudo /opt/puppetlabs/bin/puppet agent --test

Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
...
Info: Retrieving locales
Info: Caching catalog for agent1.astra.lan
Info: Applying configuration version '1586533343'
Notice: /Stage[main]/Ptp::Config/File[ptp4l@.service]/ensure: defined content as '{md5}2aa1dd119bc191e4843ad67c48370679'
Notice: /Stage[main]/Ptp::Config/File[phc2sys@.service]/ensure: defined content as '{md5}8eb0cd481eb55055b5f466b6de987b25'
Info: Class[Ptp::Config]: Scheduling refresh of Class[Ptp::Service]
Notice: /Stage[main]/Main/Node[default]/Ptp::Instance_ptp4l[instance_name]/File[ptp4l-instance_name-eth0.conf]/ensure: defined content as '{md5}31422fb72702c7265a822c8ed78782f3'
Notice: /Stage[main]/Main/Node[default]/Ptp::Instance_ptp4l[instance_name]/Service[instance_name]/ensure: ensure changed 'stopped' to 'running'
Info: /Stage[main]/Main/Node[default]/Ptp::Instance_ptp4l[instance_name]/Service[instance_name]: Unscheduling refresh on Service[instance_name]
Notice: Applied catalog in 0.49 seconds

  • No labels