首页 > 解决方案 > 如何安装具有 Saltstacked 状态的 PostgreSQL 13?

问题描述

标题基本上是问题。我正在使用 CentOS 8 并想开始使用 Saltstack 状态来安装 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 并不是最好的选择。

标签: postgresqlsalt-stack

解决方案


使用像 Saltstack 这样的工具的主要好处是它通过“状态”的方式提供了幂等性。

在没有进入完整解决方案的情况下,我建议您通过Salt states

例如,下面的代码第一次运行良好,但在第二次运行时可能会出错。即使有效,也没有必要。

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

而如果您使用如下所示的 Salt 状态模块,它们只会在需要时更新。后续运行不会尝试进行更改。

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

推荐阅读