Подробнее про службы времени в 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" }
Настройка 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. Выполняем плэйбук
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
--- - 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. Выполяем плэйбук
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
Настройка служб времени с помощью 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. Запрашиваем изменения конфигурации на управляющем узле
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
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. Запрашиваем изменения конфигурации на управляющем узле
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
Настройка linuxptp с помощью Puppet
1. Устанавливаем модуль
sudo apt install puppet-module-szhi-redhat-ptp
2. Создаем/редактируем манифест
node default { ptp::instance_ptp4l { 'instance_name': ptp4l_interface => 'eth0', } }
Используемые параметры:
- 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