Как скопировать файлы на все машины, используя Puppet Master?

12

Я установил puppetmaster в Ubuntu 11.04 и установил puppet во всех моих клиентах. Я присоединился ко всем своим кукольным клиентам с мастером кукол. Можно ли скопировать файл для всех этих клиентов кукол из мастера кукол?

Например:

У меня есть файл с именем datas.xls на моем рабочем столе (Puppet Master). Как мне скопировать эти файлы на все мои кукольные клиенты в следующем месте (/ home / operator1 / Desktop / Backup /)?

Обновить:

  • Привет еще файл не распространяется.
  • Как изменить эту строку, puppet:///modules/module_name/datas.xlsфайл для копирования находится в этом месте /etc/puppet/modules/mymodule/manifests/datas.xls?

Ошибка на клиенте: (решено)

root@testing:~# puppetd --test 
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class sudo at /etc/puppet/manifests/site.pp:2 on node testing.chn.jd.com
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run

Ошибка 2 на клиенте:

root@tme13:~# puppetd --test
err: Could not run Puppet configuration client: Could not retrieve local facts: bad URI(is not URI?): http://169.254.169.254/2008-02-01/meta-data/<HTML><HEAD><TITLE>HTTP access denied</TITLE></HEAD><BODY><img src/

Новое обновление:

Как применить этот модуль ко всем узлам? Такой, что файл будет скопирован на все узлы.

karthick87
источник
... но ты уже не задавал этот вопрос? askubuntu.com/questions/61080/…
fossfreedom
Да, но решение больше не работает.
karthick87
Также это не очень понятно, пользователь просто скопировал контент с некоторых сайтов.
karthick87
Все еще не повод задавать новый вопрос (?). Кстати, я скопировал этот вопрос по ссылке, которую дал мне Хорхе, и он сказал, чтобы я перешел на него;) afaik, что в этом ответе все еще работает !?
Rinzwind
вот еще одна ссылка: serverfault.com/questions/200101/…
Rinzwind

Ответы:

24

Puppet - это немного чудовище, чтобы научиться думать, поэтому учиться на примерах не так уж и плохо. В приведенном ниже я предполагаю, что вы используете модули - пожалуйста, скажите в комментарии, если вы не или если вам нужно больше деталей о том, как собрать модуль вместе.

Допустим, вы запускаете новый модуль с именем mymodule. В домашнем каталоге puppet (обычно /etc/puppet) на puppet master вы должны создать каталог манифестов и файлов модуля:

mkdir -p modules/mymodule/manifests
mkdir -p modules/mymodule/files

Затем создайте файл в этом каталоге с именем init.ppи введите:

class myfile {
    file { '/home/operator1/Desktop/Backup':
        ensure => directory,
        mode => '0755',
        owner => 'operator1',
        group => 'operator1',
    }

    file { "/home/operator1/Desktop/Backup/datas.xls":
        mode => "0644",
        owner => 'operator1',
        group => 'operator1',
        source => 'puppet:///modules/module_name/datas.xls',
    }
}

Затем поместите datas.xlsфайл в filesкаталог модуля - в этом примере в modules/mymodule/files/. (Обратите внимание, что также может быть templatesкаталог для шаблонов ).

В этом manifests/site.ppфайле вам нужно импортировать модуль и включить класс, выполнив что-то вроде:

import 'mymodule'

node base {
    include myfile
}

node server1 inherits base {}
node server2 inherits base {
    # extra config here
}

Убедитесь, что все ваши узлы наследуются от базы, и это должно быть все, что вам нужно сделать. Начиная с версии 0.25 вы можете использовать регулярные выражения в имени узла, например:

node server[0-9] inherits base {}

Дайте мне знать в комментариях, если вам нужны дополнительные разъяснения.

Настройка клиента для общения с мастером кукол

На клиенте нужно сделать:

sudo apt-get install puppet

Затем отредактируйте /etc/default/puppetи измените START=noна START=yes.

Также отредактируйте /etc/puppet/puppet.confи добавьте строку в [main]раздел, чтобы указать, где найти мастера кукол:

server=puppet.mydomain.com

Тогда мы можем сделать тестовый прогон с sudo puppetd --test. Если вы получили ошибки в ключах, вам может потребоваться перейти на главный сервер puppet и подписать ключ клиента. Чтобы проверить точное имя, которое вы можете сделать, sudo puppetca --listа затем sudo puppetca --sign server1.mydomain.com(или любое другое имя сервера было из команды list).

Теперь начните службу кукол с, sudo service puppet startи вы должны быть вдали. Служба кукол запускается каждый час, поэтому, если вы обновите свои рецепты кукол, все ваши клиенты также будут обновлены.

Удаление файлов

В исходном вопросе отмечу, что вы хотели знать, как удалять файлы. Вы бы отредактировали, manifests/init.ppчтобы быть

file { "/home/operator1/Desktop/Backup/datas.xls":
    ensure => absent,
}

Другие полезные советы

Если у вас возникли проблемы, есть несколько вещей, которые вы можете сделать. На любой машине с установленным Puppet вы можете проверить свой синтаксис, запустив

puppet --parseonly --ignoreimport myfile.pp

или проверить всю партию, сняв --ignoreimportфлаг, хотя это может привести к некоторым забавным сообщениям об ошибках, которые на самом деле не являются ошибками, которые я обнаружил. Вы также можете запустить Puppet Live на компьютере клиента Puppet, выполнив:

sudo puppetd --test

который показывает различный полезный вывод, с ошибками и предупреждениями, выделенными разными цветами. Если вы хотите еще больше деталей, вы можете запустить:

sudo puppetd --test --debug

но это, как правило, генерирует так много выходных данных, что трудно пройти через них, так что делайте это только в том случае, если вы уже пробовали предыдущие шаги и застряли, и вам нужно увидеть, что все делается.

Обратите внимание, что это основано на Puppet 0.25.x, который я сейчас использую на работе, а также версия в Ubuntu 10.04. Код puppet в главном разделе определенно будет работать, но в более поздних версиях puppet появились новые флаги, которые могут помочь с отладкой вывода.

Хэмиш Даунер
источник
Позвольте мне попробовать это решение сегодня вечером и сообщить вам обновления. Большое спасибо :)
karthick87
Как изменить эту строку, puppet:///modules/module_name/datas.xlsфайл для копирования находится в этом месте/etc/puppet/modules/mymodule/manifests/datas.xls
karthick87
Файл, который нужно скопировать, должен быть вставлен /etc/puppet/modules/mymodule/files/datas.xls- я уточню ответ, чтобы прояснить ситуацию.
Хэмиш Даунер
Оке спасибо. как запустить манифесты?
karthick87
Как применить этот модуль ко всем узлам от puppetmaster? Вместо того, чтобы принудительно применять его к каждому узлу, запустивpuppet agent --test
karthick87