Автор Тема: puppet / Управление клиентами  (Прочитано 4018 раз)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: puppet / Управление клиентами
« Ответ #15 : 12.12.2015 10:05:12 »
Установка/обновление плагина hplip

    $pkglatest = ['hplip-gui']

    package { $pkglatest:
    ensure => latest,
    require  => Exec['apt-get update'],
    }

    exec { 'hp-plugin':
    command => 'yes \ | hp-plugin -i',
    path => '/usr/bin:/usr/sbin:/bin:/sbin',
    provider => shell,
    onlyif => "[ ! -f /var/lib/hp/hplip.state ] || [ $(rpm -q --qf '%{version}' hplip) != $(awk '/version/ {printf \$3}' /var/lib/hp/hplip.state) ]",
    require => Package['hplip-gui'],
    }

Требует apt-get update.

PS. hplip-gui можно заменить на hplip.
« Последнее редактирование: 19.02.2016 08:22:23 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 908
    • Домашняя страница
    • Email
Re: puppet / Управление клиентами
« Ответ #16 : 12.12.2015 11:17:11 »
Проще сделать apt-get install hplip. Если есть новая версия, она установится.
Андрей Черепанов (cas@)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: puppet / Управление клиентами
« Ответ #17 : 12.12.2015 11:50:39 »
Проще сделать apt-get install hplip
Так здесь так и выходит... если смотреть, что puppetd выполняет на клиенте, если включить --debug.

Или дело в этом:
ensure => latestНу да можно написать так:
ensure => installedТолько тогда, пакет не будет обновляться, если он уже установлен. Один раз установится и всё.

Или приведите пример манифеста. Вручную 'apt-get install hplip' не подходит.
Спасибо.
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: puppet / Управление клиентами
« Ответ #18 : 12.12.2015 12:03:10 »
Я похоже понял, подразумевается нечто:
    exec { 'apt-get install':
    command => 'apt-get install hplip',
    path => '/usr/bin:/usr/sbin:/bin:/sbin',
    provider => shell,
    require  => Exec['apt-get update'],
    }

Но такой вариант не будет универсальным, если рассматривать, например, что в каком-то дистрибутиве используется не apt. Конечно в этой теме мы рассматриваем относительно ALT Linux, но перенос манифестов всё же предполагается, в этом-то и их плюс. Хотя некоторые правки при переносе всё же могут потребоваться.
Да и в таком случае нельзя будет сослаться на какой-то конкретный пакет в require:
    require  => Package['hplip']Можно и так написать:
    require  => Exec['apt-get install']Но тогда меньше понимания того, какой всё же пакет требуется для его выполнения.

Правильно ?
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: puppet / Управление клиентами
« Ответ #19 : 13.12.2015 10:17:55 »
Подумал тут, а не нагрузить ли этой проблемой puppet ? Например, для начала хотя бы сделать нечто:
    exec { 'pre dist-upgrade':
    command => 'apt-get dist-upgrade -yd',
    path => '/usr/bin:/usr/sbin:/bin:/sbin',
    provider => shell,
    require  => Exec['apt-get update'],
    }
Ну а потом подумать, как реализовать всё же непосредственную установку этих пакетов по какому-н. расписанию.
В чём преимущество такого метода:
 - разные машины будут обращаться к серверу в разное время, что, вероятно, снизит нагрузку на сеть и т.п.;
 - puppet-агент обращается к серверу гораздо чаще, не нужно ждать конкретной даты (в варианте через alterator, машина-клиент вообще может быть выключена в указанное время, из недели в неделю и, получается, она так никогда не обновится);
 - можно реализовать некий скрипт, который будет, в случае чего, выполнять нечто 'apt-get -f install' и доустанавливать оставшиеся пакеты;
 - ...
Список , наверно, можно продолжить.
Кто что думает по этому поводу ?

UPD: Также нужно подумать над 'apt-get clean'.
« Последнее редактирование: 13.12.2015 10:19:34 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: puppet / Управление клиентами
« Ответ #20 : 13.12.2015 12:40:47 »
Комплексное обновление системы (без ядра)

    exec { 'apt-get dist-upgrade':
    command => 'apt-get install -fy >>/var/log/firma-fixes.log 2>&1; apt-get dist-upgrade -y >>/var/log/firma-updates.log 2>&1; apt-get clean',
    path => '/usr/bin:/usr/sbin:/bin:/sbin',
    provider => shell,
    onlyif => "[ ! -f /var/log/firma-updates.log ] || ([ $(stat -c %Y /var/log/firma-updates.log) -lt $(curl -s ftp://server.firma/mirror/p7/branch/files/.timestamp) ] && [ $(($(date +%s) - $(curl -s ftp://server.firma/mirror/p7/branch/files/.timestamp))) -ge 259200 ])",
    require => Exec['apt-get update'],
    }

! Обновления будут выполняться не раньше каждой среды. Фактически только в СР, ЧТ, ПТ, СБ, ВС.

Требует apt-get update.
« Последнее редактирование: 19.02.2016 08:23:20 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: puppet / Управление клиентами
« Ответ #21 : 01.02.2016 10:20:43 »
hp-plugin -i
$ rpm -q hplip
hplip-3.15.9-alt0.M70P.1
Весело:
# hp-plugin -i

HP Linux Imaging and Printing System (ver. 3.15.9)
Plugin Download and Install Utility ver. 2.1

Copyright (c) 2001-15 Hewlett-Packard Development Company, LP
This software comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to distribute it
under certain conditions. See COPYING file for more details.

error: hp-plugin should not be run as root/superuser
...
Теперь запускается только от юзера, но в конце всё равно спрашивает пароль root.
Как обойти ?
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: puppet / Управление клиентами
« Ответ #22 : 01.02.2016 10:23:37 »
Ожидает ввода:
Do you accept the license terms for the plug-in (y=yes*, n=no, q=quit) ?\Please enter the root/superuser password:
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: puppet / Управление клиентами
« Ответ #23 : 01.02.2016 11:41:43 »
Пока так сделал: https://bugzilla.redhat.com/show_bug.cgi?id=1249414#c9

Но так понял, что это баг всё же...
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: puppet / Управление клиентами
« Ответ #24 : 02.02.2016 08:37:51 »
Продублировать на http://bugzilla.altlinux.org/ ?
На оф. сайте есть уже hplip-3.5.11.
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: puppet / Управление клиентами
« Ответ #25 : 19.02.2016 08:15:01 »
onlyif => "[ ! -f /var/log/firma-updates.log ] || ([ $(stat -c %Y /var/log/firma-updates.log) -lt $(curl -s ftp://server.firma/mirror/p7/branch/files/.timestamp) ] && [ $(($(curl -s ftp://server.firma/mirror/p7/branch/files/.timestamp) - $(stat -c %Y /var/log/firma-updates.log))) -ge 259200 ])",
Условие пришлось поправить так:
"[ ! -f /var/log/firma-updates.log ] || \
([ $(stat -c %Y /var/log/firma-updates.log) -lt \
$(curl -s ftp://server.firma/mirror/p7/branch/files/.timestamp) ] && \
[ $(($(date +%s) - \
$(curl -s ftp://server.firma/mirror/p7/branch/files/.timestamp))) -ge \
259200 ])"
Получается, что обновления будут выполняться не раньше каждой среды. Фактически только в СР, ЧТ, ПТ, СБ, ВС.

hplip-3.15.9-alt0.M70P.1
#31824
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: puppet / Управление клиентами
« Ответ #26 : 20.02.2016 09:15:36 »
Поинтересуюсь про обновление LibreOffice с оф. сайта в автоматическом режиме для puppet.

Сейчас на всех машинах установлено LibreOffice4-4.2-alt1.M70P.3. Думаю установить LibreOffice-4.4.7 с сайта.
Такие вопросы возникают:
 - как удалить текущий
 - как установить новый
 - как обновлять в будущем
При этом пользователь не должен ничего заметить при работе.

Полагаю, что нужно делать проверку не запущен ли LibreOffice у пользователя. Если нет, тогда выполнять действия, если запущен, то ничего не делать пока.

Такое условие вырисовывается:
if ! pgrep soffice.bin &> /dev/null; then
    apt-get -d install ftp://path_to_file/*.rpm
    apt-get -y remove LibreOffice4*
    apt-get -y install ftp://path_to_file/*.rpm
fi

Где могут возникнуть проблемы с таким вариантов ?

В общем-то сталкивался с подобной проблемой при обновлении Firefox в автоматическом режиме. Если браузер использовался при обновлении, то у пользователя могли быть какие-то проблемы, например, кракозябры могли отображаться или что-то не работать, приходилось перезапустить браузер. Причём это выглядело неявно что ли. Например, в Windows браузер сам предлагает перезапустить себя, если это требуется при установке обновлений.
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: puppet / Управление клиентами
« Ответ #27 : 30.03.2016 12:38:52 »
Может быть кто подскажет, как узнать какие клиенты хотя бы подключаются к серверу ? А то заметил на некоторых машинах, что агент отключился и пока не выполнить 'puppet agent --enable' ничего не работает. Так то конечно неплохо было бы узнать почему такое вообще происходит, т.к. в chkconfig puppet включён.
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: puppet / Управление клиентами
« Ответ #28 : 01.04.2016 09:04:33 »
заметил на некоторых машинах, что агент отключился и пока не выполнить 'puppet agent --enable' ничего не работает
Наковырял на одном из таких клиентов в логе:
янв 28 11:40:49 pc01.localdomain puppet-agent[3119]: Finished catalog run in 48.53 seconds
янв 28 11:40:56 pc01.localdomain blueman-mechanism[3802]: Exiting
янв 28 11:40:56 pc01.localdomain dbus-daemon[380]: Starting blueman-mechanism
янв 28 11:40:56 pc01.localdomain dbus-daemon[380]: loading RfKill
янв 28 11:40:56 pc01.localdomain dbus-daemon[380]: loading Network
янв 28 11:40:56 pc01.localdomain dbus-daemon[380]: loading Config
янв 28 11:40:56 pc01.localdomain dbus-daemon[380]: loading Ppp
янв 28 11:40:56 pc01.localdomain dbus-daemon[380]: Exiting
янв 28 11:44:50 pc01.localdomain systemd[1]: puppetd.service operation timed out. Terminating.
янв 28 11:44:51 pc01.localdomain systemd[1]: Failed to start SYSV: Enables periodic system configuration checks through puppet..
янв 28 11:44:51 pc01.localdomain systemd[1]: Unit puppetd.service entered failed state
янв 28 11:44:51 pc01.localdomain systemd[1]: Starting Multi-User System.
янв 28 11:44:51 pc01.localdomain systemd[1]: Reached target Multi-User System.
янв 28 11:44:51 pc01.localdomain systemd[1]: Starting Graphical Interface.
янв 28 11:44:51 pc01.localdomain systemd[1]: Reached target Graphical Interface.
янв 28 11:44:51 pc01.localdomain systemd[1]: Starting Stop Read-Ahead Data Collection 10s After Completed Startup.
янв 28 11:44:51 pc01.localdomain systemd[1]: Started Stop Read-Ahead Data Collection 10s After Completed Startup.
янв 28 11:44:51 pc01.localdomain systemd[1]: Starting Update UTMP about System Runlevel Changes...
янв 28 11:44:51 pc01.localdomain systemd[1]: Started Update UTMP about System Runlevel Changes.
янв 28 11:44:51 pc01.localdomain systemd[1]: Startup finished in 3.971s (kernel) + 5min 27.721s (userspace) = 5min 31.693s.
янв 28 11:45:00 pc01.localdomain systemd[1]: Starting Stop Read-Ahead Data Collection...
янв 28 11:45:00 pc01.localdomain systemd[1]: Started Stop Read-Ahead Data Collection.
янв 28 11:49:56 pc01.localdomain ntpd[1731]: reply from 192.168.1.1: offset -182.329173 delay 0.000538, next query 6s
янв 28 11:53:04 pc01.localdomain ntpd[1731]: reply from 192.168.1.1: offset -182.339384 delay 0.000490, next query 7s

