使用 saltstack 安装特定版本的 postgres
Install specific version of postgres using saltstack
我想要一个真正基本的 postgres 安装,postgres-formula/postgres 太疯狂了。我只想在单个 minion 上安装 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
我在 minion 和 master 上使用 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
为了使用 saltstack 安装 Postgresql 9.5。
首先确保按照 this article 在您的 ubuntu minion 中所说的进行操作,以便您的系统可以安装 postgresql 9.5
。或者您甚至可以编写一个 state
来自动执行整个步骤。添加存储库并安装 postgresql 9.5
这应该使用 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 得到了这个答案。
@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
,这样它就可以重复执行,而不会发出 'error' 指示软件包已经安装。使盐输出更漂亮。
yum
命令是 运行 和 --disablerepo=postgresql
以防止 salt 尝试使用外部存储库。
它是程序化的,并不优雅,但我发现用 pkgrepo.managed
乱搞麻烦多于它的价值。也就是说,很想看到使用“pkgrepo.managed”在 Centos 7 上安装 postgresql 的解决方案。
如果您想要真正基本的 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'
我想要一个真正基本的 postgres 安装,postgres-formula/postgres 太疯狂了。我只想在单个 minion 上安装 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
我在 minion 和 master 上使用 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
为了使用 saltstack 安装 Postgresql 9.5。
首先确保按照 this article 在您的 ubuntu minion 中所说的进行操作,以便您的系统可以安装 postgresql 9.5
。或者您甚至可以编写一个 state
来自动执行整个步骤。添加存储库并安装 postgresql 9.5
这应该使用 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 得到了这个答案。
@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
,这样它就可以重复执行,而不会发出 'error' 指示软件包已经安装。使盐输出更漂亮。
yum
命令是 运行 和 --disablerepo=postgresql
以防止 salt 尝试使用外部存储库。
它是程序化的,并不优雅,但我发现用 pkgrepo.managed
乱搞麻烦多于它的价值。也就是说,很想看到使用“pkgrepo.managed”在 Centos 7 上安装 postgresql 的解决方案。
如果您想要真正基本的 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'