Как дать в Марионетке глобальные разрешения к PostgreSQL?

Это - хорошая идея использовать строчные переменные в Ваших сценариях оболочки, поскольку прописные переменные обычно резервируются для внутренностей оболочки. (Переменные среды являются исключением к этому, но должны действительно рассматриваться тот же путь как вещи с особыми значениями, которые Вы не должны произвольно изменять, не понимая то, что Вы делаете.) В этом случае, bash наборы $UID к Unix uid это работает под и не позволит этому быть измененным или переменная, которая будет использоваться для чего-либо еще. Оболочки кроме bash (sh может быть dash или некоторая другая оболочка на некоторых платформах), может не использовать $UID тот путь, и если bash был создан для работы в режиме эмуляции Оболочки Bourne при вызове как sh (который является значением по умолчанию, но много дистрибутивов Linux отключают это), оно не будет рассматривать $UID как особенный также.

1
задан 17 March 2013 в 15:02
1 ответ

Решение, которое мне подходит, - использовать ' postgresql :: server :: role ' с createdb => true вместо 'postgresql: : database_grant '. Это имеет смысл, поскольку вы хотите изменить глобальное поведение пользователя, а не то, которое связано с конкретной базой данных.

Это пример директивы, которая добавляет пользователя вместе с привилегиями createdb:

postgresql::server::role { 'username':
  password_hash => postgresql_password('username', 'password'),
  createdb  => true
}

Учитывая «vagrant» в качестве имени пользователя, это ожидаемый результат:

Role[vagrant]/Postgresql_psql[ALTER ROLE "vagrant" CREATEDB]/command: command changed '' to 'ALTER ROLE "vagrant" CREATEDB'

Важно: Если вы используете версию 2 модуля, вы можете использовать postgresql :: role вместо postgresql :: server :: role. См. https://forge.puppetlabs.com/puppetlabs/postgresql#upgrading

2
ответ дан 3 December 2019 в 21:35

Теги

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