172 lines
5.2 KiB
Plaintext
172 lines
5.2 KiB
Plaintext
{% if salt.pillar.get('salt:master', false) %}
|
|
{% set salt_daemons = ['master', 'minion'] %}
|
|
{% else %}
|
|
{% set salt_daemons = ['minion'] %}
|
|
{% endif %}
|
|
|
|
{% if grains['osarch'].lower().startswith('arm') %}
|
|
|
|
'make salt venv':
|
|
cmd.run:
|
|
- name: /usr/bin/python3 -m venv /opt/saltstack/salt
|
|
- creates: /opt/saltstack/salt
|
|
|
|
pip install salt:
|
|
cmd.run:
|
|
- name: /opt/saltstack/salt/bin/pip3 install 'salt=={{ salt.pillar.get("salt:version") }}'
|
|
- unless: /opt/saltstack/salt/bin/pip3 freeze | grep -q 'salt=={{ salt.pillar.get("salt:version") }}'
|
|
- require:
|
|
- cmd: 'make salt venv'
|
|
|
|
{% for link in ('salt', 'salt-call', 'salt-minion', 'salt-proxy', 'salt-run', 'salt-key') %}
|
|
/usr/bin/{{ link }}:
|
|
file.symlink:
|
|
- target: /opt/saltstack/salt/bin/{{ link }}
|
|
{% endfor %}
|
|
/usr/bin/salt-pip:
|
|
file.symlink:
|
|
- target: /opt/saltstack/salt/bin/pip3
|
|
|
|
systemd reload for salt:
|
|
module.run:
|
|
- name: service.systemctl_reload
|
|
- onchanges:
|
|
{% for daemon in salt_daemons %}
|
|
- file: /lib/systemd/system/salt-{{ daemon }}.service
|
|
{% endfor %}
|
|
|
|
{% for daemon in salt_daemons %}
|
|
/lib/systemd/system/salt-{{ daemon }}.service:
|
|
file.managed:
|
|
- source: salt://salt/files/salt-{{ daemon }}.service
|
|
- user: root
|
|
- group: root
|
|
- mode: 644
|
|
salt-{{ daemon }}:
|
|
service.running:
|
|
- enable: true
|
|
- require:
|
|
- file: /lib/systemd/system/salt-{{ daemon }}.service
|
|
- module: systemd reload for salt
|
|
- watch:
|
|
- cmd: pip install salt
|
|
- listen:
|
|
- file: /etc/salt/{{ daemon }}
|
|
{% endfor %}
|
|
|
|
{% elif grains['os'] == 'Debian' %}
|
|
|
|
/etc/apt/keyrings/salt-archive-keyring-2023.gpg:
|
|
file.managed:
|
|
- source: https://repo.saltproject.io/salt/py3/debian/11/amd64/SALT-PROJECT-GPG-PUBKEY-2023.gpg
|
|
- source_hash: c6f6cbcd96fdb130b1dde8dcfc05d46a3a3f322ff0514f98e2e6473896243472
|
|
|
|
{% if grains['osrelease']|int > 11 %}
|
|
{% set osrelease = 11 %}
|
|
{% set oscodename = 'bullseye' %}
|
|
{% else %}
|
|
{% set osrelease = grains['osrelease'] %}
|
|
{% set oscodename = grains['oscodename'] %}
|
|
{% endif %}
|
|
|
|
/etc/apt/sources.list.d/salt.list:
|
|
file.managed:
|
|
- contents: "deb [signed-by=/etc/apt/keyrings/salt-archive-keyring-2023.gpg arch=amd64] https://repo.saltproject.io/salt/py3/debian/{{ osrelease }}/amd64/minor/{{ salt.pillar.get("salt:version") }} {{ oscodename }} main"
|
|
|
|
{% elif grains['os'] == 'Ubuntu' %}
|
|
|
|
/etc/apt/keyrings/salt-archive-keyring-2023.gpg:
|
|
file.managed:
|
|
- source: https://repo.saltproject.io/salt/py3/ubuntu/{{ grains['lsb_distrib_release'] }}/amd64/SALT-PROJECT-GPG-PUBKEY-2023.gpg
|
|
- source_hash: c6f6cbcd96fdb130b1dde8dcfc05d46a3a3f322ff0514f98e2e6473896243472 # sha256
|
|
|
|
/etc/apt/sources.list.d/salt.list:
|
|
file.managed:
|
|
- contents: "deb [signed-by=/etc/apt/keyrings/salt-archive-keyring-2023.gpg arch=amd64] https://repo.saltproject.io/salt/py3/ubuntu/{{ grains['lsb_distrib_release'] }}/amd64/minor/{{ salt.pillar.get("salt:version") }} {{ grains['lsb_distrib_codename'] }} main"
|
|
|
|
salt-common:
|
|
pkg.installed:
|
|
- version: '{{ salt.pillar.get("salt:version") }}'
|
|
- refresh: true
|
|
- require:
|
|
- file: /etc/apt/keyrings/salt-archive-keyring-2023.gpg
|
|
- file: /etc/apt/sources.list.d/salt.list
|
|
|
|
{% for daemon in salt_daemons %}
|
|
salt-{{ daemon }}:
|
|
pkg.installed:
|
|
- version: '{{ salt.pillar.get("salt:version") }}'
|
|
- require:
|
|
- pkg: salt-common
|
|
service.running:
|
|
- enable: true
|
|
- require:
|
|
- pkg: salt-{{ daemon }}
|
|
- listen:
|
|
- file: /etc/salt/{{ daemon }}
|
|
{% endfor %}
|
|
|
|
salt-common:
|
|
pkg.installed:
|
|
- version: '{{ salt.pillar.get("salt:version") }}'
|
|
- refresh: true
|
|
- require:
|
|
- file: /etc/apt/keyrings/salt-archive-keyring-2023.gpg
|
|
- file: /etc/apt/sources.list.d/salt.list
|
|
|
|
{% for daemon in salt_daemons %}
|
|
salt-{{ daemon }}:
|
|
pkg.installed:
|
|
- version: '{{ salt.pillar.get("salt:version") }}'
|
|
- require:
|
|
- pkg: salt-common
|
|
service.running:
|
|
- enable: true
|
|
- require:
|
|
- pkg: salt-{{ daemon }}
|
|
- listen:
|
|
- file: /etc/salt/{{ daemon }}
|
|
{% endfor %}
|
|
|
|
{% elif grains['os_family'] == 'RedHat' %}
|
|
|
|
/etc/pki/rpm-gpg/SALT-PROJECT-GPG-PUBKEY-2023:
|
|
file.managed:
|
|
- source: salt://salt/files/SALT-PROJECT-GPG-PUBKEY-2023.pub
|
|
salt:
|
|
pkgrepo.managed:
|
|
- baseurl: "https://repo.saltproject.io/salt/py3/redhat/{{ grains['osmajorrelease'] }}/x86_64/minor/{{ salt.pillar.get("salt:version") }}"
|
|
- humanname: Salt repo for RHEL/CentOS {{ grains['osmajorrelease'] }} PY3
|
|
- gpgkey: file:///etc/pki/rpm-gpg/SALT-PROJECT-GPG-PUBKEY-2023
|
|
- skip_if_unavailable: true
|
|
- failovermethod: priority
|
|
- priority: 10
|
|
- enabled: 1
|
|
- enabled_metadata: 1
|
|
- gpgcheck: 1
|
|
- gpgkey: file:///etc/pki/rpm-gpg/SALT-PROJECT-GPG-PUBKEY-2023
|
|
- require:
|
|
- file: /etc/pki/rpm-gpg/SALT-PROJECT-GPG-PUBKEY-2023
|
|
pkg.installed:
|
|
- version: '{{ salt.pillar.get("salt:version") }}-*'
|
|
- refresh: true
|
|
- require:
|
|
- pkgrepo: salt
|
|
|
|
{% else %}
|
|
|
|
{{ raise("Unsupported grains.os") }}
|
|
|
|
{% endif %}
|
|
|
|
{% for daemon in salt_daemons %}
|
|
/etc/salt/{{ daemon }}:
|
|
file.managed:
|
|
- source: salt://salt/files/{{ daemon }}.jinja
|
|
- template: jinja
|
|
- user: root
|
|
- group: root
|
|
- mode: 644
|
|
{% endfor %}
|
|
|