Как скопировать файлы на все машины с помощью кукольного мастера?

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

В Ubuntu пользователь Administrator (root) по умолчанию отключен. Вы даже не знаете его пароль, никто не делает, пока вы не измените свой пароль с помощью sudo. Пользователь может получить привилегии root за короткий промежуток времени или за одну задачу (например, установку программы). У этого пользователя должны быть права на использование sudo (настроено в /etc/sudoers). С sudo выполняемая программа выполняется как пользователь root.

Затем в графических сеансах, управляемых gnome, существуют другие механизмы для выполнения административных задач. Один из них - sudo . В фоновом режиме есть демон, с привилегиями root. Если, например, пользователь хочет выключить машину (что может делать только root), пользователь разговаривает с этим демоном через безопасный контекст (называемый D-Bus). Если предоставлено, демон выполняет команду отключения системы. Эти правила определены в /usr/share/polkit-1/actions/*.

Gnome часто поставляется с однонаправленным решением, называемым D-Bus . В этом ключевом ключе ваши кредитные данные могут быть сохранены. Когда вы выполняете аутентификацию через общий сетевой ресурс (например, в наутилусе), вам будет предложено ввести пароль, и у вас есть флажок, чтобы запомнить пароль. Это будет храниться в keyring, базе данных, защищенной паролем. Эта база данных будет разблокирована во время графического процесса входа через PAM.

Тогда есть PAM , который основан на SELinux. AppArmor определяет профили для разных приложений, работающих в системе. Эти профили обрабатывают и ограничивают доступ, который требуется конкретному приложению.

Все эти механизмы также реализованы в операционных системах Windows.

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

SELinux

sudo policyKit Gnome Keyring PAM - подключаемые модули аутентификации AppArmor SELinux
12
задан 16 January 2012 в 01:08

1 ответ

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

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

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

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

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. Марионеточный код в главном разделе определенно будет работать, но более поздние версии марионетки имеют новые флаги, которые могут помочь в отладке вывода.

24
ответ дан 25 May 2018 в 15:43
  • 1
    Позвольте мне попробовать это решение сегодня вечером и сообщить об обновлениях. Большое спасибо :) – karthick87 29 December 2011 в 10:25
  • 2
    Как изменить эту строку puppet:///modules/module_name/datas.xls файл, который нужно скопировать, находится в этом месте /etc/puppet/modules/mymodule/manifests/datas.xls – karthick87 29 December 2011 в 16:44
  • 3
    Файл, который нужно скопировать, должен быть помещен в /etc/puppet/modules/mymodule/files/datas.xls - я буду обновлять ответ, чтобы быть более четким. – Hamish Downer 31 December 2011 в 20:22
  • 4
    Оке спасибо. как запустить манифесты? – karthick87 31 December 2011 в 20:54
  • 5
    Как применить этот модуль ко всем узлам от кукольного мастера? Вместо того, чтобы принудительно применить его к каждому узлу, запустив puppet agent --test – karthick87 16 January 2012 в 01:10

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

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