2. ssh client - distribuce klíčů

2.1. kroky

# editace pillar/roles/masters/ssh_config.sls
salt 'slot2' saltutil.refresh_pillar
salt 'slot2' celaeno_ssh.authorize
salt 'slot6' saltutil.refresh_pillar
salt 'slot6' state.apply subprofiles.ssh-client.configuration

2.2. popis

Hlavním místem, ze kterého se konfigurují jak mají být ssh klíče vygenerovány je tento pillar:

# pillar/roles/masters/ssh_config.sls
ssh_config:
  auth_keys_defined:                        # klíči zároven definuje, na které hosty má být ssh config aplikován
    slot1: ['slot2']                        # slot1 má v auth keys povoleno přihlášení ze slot2
    slot2: ['slot1']                        # slot2 má v auth keys povoleno přihlášení ze slot1
    slot3: ['slot4']
    slot4: ['slot3']
    gate-prod1: ['gate-prod2']
    gate-prod2: ['gate-prod1']
  auth_keys_everytime: ['slot1', 'slot2']   # každý server musí být dostupný ze slotu 1 a 2.

Provoláním salt 'slot1' celaeno_ssh.authorize na masterový node (zde slot1) se provede:

  • vygenerování privátních a veřejných klíčů do storage na saltmasteru do /etc/salt/pki-hosts - pokud ješte neexistuje

  • do filepillaru /etc/salt/filepillar/hosts/slot4/ssh_client se uloží:

    ssh_config[‘private’]

    privátní klíč každého stroje

    typ string

    ssh_config[‘public’]

    večejný klíč každého stroje

    typ string

    ssh_config[‘authorized’]

    veřejné klíče, které mají být nastaveny v authorized_keys. Právě z vazeb konfigurace nahoře.

    typu list of string

    ssh_config[‘others’]

    privátní klíče, které mají být uloženy na cílovém stroji v (/root/.ssh). Typicky bitbucket pro deployment

    typu dict kde klíčem je jméno souboru a hodnotou string s klíčem

Pillar je potřeba před použitím aktualizovat pomocí salt 'slot4' saltutil.refresh_pillar na cílový node

Samotné nasazení na cílový node provedeme pomocí: salt 'slot4' state.apply subprofiles.ssh-client.configuration

Warning

Existuje subprofile ssh-key-generator, který to měl řešit ale momentálně adept na smazání nebo přepis. Nenech se tím zmást :)

Tip

Neuděláme distribuci nějak saltově, reaktorem třeba.