Назад | Перейти на главную страницу

создать текстовый файл в марионеточной форме hiera list

У меня есть хеш со списком в иере. Я использую это для автоматического создания dbs в СУБД через create_resources

dbs:
  - dbname: something
  - dbname: or
  - dbname: other

Я хотел бы использовать этот же список для автоматического создания простого текстового файла с одной записью в строке для использования нашим сценарием резервного копирования. Этот список всегда будет представлен с произвольным количеством записей> = 1.

В результате файл должен выглядеть так

something
or
other

Как лучше всего это сделать? Мне ничего не удалось найти.

Сначала вам нужно перебрать ваш массив, затем вам нужно взять значение каждого хеша, потому что у вас есть массив с хешем:

sqldbs = lookup('dbs')

each($sqldbs) |$db| {
  notice($db)
}

root@6bb0b3e9ec6c:/# puppet apply hello.pp -vvv
Notice: Scope(Class[main]): {dbname1 => something}
Notice: Scope(Class[main]): {dbname2 => or}
Notice: Scope(Class[main]): {dbname2 => other}

Как вы могли заметить, у вас есть 3 элемента, теперь вы можете взять элемент из каждого хеша

Теперь небольшая строчка кода.

$sqldbs = lookup('dbs')

each($sqldbs) |$db| {
  notice($db.values.join(','))
} 

root@6bb0b3e9ec6c:/# puppet apply hello.pp -vvv
Notice: Scope(Class[main]): something
Notice: Scope(Class[main]): or
Notice: Scope(Class[main]): other
Notice: Compiled catalog for 6bb0b3e9ec6c.cc.cec.eu.int in environment production in 0.04 seconds

Теперь вы можете использовать file_line вставить данные в файл