Я сделал что-то подобное. На работе я сделал сценарий удара, который делает для цикла - для каждого подкаталога, CD в него, CP все файлы к dir единой цели, и затем CD создает резервную копию.
Если бы у Вас было несколько уровней для этого, то Вы могли бы стать еще более необычными, и каждый раз Вы находите подкаталог, CD в и увеличиваете счетчик. По завершении CD копирует и постепенно уменьшает счетчик.
Вы могли также сделать что-то с находкой./-вводят-f и затем делают CP каждого файла в целевой каталог, в то время как (вероятно, использующий sed) разделяют все имена подкаталога от целевого аргумента.
Рекомендуемый способ сделать это - классифицировать ваши узлы с использованием настраиваемого факта.
Вы можете использовать nodes.pp
следующим образом:
node default {
hiera_include('classes')
}
node /.*some.domain.com$/ inherits default {
}
Это Таким образом, вы можете использовать hiera.yaml
, чтобы легко назначать модули, сохраняя общие модули в другом файле yaml. Это может быть пример:
---
:backends:
- yaml
:hierarchy:
- "%{::hostname}"
- common
:yaml:
:datadir: "/etc/puppet/hieradata/%{::domain}/%{::location}"
Где факт местоположения
определен в файле /etc/facter/facts.d/datacenter.yaml
, который также может содержать больше фактов, если необходимо:
---
location: rohan
Результирующая структура каталогов для ваших хиераданных может выглядеть так:
$ tree
.
├── hiera.yaml
└── some.domain.com
├── rohan
│ ├── common.yaml
│ ├── host.specific.yaml
│ └── other.host.yaml
└── mordor
├── common.yaml
├── some.host.yaml
└── other.host.yaml
Еще несколько идей относительно использования хиеры
для классификации узлов можно найти здесь .
Не используйте узел
для классификации машин. Напишите «ролевой» факт в /etc/facter/facts.d/role.txt
. Используйте идентификатор экземпляра ec2 в качестве имени сертификата марионетки. Используйте hiera's hiera_include
для назначения модулей на основе факта роли
ваших узлов.
Вот слайд-колода презентации, которую я сделал в прошлом году по этой теме. https://speakerdeck.com/robbyt/puppetcamp-nyc-2012-puppet-in-the-cloud