Як скопіювати файли на всі машини за допомогою лялькового майстра?


12

Я встановив лялькового майстра в ubuntu 11.04, і я встановив лялечку у всіх своїх клієнтів. Я поєднав усіх своїх лялькових клієнтів з ляльковим майстром. Чи можливо скопіювати файл до всіх цих лялькових клієнтів від лялькового майстра?

Наприклад:

У мене на робочому столі (Puppet Master) є файл з ім'ям datas.xls. Як скопіювати ці файли для всіх своїх лялькових клієнтів у наступному місці (/ 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/

Нове оновлення:

Як застосувати цей модуль до всіх вузлів? Таке, що файл буде скопійовано у всі вузли.


... але ви вже не ставили цього питання? askubuntu.com/questions/61080/…
fossfreedom

Так, але рішення більше не працює.
karthick87

Також це не дуже зрозуміло, користувач просто скопіював вміст з деяких веб-сайтів.
karthick87

Але все-таки не привід ставити нове запитання (?) Btw Я скопіював це одне зі посилання, яке дав мені Хорхе, і він сказав мені, щоб це / списати;) afaik, що в цій відповіді все ще працює !?
Rinzwind

ось ще посилання: serverfault.com/questions/200101/…
Rinzwind

Відповіді:


24

Маріонетка - це чудовисько, яке дозволяє вам голову, тож вчитися на прикладі - це не погано. Нижче я припускаю, що ви використовуєте модулі - будь ласка, скажіть у коментарі, якщо ви цього не робите або якщо вам потрібні додаткові відомості про те, як скласти модуль.

Скажімо, ви починаєте новий модуль під назвою 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/. (Зверніть увагу, там також може бути 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. Код ляльок в головному розділі, безумовно, все ще буде працювати, але пізніші версії ляльок мають нові прапори, які допоможуть налагодити вихід.


Дозвольте спробувати це рішення сьогодні ввечері, і повідомте вас про оновлення. Велике спасибі :)
karthick87

Як змінити цей рядок, puppet:///modules/module_name/datas.xlsфайл, який потрібно скопіювати, знаходиться під цим розташуванням/etc/puppet/modules/mymodule/manifests/datas.xls
karthick87

Файл, який потрібно скопіювати, слід ввести /etc/puppet/modules/mymodule/files/datas.xls- я оновлю відповідь, щоб було зрозуміліше з цього приводу.
Гаміш Даунер

Оке дякую,. як запустити маніфести?
karthick87

Як застосувати цей модуль до всіх вузлів лялькового майстра? Замість того, щоб застосувати його до кожного вузла насильно, запустившиpuppet agent --test
karthick87
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.