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

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 6 043
    • Email
Всем привет!

Решил создать общую тему про puppet на ALT Linux. Надеюсь, кому-то тоже будет интересно.

У самого порой возникают некоторые вопросы по написанию манифестов, поэтому здесь планирую собирать какие-то наработки, делиться информацией и задавать вопросы.
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 6 043
    • Email
Re: puppet / Управление клиентами
« Ответ #1 : 11.12.2015 08:46:00 »
И так, начну с вопроса.

Выполняю такой манифест:
    exec { 'apt-get update':
    command => 'apt-get update',
    path => '/usr/bin:/usr/sbin:/bin:/sbin',
    provider => shell,
    }

Но не хотелось бы выполнять его каждый раз, потому как зеркало, с кот. беру пакеты, обновляется один раз в неделю и каждый раз на дню обновлять кэш пакетов -- это лишнее время. Отсюда делаю вывод, что нужно использовать свойство onlyif. Только как отследить время создания файла /var/cache/apt/pkgcache.bin и время последнего обновления локального репозитория, чтобы произвести их сравнение ? В этом и заключается мой вопрос.
Сноси Винду, переходи на Линукс ! :)

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 30 571
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: puppet / Управление клиентами
« Ответ #2 : 11.12.2015 09:01:31 »
время создания файла
?

$ stat -c %x /var/cache/apt/pkgcache.bin
2015-12-11 07:17:19.444207391 +0300
$
$ stat -c %y /var/cache/apt/pkgcache.bin
2015-12-11 07:17:17.512207156 +0300
$ stat -c %z /var/cache/apt/pkgcache.bin
2015-12-11 07:17:17.512207156 +0300
$ stat -c %x /var/cache/apt/pkgcache.bin
2015-12-11 07:17:19.444207391 +0300
$ stat -c %w /var/cache/apt/pkgcache.bin
-
$

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 30 571
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: puppet / Управление клиентами
« Ответ #3 : 11.12.2015 09:03:56 »
время последнего обновления локального репозитория,

$ stat -c %z /mnt/Arhiv4/Distribute/p7/branch/files/.timestamp
2015-12-11 06:44:24.464967232 +0300

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 6 043
    • Email
Re: puppet / Управление клиентами
« Ответ #4 : 11.12.2015 09:53:02 »
/mnt/Arhiv4/Distribute/p7/branch/files/.timestamp
А если ftp ?
lftp -e '?; quit' server.firma:/mirror/p7/branch/files
Тут даже больше проблема не узнать дату изменения файла, а сравнить их. То есть файл на клиенте должен быть НЕ старее 6 дней (условно).
Сноси Винду, переходи на Линукс ! :)

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 30 571
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: puppet / Управление клиентами
« Ответ #5 : 11.12.2015 10:14:32 »
Ну - вырежите дату скриптами и сравните.

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 6 043
    • Email
Re: puppet / Управление клиентами
« Ответ #6 : 11.12.2015 10:35:20 »
Ну - вырежите дату скриптами и сравните.
Что-то подобное вырисовывается:
[ $(($(stat -c %Y /var/cache/apt/pkgcache.bin) - 1449360001)) -le 518400 ]Я правильно считаю, что 1 ч. = 3600 ?
Тогда осталось вытащить с ftp содержимое файла .timestamp. Пока не могу сообразить как.
Сноси Винду, переходи на Линукс ! :)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 16 573
    • Домашняя страница
    • Email
Re: puppet / Управление клиентами
« Ответ #7 : 11.12.2015 11:29:46 »
Ну - вырежите дату скриптами и сравните.
Что-то подобное вырисовывается:
[ $(($(stat -c %Y /var/cache/apt/pkgcache.bin) - 1449360001)) -le 518400 ]Я правильно считаю, что 1 ч. = 3600 ?
Тогда осталось вытащить с ftp содержимое файла .timestamp. Пока не могу сообразить как.
curl -s <адрес> | скрипт парсинга...
Андрей Черепанов (cas@)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 6 043
    • Email
Re: puppet / Управление клиентами
« Ответ #8 : 11.12.2015 11:48:26 »
curl -s <адрес> | скрипт парсинга...
Не понял...

Может так:
lftp -e 'cat .timestamp; quit' server.firma:/mirror/p7/branch/files 2>/dev/null|sed -n '1 p'Хотя тогда ещё lftp нужно установить предварительно, в стандартном наборе его нет.

Ещё вариант, просто пересылать файл .timestamp на клиента через puppet. :-)
« Последнее редактирование: 11.12.2015 12:44:52 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 6 043
    • Email
Re: puppet / Управление клиентами
« Ответ #9 : 11.12.2015 12:23:25 »
Обновление кэша apt из репозитория

    exec { 'apt-get update':
    command => 'apt-get update',
    path => '/usr/bin:/usr/sbin:/bin:/sbin',
    provider => shell,
    onlyif => "[ ! -f /var/cache/apt/pkgcache.bin ] || [ $(stat -c %Y /var/cache/apt/pkgcache.bin) -lt $(curl -s ftp://server.firma/mirror/p7/branch/files/.timestamp) ]",
    }
« Последнее редактирование: 11.12.2015 16:53:30 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 30 571
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: puppet / Управление клиентами
« Ответ #10 : 11.12.2015 14:44:08 »
Не понял...
Цитата: man curl
   curl  is  a tool to transfer data from or to a server, using one of the
       supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS,  IMAP,
       IMAPS,  LDAP,  LDAPS,  POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS,
       TELNET and TFTP).  The command is designed to work without user  inter‐
       action.
.....
       -s, --silent
              Silent  or  quiet  mode. Don't show progress meter or error mes‐
              sages.  Makes Curl mute. It will still output the data  you  ask
              for, potentially even to the terminal/stdout unless you redirect
              it.



Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 6 043
    • Email
Re: puppet / Управление клиентами
« Ответ #11 : 11.12.2015 15:59:36 »
Ну тогда и так достаточно, например:
curl -s http://ftp.altlinux.org/pub/distributions/ALTLinux/p7/branch/files/.timestampНичего парсить и не нужно...

Позже проверю.
« Последнее редактирование: 11.12.2015 16:01:23 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 6 043
    • Email
Re: puppet / Управление клиентами
« Ответ #12 : 11.12.2015 16:06:03 »
Немного не в тему, где про перевод циферок всё же почитать ? Это в секундах указано ? Это так, для общего развития :-)
Сноси Винду, переходи на Линукс ! :)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 16 573
    • Домашняя страница
    • Email
Re: puppet / Управление клиентами
« Ответ #13 : 11.12.2015 16:34:05 »
Немного не в тему, где про перевод циферок всё же почитать ? Это в секундах указано ? Это так, для общего развития :-)
UNIX Epoch (число секунд с 0:00 UTC 1.1.1970).
$ date --date="@`curl -s http://ftp.altlinux.org/pub/distributions/ALTLinux/p7/branch/files/.timestamp`"
Пт дек 11 03:00:02 MSK 2015
Андрей Черепанов (cas@)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 6 043
    • Email
Re: puppet / Управление клиентами
« Ответ #14 : 11.12.2015 16:45:57 »
Skull
Спасибо за разъяснения.

Поправил выше манифест. Условие тоже работоспособно, проверил.
Сноси Винду, переходи на Линукс ! :)