После этого нужно делать 'puppet agent --enable', иначе не работает и ругается:
янв 28 12:06:01 pc01.localdomain puppet-agent[3082]: Reopening log files
янв 28 12:06:01 pc01.localdomain puppetd[3087]: puppetd startup succeeded
янв 28 12:06:01 pc01.localdomain puppetd[2088]: Starting puppetd service: [ DONE ]
янв 28 12:06:01 pc01.localdomain systemd[1]: PID file /var/run/puppet/puppetd.pid not readable (yet?) after start.
янв 28 12:06:02 pc01.localdomain puppet-agent[3082]: Starting Puppet client version 2.7.21
янв 28 12:06:02 pc01.localdomain puppet-agent[3082]: Skipping run of Puppet configuration client; administratively disabled; use 'puppet agent --enable' to re-enable.
янв 28 12:10:55 pc01.localdomain systemd[1]: puppetd.service operation timed out. Terminating.
янв 28 12:10:55 pc01.localdomain systemd[1]: Failed to start SYSV: Enables periodic system configuration checks through puppet..
янв 28 12:10:55 pc01.localdomain systemd[1]: Unit puppetd.service entered failed state
« Последнее редактирование: 01.04.2016 09:06:06 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: puppet / Управление клиентами
« Ответ #29 : 01.04.2016 09:26:52 »
Кажется, нашёл в чём проблема, вот в этом куске:
янв 28 12:02:41 pc01.localdomain puppetd[2399]: /usr/lib/ruby/rubygems/custom_require.rb:36:in `require': iconv will be deprecated in the future, use String#encode instead.
янв 28 12:02:44 pc01.localdomain puppet-agent[3121]: Reopening log files
янв 28 12:02:44 pc01.localdomain puppetd[3144]: puppetd startup succeeded
янв 28 12:02:44 pc01.localdomain puppetd[2385]: Starting puppetd service: [ DONE ]
янв 28 12:02:44 pc01.localdomain systemd[1]: PID file /var/run/puppet/puppetd.pid not readable (yet?) after start.
янв 28 12:02:44 pc01.localdomain puppet-agent[3121]: Starting Puppet client version 2.7.21
-- Reboot --
янв 28 12:05:55 pc01.localdomain systemd[1]: Starting SYSV: Enables periodic system configuration checks through puppet....
янв 28 12:05:59 pc01.localdomain puppetd[2099]: /usr/lib/ruby/rubygems/custom_require.rb:36:in `require': iconv will be deprecated in the future, use String#encode instead.
янв 28 12:06:01 pc01.localdomain puppet-agent[3082]: Reopening log files
янв 28 12:06:01 pc01.localdomain puppetd[3087]: puppetd startup succeeded
янв 28 12:06:01 pc01.localdomain puppetd[2088]: Starting puppetd service: [ DONE ]
янв 28 12:06:01 pc01.localdomain systemd[1]: PID file /var/run/puppet/puppetd.pid not readable (yet?) after start.
янв 28 12:06:02 pc01.localdomain puppet-agent[3082]: Starting Puppet client version 2.7.21
янв 28 12:06:02 pc01.localdomain puppet-agent[3082]: Skipping run of Puppet configuration client; administratively disabled; use 'puppet agent --enable' to re-enable.

Был выполнен ребут, причём, похоже, принудительный, с кнопки. После этого и начинается постоянное требование 'puppet agent --enable'.

Вот только как решить эту проблему...
Сноси Винду, переходи на Линукс ! :)