使用saltstack安装特定版本的postgres

时间:2016-06-23 18:57:26

标签: postgresql version salt-stack

我想要一个非常基本的postgres安装,postgres-formula/postgres太疯狂了。我只想在一个小兵上安装postgres版本9.5.1。

这是我尝试过的,我知道不起作用。

/srv/salt/top.sls

base:
  '*':
    - postgresql

/srv/salt/postgresql/init.sls

postgresql:
  pkg.installed:
      - version: 9.5.1

根据文档here,这是正确的格式。我想也许我应该以不同的格式使用9.5.3,但我无法找到解决问题的地方。

更新1

我在小兵上使用ubuntu 14.04和主人。

apt-cache policy 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

4 个答案:

答案 0 :(得分:1)

为了使用saltstack安装Postgresql 9.5。

首先确保在您的ubuntu minion中按this article说明,以使postgresql 9.5可供您的系统安装。甚至你可以编写一个state来自动执行整个步骤。添加存储库并安装postgresql 9.5

答案 1 :(得分:1)

@trueCamelType提供的答案似乎不适用于基于CentOS 7的minion。以下工作正常:

<强> init.sls

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

rpm命令与--force一起运行,以便可以重复执行,而不会发出表示已安装软件包的“错误”。使盐输出更漂亮。

yum命令与--disablerepo=postgresql一起运行,以防止盐尝试使用外部存储库。

这是程序性的而不是优雅但我发现使用pkgrepo.managed进行预测比使用它更麻烦。据说很想看到使用'pkgrepo.managed`在Centos 7上安装postgresql的解决方案。

答案 2 :(得分:1)

如果您想要真正基本安装Postgres,只需执行以下操作即可从https://www.postgresql.org/安装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'

答案 3 :(得分:0)

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

<强> init.sls

 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

我通过saltstack irc和salt docs的组合得到了这个答案。