Postgresql 使用saltstack安装特定版本的postgres

Postgresql 使用saltstack安装特定版本的postgres,postgresql,version,salt-stack,Postgresql,Version,Salt Stack,我想要一个真正基本的postgres安装,而这个安装太疯狂了。我只想在一个仆从身上安装postgres 9.5.1版 这是我尝试过的东西,我知道它不起作用 /srv/salt/top.sls base: '*': - postgresql postgresql: pkg.installed: - version: 9.5.1 postgresql: pkgrepo.managed: - name: deb http://apt.postgresql.

我想要一个真正基本的postgres安装,而这个安装太疯狂了。我只想在一个仆从身上安装postgres 9.5.1版

这是我尝试过的东西,我知道它不起作用

/srv/salt/top.sls

base:
  '*':
    - postgresql
postgresql:
  pkg.installed:
      - version: 9.5.1
 postgresql:
  pkgrepo.managed:
    - name: deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main
    - dist: trusty-pgdg
    - file: /etc/apt/sources.list.d/psql.list
    - key_url: https://www.postgresql.org/media/keys/ACCC4CF8.asc
    - require_in:
      - pkg: postgresql
  pkg.installed:
    - name: postgresql-9.5
    - refresh: True
  service:
    - running
install-postgresql96-repository:
  cmd.run:
    - name: rpm -U --force https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

install-postgresql96-server:
  cmd.run:
    - name: yum --disablerepo=postgresql -y install postgresql96-server

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

start-postgresql96-server:
  cmd.run:
    - name: systemctl start postgresql-9.6

enable-postgresql96-autostart:
  cmd.run:
    - name: systemctl enable postgresql-9.6
/srv/salt/postgresql/init.sls

base:
  '*':
    - postgresql
postgresql:
  pkg.installed:
      - version: 9.5.1
 postgresql:
  pkgrepo.managed:
    - name: deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main
    - dist: trusty-pgdg
    - file: /etc/apt/sources.list.d/psql.list
    - key_url: https://www.postgresql.org/media/keys/ACCC4CF8.asc
    - require_in:
      - pkg: postgresql
  pkg.installed:
    - name: postgresql-9.5
    - refresh: True
  service:
    - running
install-postgresql96-repository:
  cmd.run:
    - name: rpm -U --force https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

install-postgresql96-server:
  cmd.run:
    - name: yum --disablerepo=postgresql -y install postgresql96-server

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

start-postgresql96-server:
  cmd.run:
    - name: systemctl start postgresql-9.6

enable-postgresql96-autostart:
  cmd.run:
    - name: systemctl enable postgresql-9.6
根据文档,这是正确的格式。我想也许我应该把9.5.3换成另一种格式,但我找不到在哪里能找到答案


更新1

我在仆从和主人身上使用ubuntu 14.04

apt缓存策略postgresql
的输出为

postgresql:
  Installed: (none)
  Candidate: 9.3+154ubuntu1
  Version table:
     9.3+154ubuntu1 0
        500 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
     9.3+154 0
        500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages

为了使用saltstack安装Postgresql 9.5


首先,确保按照ubuntu minion中的说明进行操作,以便系统可以安装
postgresql 9.5
。甚至可以编写一个
状态
,使整个步骤自动化。添加存储库并安装postgresql 9.5,以便使用saltstack安装postgresql 9.5


首先,确保按照ubuntu minion中的说明进行操作,以便系统可以安装
postgresql 9.5
。甚至可以编写一个
状态
,使整个步骤自动化。添加存储库并安装
postgresql 9.5

这应该使用pkgrepo.managed通过salt完成。解决方案如下

init.sls

base:
  '*':
    - postgresql
postgresql:
  pkg.installed:
      - version: 9.5.1
 postgresql:
  pkgrepo.managed:
    - name: deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main
    - dist: trusty-pgdg
    - file: /etc/apt/sources.list.d/psql.list
    - key_url: https://www.postgresql.org/media/keys/ACCC4CF8.asc
    - require_in:
      - pkg: postgresql
  pkg.installed:
    - name: postgresql-9.5
    - refresh: True
  service:
    - running
install-postgresql96-repository:
  cmd.run:
    - name: rpm -U --force https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

install-postgresql96-server:
  cmd.run:
    - name: yum --disablerepo=postgresql -y install postgresql96-server

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

start-postgresql96-server:
  cmd.run:
    - name: systemctl start postgresql-9.6

enable-postgresql96-autostart:
  cmd.run:
    - name: systemctl enable postgresql-9.6

我通过saltstack irc和

这应该通过salt使用pkgrepo.managed完成。解决方案如下

init.sls

base:
  '*':
    - postgresql
postgresql:
  pkg.installed:
      - version: 9.5.1
 postgresql:
  pkgrepo.managed:
    - name: deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main
    - dist: trusty-pgdg
    - file: /etc/apt/sources.list.d/psql.list
    - key_url: https://www.postgresql.org/media/keys/ACCC4CF8.asc
    - require_in:
      - pkg: postgresql
  pkg.installed:
    - name: postgresql-9.5
    - refresh: True
  service:
    - running
install-postgresql96-repository:
  cmd.run:
    - name: rpm -U --force https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

install-postgresql96-server:
  cmd.run:
    - name: yum --disablerepo=postgresql -y install postgresql96-server

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

start-postgresql96-server:
  cmd.run:
    - name: systemctl start postgresql-9.6

enable-postgresql96-autostart:
  cmd.run:
    - name: systemctl enable postgresql-9.6

我通过saltstack irc和

由@trueCamelType提供的答案似乎不适用于基于CentOS 7的仆从。以下方法确实有效:

init.sls

base:
  '*':
    - postgresql
