Установите конкретную версию postgres, используя salttack

Я хочу действительно простую установку postgres, а postgres-формула / postgres слишком сумасшедшая. Я просто хочу установить Postgres версии 9.5.1 на одном миньоне.

Вот кое-что, что я попробовал, и я знаю, что это не работает.

/srv/salt/top.sls

base:
  '*':
    - postgresql

/srv/salt/postgresql/init.sls

postgresql:
  pkg.installed:
      - version: 9.5.1

Согласно документации здесь, это правильный формат. Я подумал, что, возможно, мне нужен 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 ответа

Решение

Это должно быть сделано с помощью соли с помощью pkgrepo.managed. Решение ниже.

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

Я получил этот ответ через комбинацию солтек ирк и солевых документов.

Ответ, предлагаемый @trueCamelType, похоже, не работает с миньоном на базе CentOS 7. Следующее работает:

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 было больше проблем, чем оно того стоило. Тем не менее, хотелось бы увидеть решение для установки postgresql на Centos 7 с помощью pkgrepo.managed.

Если вы хотите действительно простую установку Postgres, просто выполните следующее, чтобы установить 9.5 с https://www.postgresql.org/. Нечто подобное работает из коробки.

$ 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

Если вы хотите изменить поведение, сначала установите pillar (т.е. в /srv/pillar/postgres.sls).

postgres:
  use_upstream_repo: True
  version: '9.6'

Для того, чтобы установить Postgresql 9.5, используйте солончак.

Сначала убедитесь, что вы делаете так, как написано в этой статье, в вашем миньоне Ubuntu, чтобы сделать postgresql 9.5 доступны для вашей системы для установки. или даже вы можете написать state это автоматизирует целые шаги. добавление репозитория и установка postgresql 9.5

Другие вопросы по тегам