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

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

Например:

У меня есть файл с именем 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
[ 116] Ошибка 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/

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

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

12
задан 15 January 2012 в 23:08

1 ответ

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

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

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/. (Примечание может также быть a 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. Если Вы получаете ключевые ошибки, Вы, возможно, должны перейти к марионеточному главному серверу и подписать клиентский ключ. Для проверки точного имени, можно сделать sudo puppetca --list и затем sudo puppetca --sign server1.mydomain.com (или независимо от того, что имя сервера было от команды списка).

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

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

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

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

Другие полезные подсказки

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

puppet --parseonly --ignoreimport myfile.pp

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

sudo puppetd --test

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

sudo puppetd --test --debug

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

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

24
ответ дан 15 January 2012 в 23:08

Другие вопросы по тегам:

Похожие вопросы: