Nadat u uw Salt-infrastructuur heeft gemaakt en voorbereid op de nieuwe RHEL 8/9-systemen, kunt u deze migratiestappen uitvoeren om uw upgrade naar RHEL 8/9 te voltooien.

Migratie voorbereiden en uitvoeren

  1. Stop de RaaS-service op zowel het RHEL 7-systeem als het RHEL 8/9-systeem.
  2. Kopieer het back-upbestand voor gz van de oude server naar de nieuwe server. Het gz-bestand moet worden opgeslagen in de directory /var/lib/pgsql met ownership=postgres:postgres.
  3. Voer de volgende commando's uit als de postgres-gebruiker om de databasedirectory te verwijderen:
    su - postgres
    psql -U postgres
    drop database raas_43cab1f4de604ab185b51d883c5c5d09
    
  4. Maak een lege database en verifieer de gebruiker:
    create database raas_43cab1f4de604ab185b51d883c5c5d09
    \du – should display users for postgres and salteapi
  5. Kopieer de bestanden /etc/raas/pki/.raas.key en /etc/raas/pki/.instance_id van de oude RaaS-server naar de nieuwe RaaS-server.
  6. Voer de upgradeopdrachten uit voor de nieuwe Postgresql-database:
    su – raas
    raas -l debug upgrade
    
U kunt nu de raas-service starten op de nieuwe rhel9-raas-server. U heeft ook toegang tot de gebruikersinterface van SaltStack Config in uw browser. Vervolgens moet u de masterplug-in configureren in de nieuwe RHEL 8/9 Salt-master.

De masterplug-in op de nieuwe Salt-master configureren

