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 neexistujedo filepillaru
/etc/salt/filepillar/hosts/slot4/ssh_clientse 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.