Как установить PostgreSQL 13 с сохраненным состоянием?

#postgresql #salt-stack

#postgresql #солевой стек

Вопрос:

В основном вопрос заключается в названии. Я использую CentOS 8 и хочу начать использовать состояния солевого стека для установки таких вещей, как Postgresql-13, AdoptOpenJDK,…

     install-postgresql13-repository:
  cmd.run:
    - name: rpm -U --force https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

install-postgresql13-server:
  cmd.run:
    - name: dnf install postgresql13-server -y

postgresql-first-run-init:
  cmd.run:
    - name: /usr/pgsql-13/bin/postgresql-13-setup initdb
    - unless: stat /var/lib/pgsql/13/data/postgresql.conf
    - runas: root

start-postgresql13-server:
  cmd.run:
    - name: systemctl start postgresql-13

enable-postgresql13-autostart:
  cmd.run:
    - name: systemctl enable postgresql-13
  

но cmd.run — не лучший вариант, насколько я знаю.

Комментарии:

1. Заголовок — это не вопрос. С какими проблемами вы сталкиваетесь?

2. Как вы сказали, использование cmd.run — не лучший вариант. Это похоже на написание shell скрипта с помощью Saltstack. Это устраняет «состояние» из состояний соли. Вы можете начать с легко доступной формулы и повторно использовать ее, если это соответствует вашим потребностям.

3. Спасибо @seshadri_c Я посмотрю формулу. И я отредактировал заголовок (так что теперь это вопрос)

Ответ №1:

Основным преимуществом использования такого инструмента, как Saltstack, является идемпотентность, которую он предлагает посредством «состояний».

Не вдаваясь в полное решение, я бы порекомендовал вам пройти через состояния соли.

Например, приведенный ниже код будет работать нормально в первый раз, но при втором запуске он может выдать ошибку. Даже если это работает, в этом нет необходимости.

   cmd.run:
    - name: rpm -U --force https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
  

В то время как, если вы используете модули состояния соли, подобные приведенным ниже, они будут обновляться только при необходимости. Последующие запуски не будут пытаться внести изменения.

 install-postgresql13-repository:
  pkg.installed:
    - sources:
        - pgdg-redhat-repo: https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

install-postgresql-server:
  pkg.installed:
    - name: postgresql13-server

# and similarly use salt states for other tasks where applicable