Voer deze stappen uit op het nieuwe rhel9-masterknooppunt.
  1. Meld u aan bij uw Salt-master en controleer of de directory /etc/salt/master.d bestaat of maak deze.
  2. Genereer de configuratie-instellingen van de master.
    Voorzichtig: Als u uw instellingen wilt behouden tijdens het upgraden van uw installatie, maakt u een back-up van het bestaande configuratiebestand van de masterplug-in voordat u deze stap uitvoert. Kopieer vervolgens relevante instellingen van uw bestaande configuratie naar het nieuw gegenereerde bestand.
    sudo sseapi-config --all > /etc/salt/master.d/raas.conf

    Als het uitvoeren van dit commando een fout veroorzaakt, kan deze betrekking hebben op de methode die u oorspronkelijk heeft gebruikt om Salt te installeren. Als u Salt via het installatieprogramma van SaltStack Config heeft geïnstalleerd, bevat uw installatie waarschijnlijk een offlinepakket, Salt Crystal genoemd, waarvoor speciale upgrade-instructies zijn vereist. Zie de pagina Problemen oplossen voor meer informatie.

  3. Bewerk het gegenereerde bestand raas.conf en werk de waarden als volgt bij om het certificaat te valideren dat de API (RaaS) gebruikt en het IP-adres ervan in te stellen.
    Waarde Beschrijving

    sseapi_ssl_validate_cert

    Valideert het certificaat dat de API (RaaS) gebruikt. De standaardwaarde is True.

    Als u uw eigen certificaten gebruikt die door een CA zijn uitgegeven, stelt u deze waarde in op True en configureert u de sseapi_ssl_ca-, sseapi_ssl_cert- en sseapi_ssl_cert:-instellingen.

    Anders stelt u dit in op False om het certificaat niet te valideren.

    sseapi_ssl_validate_cert:False

    sseapi_server

    HTTP IP-adres van uw RaaS-knooppunt, bijvoorbeeld http://example.com of https://example.com als SSL is ingeschakeld.

    sseapi_command_age_limit

    Stelt de leeftijd (in seconden) in waarna oude, potentieel verlopen opdrachten worden overgeslagen. Als u bijvoorbeeld opdrachten die ouder zijn dan een dag wilt overslaan, stelt u deze in op:

    sseapi_command_age_limit:86400

    Overgeslagen opdrachten blijven bestaan in de database en worden weergegeven met de status Completed in de gebruikersinterface van SaltStack Config.

    In sommige omgevingen moet de Salt-master mogelijk gedurende langere tijd offline zijn en moet de Salt-master alle opdrachten uitvoeren die in de wachtrij zijn geplaatst wanneer deze weer online is. Als dit geldt voor uw omgeving, stelt u de ouderdomslimiet in op 0.

    sseapi_windows_minion_deploy_delay Stelt een vertraging in zodat alle vereiste Windows-services actief kunnen worden. De standaardwaarde is 180 seconden.
    sseapi_linux_minion_deploy_delay Stelt een vertraging in zodat alle vereiste Linux-services kunnen worden geactiveerd. De standaardwaarde is 90 seconden.
    sseapi_local_cache Stelt in hoelang bepaalde gegevens lokaal op elke Salt-master in de cache worden opgeslagen. De standaardwaarde is 300 seconden (5 min).
  4. OPTIONEEL: Deze stap is alleen nodig voor handmatige installaties. Om te controleren of u verbinding kunt maken met SSL voordat u verbinding maakt met de masterplug-in, bewerkt u het gegenereerde raas.conf-bestand om de volgende waarden bij te werken. Als u deze waarden niet bijwerkt, gebruikt de masterplug-in het standaard gegenereerde certificaat.
    Waarde Beschrijving
    sseapi_ssl_ca Het pad naar een CA-bestand.
    sseapi_ssl_cert Het pad naar het certificaat. De standaardwaarde is /etc/pki/raas/certs/localhost.crt.
    sseapi_ssl_key Het pad naar de persoonlijke sleutel van het certificaat. De standaardwaarde is /etc/pki/raas/certs/localhost.key.
    id Maak een opmerking van deze regel door een # aan het begin toe te voegen. Deze is niet vereist.
  5. OPTIONEEL: werk prestatiegerelateerde instellingen bij. Voor grote of drukke omgevingen kunt u de prestaties van de communicatie tussen de Salt-master en SaltStack Config verbeteren door de volgende instellingen aan te passen.
    • Schakel gebeurteniswachtrijen in (beschikbaar in Salt 2019.2.2 en hoger). Gebeurtenissen kunnen op de Salt-master in de wachtrij worden geplaatst en met één enkele transactie voor meerdere gebeurtenissen naar de gebeurtenisretourneerder worden verzonden. Dit wachtrijmechanisme is standaard uitgeschakeld. Als u gebeurteniswachtrij wilt inschakelen, stelt u het volgende in het configuratiebestand van uw Salt-masterplug-in in:
      event_return_queue:2500
      event_return_queue_max_seconds:5

      De voorgestelde maximumgrootte voor de gebeurteniswachtrij is 2500, zoals weergegeven. De wachtrij wordt leeggemaakt en gebeurtenissen worden doorgestuurd naar de gebeurtenisretourneerder wanneer de wachtrij vol is. Een lagere waarde kan beter passen bij kleinere of minder drukke omgevingen.

      In sommige gevallen is de Salt-gebeurtenisbus mogelijk niet druk genoeg om ervoor te zorgen dat de wachtrij de maximale grootte op regelmatige basis bereikt. Als u event_return_queue_max_seconds instelt, zal de wachtrij worden leeggemaakt wanneer de oudste gebeurtenis in de wachtrij ouder is dan de geconfigureerde waarde, ongeacht hoeveel gebeurtenissen in de wachtrij staan.

    • De engines eventqueue en rpcqueue inschakelen en configureren:

      Deze engines offloaden bepaalde communicatie met SaltStack Config van prestatiekritieke codepaden naar toegewezen processen. Terwijl de engines wachten om te communiceren met SaltStack Config, worden ladingen opgeslagen in het lokale bestandssysteem van de Salt-master zodat de gegevens kunnen blijven bestaan bij het opnieuw opstarten van de Salt-master.

      Om de engines in te schakelen, moet u de volgende instellingen in het configuratiebestand van de Salt-masterplug-in (raas.conf) als code inschakelen:

      engines:
        - sseapi: {}
        - eventqueue: {}
        - rpcqueue: {}
        - jobcompletion: {}
        - keyauth: {}

      Om de eventqueue te configureren, moet u de volgende instellingen als code inschakelen en bijwerken:

      sseapi_event_queue:
        name: sseapi-events
        strategy: always
        push_interval: 5
        batch_limit: 2000
        age_limit: 86400
        size_limit: 35000000
        vacuum_interval: 86400
        vacuum_limit: 350000
        forward: []

      De wachtrijparameters kunnen worden aangepast rekening houdend met de manier waarop ze samenwerken. Als er bijvoorbeeld een gemiddelde van 400 gebeurtenissen per seconde op de Salt-gebeurtenisbus is, zorgen de bovenstaande instellingen ervoor dat ongeveer 24 uur aan verkeer van gebeurtenissen in de wachtrij op de Salt-master kan worden verzameld voordat de oudste gebeurtenissen worden verwijderd vanwege grootte- of ouderdomslimieten.

      Om de rpcqueue te configureren, moet u de volgende instellingen als code inschakelen en bijwerken:

      sseapi_rpc_queue:
          name: sseapi-rpc
          strategy: always
          push_interval: 5
          batch_limit: 500
          age_limit: 3600
          size_limit: 360000
          vacuum_interval: 86400
          vacuum_limit: 100000
    • Ladingscache inschakelen:
      sseapi_local_cache:
          load:3600
      Opmerking: Als de engine rpcqueue is ingeschakeld, moet ook de ladingscache worden ingeschakeld zodat de Salt-master de opdrachten correct kan afhandelen.
    • De ladingsgrootte van minion-grains beperken:
      sseapi_max_minion_grains_payload:2000
    • Schakel het overslaan van opdrachten in voor opdrachten die ouder zijn dan een gedefinieerde tijd (in seconden). Gebruik bijvoorbeeld 86400 om in te stellen dat opdrachten die ouder zijn dan een dag worden overgeslagen. Indien ingesteld op 0, is deze functie uitgeschakeld:
      sseapi_command_age_limit:0
      Opmerking:

      Dit is handig tijdens de upgrade, om te voorkomen dat oude commando's die in de database zijn opgeslagen, onverwacht worden uitgevoerd.

    Samen verhogen gebeurteniswachtrijen in Salt en de wachtrij-engines, ladingscache en groottelimiet van grains-lading en ouderdomslimiet van commando's in de Salt-masterplug-in de doorvoer en verminderen ze de latentie van de communicatie tussen de Salt-master en SaltStack Config in de meest prestatiegevoelige codepaden.

  6. Herstart de masterservice.
    sudo systemctl restart salt-master
  7. OPTIONEEL: U wilt mogelijk een testopdracht uitvoeren om ervoor te zorgen dat de masterplug-in nu communicatie tussen de master en het RaaS-knooppunt inschakelt.
    salt -v '*' test.ping
