Подробнее про службы времени в Astra Linux см. статью Службы синхронизации времени в Astra Linux
Данная статья применима к:
- Astra Linux Common Edition 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. Проверяем
agent1.astra.lan | SUCCESS => {
"changed": false,
"ping": "pong"
}
5. Настройка каталогов модулей
Перед установкой puppet-модулей выполнить следующие действия:
Создать каталог /usr/share/puppet/modules:
sudo mkdir -p /usr/share/puppet/modulesОтредактировать файл /etc/puppetlabs/code/environments/production/environment.conf, добавив в него строку:
modulepath = /usr/share/puppet/modules:./modules:$basemodulepath
Применить настройки, выполнив команду:
sudo /opt/puppetlabs/bin/puppet apply --configprint modulepathПроверить, что новый путь добавился можно следующей командой:
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
--- - 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. Выполняем плэйбук
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
--- - 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
Доступные переменные:
- system_timezone — часовой пояс системы;
- ntp_servers — список предпочтительных NTP-серверов;
- ntp_fallback_servers — списко региональных второстепенных NTP-серверов.
С помощью тэгов можно запускать только определенные части ansible-роли:
- timezone — используется, если необходимо просто установить часовой пояс;
- systemd-timesyncd — настраивает /etc/systemd/timesyncd.conf и перезапускает при необходимости сервис;
- service, service-timesyncd и timesyncd-service — включает и запускает сервис.
3. Выполяем плэйбук
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
--- - 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"
Доступные переменные:
- openntpd_flags — дополнительный флаг для ntpd;
- 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
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
node default { class { 'ntp': servers => [ 'ntp1.vniiftri.ru', 'ntp2.vniiftri.ru' ], restrict => [ 'default ignore', '-6 default ignore', '127.0.0.1', '-6 ::1' ], } }
Используемые параметры:
- servers – список NTP-серверов;
- restrict – правила подключения клиентов.
3. Запрашиваем изменения конфигурации на управляющем узле
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
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'], } }
Используемые параметры:
- manage_timesyncd – настраивает /etc/systemd/timesyncd.conf;
- ntp_server – список основных NTP-серверов;
- fallback_ntp_server – список региональных второстепенных NTP-серверов.
3. Запрашиваем изменения конфигурации на управляющем узле
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. Создаем/редактируем манифест
node default { class { 'openntp': server => ['ntp1.vniiftri.ru'] } }
Используемые параметры:
- server – NTP-сервер.
3. Запрашиваем изменения конфигруации на управляющем узле
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. Создаем/редактируем манифест
node default { ptp::instance_ptp4l { 'instance_name': ptp4l_interface => 'eth0', } }
Используемые параметры:
- ptp4l_interface – используемый сетевой интерфейс.
3. Запрашиваем изменения конфигурации на управляющем узле
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