postgresql:
  pkg.installed:
      - version: 9.5.1
 postgresql:
  pkgrepo.managed:
    - name: deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main
    - dist: trusty-pgdg
    - file: /etc/apt/sources.list.d/psql.list
    - key_url: https://www.postgresql.org/media/keys/ACCC4CF8.asc
    - require_in:
      - pkg: postgresql
  pkg.installed:
    - name: postgresql-9.5
    - refresh: True
  service:
    - running
install-postgresql96-repository:
  cmd.run:
    - name: rpm -U --force https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

install-postgresql96-server:
  cmd.run:
    - name: yum --disablerepo=postgresql -y install postgresql96-server

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

start-postgresql96-server:
  cmd.run:
    - name: systemctl start postgresql-9.6

enable-postgresql96-autostart:
  cmd.run:
    - name: systemctl enable postgresql-9.6
使用
--force
运行
rpm
命令,这样就可以重复执行该命令,而不会发出指示软件包已安装的“错误”。使盐产量更漂亮

使用
-disablerepo=postgresql
运行
yum
命令,以防止salt尝试使用外部repo


这是程序性的,不优雅,但我发现用
pkgrepo.managed
进行fuzzing比它值得的麻烦多。也就是说,我希望看到一个使用“pkgrepo.managed”在Centos 7上安装postgresql的解决方案。

由@trueCamelType提供的答案似乎不适用于基于Centos 7的minion。以下方法确实有效:

init.sls

base:
  '*':
    - postgresql
postgresql:
  pkg.installed:
      - version: 9.5.1
 postgresql:
  pkgrepo.managed:
    - name: deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main
    - dist: trusty-pgdg
    - file: /etc/apt/sources.list.d/psql.list
    - key_url: https://www.postgresql.org/media/keys/ACCC4CF8.asc
    - require_in:
      - pkg: postgresql
  pkg.installed:
    - name: postgresql-9.5
    - refresh: True
  service:
    - running
install-postgresql96-repository:
  cmd.run:
    - name: rpm -U --force https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

install-postgresql96-server:
  cmd.run:
    - name: yum --disablerepo=postgresql -y install postgresql96-server

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

start-postgresql96-server:
  cmd.run:
    - name: systemctl start postgresql-9.6

enable-postgresql96-autostart:
  cmd.run:
    - name: systemctl enable postgresql-9.6
使用
--force
运行
rpm
命令,这样就可以重复执行该命令,而不会发出指示软件包已安装的“错误”。使盐产量更漂亮

使用
-disablerepo=postgresql
运行
yum
命令,以防止salt尝试使用外部repo


这是程序性的,不优雅,但我发现用
pkgrepo.managed
进行fuzzing比它值得的麻烦多。也就是说,我们希望看到一个在Centos 7上使用“pkgrepo.managed”安装postgresql的解决方案。

如果您想要真正基本的Postgres安装,只需执行以下操作即可从安装9.5。像这样的东西是现成的

$ sudo -s
$ cd /srv/salt/
$ git clone https://github.com/saltstack-formulas/postgres-formula.git postgres
$ ln -s /srv/salt/postgres/postgres /srv/salt/postgres
$ vi /srv/salt/top.sls && cat /srv/salt/top.sls 
#format: YAML

base:
  '*':
    - postgres

$ salt-call state.highstate --local
如果您想先相应地设置不同的行为支柱(即/srv/pillar/postgres.sls)

postgres:
  use_upstream_repo: True
  version: '9.6'

如果您想要一个真正基本的Postgres安装,只需执行以下操作即可从中安装9.5。像这样的东西是现成的

$ sudo -s
$ cd /srv/salt/
$ git clone https://github.com/saltstack-formulas/postgres-formula.git postgres
$ ln -s /srv/salt/postgres/postgres /srv/salt/postgres
$ vi /srv/salt/top.sls && cat /srv/salt/top.sls 
#format: YAML

base:
  '*':
    - postgres

$ salt-call state.highstate --local
如果您想先相应地设置不同的行为支柱(即/srv/pillar/postgres.sls)

postgres:
  use_upstream_repo: True
  version: '9.6'

你使用什么操作系统?如果centos打印出以下命令的结果:
yum--showduplicates list postgresql | expand
,如果ubuntu:
apt cache policy postgresql
,因为您首先需要确保系统上有一个具有相同编号的版本,以便salt可以安装iThanks,我将使用该输出进行更新。由于它只输出9.3,我如何让salt安装9.5?您使用什么操作系统?如果centos打印出以下命令的结果:
yum--showduplicates list postgresql | expand
,如果ubuntu:
apt cache policy postgresql
,因为您首先需要确保系统上有一个具有相同编号的版本,以便salt可以安装iThanks,我将使用该输出进行更新。因为它只输出9.3,我如何让salt安装9.5?+1,因为它在逻辑上是正确的,并且有帮助。感谢您告诉我如何通过apt缓存找到可用的版本。然而,我在saltstack irc.+1上找到的答案中列出了通过salt实现这一点的方法,因为它在逻辑上是正确的,并且有帮助。感谢您告诉我如何通过apt缓存找到可用的版本。然而,我在saltstack irc上找到的答案中列出了通过salt实现这一点的方法。CentOS 7(可能还有更早的版本)存在问题。当仆从在CentOS 7上运行时,请参阅我对您最初问题的回答。我知道你更新了ubuntu的问题,但这似乎是回答原始问题的合适地方。CentOS 7(可能还有更早的版本)有问题。当仆从在CentOS 7上运行时,请参阅我对您最初问题的回答。我知道你更新了这个问题是为了提到ubuntu,但这似乎是一个合适的地方来回答原来的问题。