De RHEL 8/9-master wordt nu weergegeven op de pagina Mastersleutels .
Voorzichtig: Accepteer de mastersleutel op dit moment niet.

De minionagent configureren

Volg deze stappen om de minionagent op het rhel9-masterknooppunt te configureren om naar zichzelf te wijzen.
  1. Meld u via SSH aan bij het rhel9-masterknooppunt en blader naar de directory /etc/salt/minion.d.
  2. Bewerk het bestand minion.conf en wijzig de masterinstelling in master:localhost.
  3. Blader naar de directory /etc/salt/pki/minion en verwijder het bestand minion_master.pub.
  4. Herstart de Salt-minionservice met
    systemctl restart salt-minion
  5. Bekijk en accepteer de minionsleutel op de rhel9-master door het volgende uit te voeren:
    salt-key
    salt-key -A
  6. Ga in SaltStack Config naar Beheer > Mastersleutels en accepteer de mastersleutel.

    De RHEL8/9-master moet nu worden weergegeven op de pagina Doelen.

  7. Meld u via SSH aan bij de RHEL7-master en verwijder de sleutel voor de rhel9-masterminion.

Salt-minionsystemen migreren

Er zijn veel manieren om uw beheerde systemen te migreren. Als u al een proces heeft ingesteld, volgt u dat proces. Als u dat nog niet heeft gedaan, gebruikt u deze instructies om uw Salt-minions van een oude Salt-master naar een nieuwe Salt-master te migreren.
Opmerking: Deze stappen zijn niet van toepassing op systemen met meerdere masters.
  1. Maak een orkestratiebestand. Bijvoorbeeld:
    # Orchestration to move Minions from one master to another
    # file: /srv/salt/switch_masters/init.sls
    {% import_yaml 'switch_masters/map.yaml' as mm %}
    {% set minions = mm['minionids'] %}
    
    {% if minions %}
    {% for minion in minions %}
    move_minions_{{ minion }}:
      salt.state:
        - tgt: {{ minion }}
        - sls:
          - switch_masters.move_minions_map
    
    {% endfor %}    
    {% else %}
    no_minions:
      test.configurable_test_state:
        - name: No minions to move
        - result: True 
        - changes: False 
        - comment: No minions to move
    {% endif %}
    
    remove_minions:
      salt.runner:
        - name: manage.down
        - removekeys: True 
    
    # map file for moving minions
    # file: /srv/salt/switch_masters/map.yaml
    newsaltmaster: <new_ip_address>
    oldsaltmaster: <old_ip_address>
    minionids:
      - minion01
      - minion02
      - minion03
    state to switch minions from one master to another
    # file: /srv/salt/swith_masters/move_minions_map.sls
    {% set minion = salt['grains.get']('os') %}
    # name old master and set new master ip address
    {% import_yaml 'switch_masters/map.yaml' as mm %}
    {% set oldmaster = mm['oldsaltmaster'] %}
    {% set newmaster = mm['newsaltmaster'] %}
    
    # remove minion_master.pub key
    {% if minion == 'Windows' %}
    remove_master_key:
      file.absent:
        - name: c:\ProgramData\Salt Project\Salt\conf\pki\minion\minion_master.pub
    
    change_master_assignment:
      file.replace:
        - name: c:\ProgramData\Salt Project\Salt\conf\minion.d\minion.conf 
        - pattern: 'master: {{oldmaster}}'
        - repl: 'master: {{newmaster}}'
        - require:
          - remove_master_key
    {% else %}
    remove_master_key:
      file.absent:
        - name: /etc/salt/pki/minion/minion_master.pub
    
    # modify minion config file
    change_master_assignment:
      file.replace:
        - name: /etc/salt/minion.d/minion.conf 
        - pattern: 'master: {{oldmaster}}'
        - repl: 'master: {{newmaster}}'
        - require:
          - remove_master_key
    {% endif %}
    # restart salt-minion
    restart_salt_minion:
      service.running:
        - name: salt-minion 
        - require:
          - change_master_assignment
        - watch:
          - change_master_assignment
    
  2. Maak een map.yaml-bestand dat het volgende bevat (zie het bovenstaande codevoorbeeld):
    1. IP-adres/FQDN voor <oude Salt-master>
    2. IP-adres/FQDN voor <nieuwe Salt-master>
    3. Lijst met saltminionIDs die moeten worden verplaatst.
  3. Maak een statusbestand (zie bovenstaand codevoorbeeld) om de migratie te verwerken. Bijvoorbeeld: move_minions_map.sls.
  4. Voeg deze bestanden toe aan een directory (bijvoorbeeld /srv/salt/switch_masters op de RHEL7 Salt-master.
  5. Voer het orkestratiebestand uit op de RHEL7 Salt-master. Dit resulteert in fouten omdat de Salt-minionservice opnieuw wordt gestart en niet weer online komt voor de RHEL7 Salt-master.
  6. Volg de voortgang in SaltStack Config. Accepteer de gemigreerde Salt-minion-id's wanneer ze in de gebruikersinterface worden ingevuld.
  7. Nadat alle systemen zijn gemigreerd, voert u de opdracht test.ping voor hen uit om te controleren of alle communicatie goed verloopt.

Bestaande bestanden migreren

Dit proces is volledig afhankelijk van de wijze waarop uw organisatie uw status- en configuratiebestand maakt, opslaat en beheert. De meest voorkomende gebruikssituaties worden hieronder ter referentie beschreven.

Gebruikssituatie 1: SaltStack Config-bestandsserver

In dit geval worden uw SaltStack Config-bestanden opgeslagen in de Postgres-database en weergegeven in de SaltStack Config-gebruikersinterface.

Tijdens het herstellen van de Postgres-database worden deze bestanden hersteld en gemigreerd. Er zijn geen aanvullende stappen die u moet uitvoeren om deze bestanden te migreren naar uw RHEL8/9-omgeving.

Gebruikssituatie 2: Github/Gitlab-bestandsserver

In deze gebruikssituatie worden uw status- en configuratiebestanden voor SaltStack Config opgeslagen in Github/Gitlab/Bitbucket of een ander systeem voor codeversiecontrole.

Aangezien deze bestanden in een tool van derden zijn opgeslagen, moet u uw nieuwe RHEL8/9-master configureren om verbinding te maken met uw opslagplaatssysteem. Deze configuratie komt overeen met uw RHEL7-opslagplaatsconfiguratie .

Gebruikssituatie 3: Lokale bestandsroots van Salt-master

In deze gebruikssituatie is uw SaltStack Config opgeslagen in een lokale bestandsserverdirectory op de Salt-master.

Als u deze bestanden wilt migreren naar uw RHEL8/9-master, kopieert u de betreffende directory's van uw RHEL7-master naar uw RHEL8/9-master.
  1. Bestanden worden opgeslagen in /srv/salt en /srv/pillar voor respectievelijk statusbestanden en pillarbestanden.
  2. Maak een veilige kopie van deze directory's vanuit uw RHEL7-master naar uw RHEL8/9-master met een veilig kopieerprogramma zoals winscp of de commandoregel.
  3. Pillardatum vernieuwen met Salt \* saltutil.refresh_pillar