Configurare le credenziali SSH per ambiente


10

Sto cercando di capire come configurare le credenziali SSH separatamente per un ambiente di produzione e gestione temporanea con Ansible. Comprendo che è possibile configurare gli indirizzi IP e i nomi host del server separatamente utilizzando diversi file di inventario passando l' argomento -io --inventory-fileal ansible-playbookcomando. Tuttavia, non vedo tale opzione per ansible.cfg. Attualmente, le credenziali vivono /etc/ansible/ansible.cfgcome:

[defaults]
private_key_file=/home/caleb/.ssh/staging_key.pem
remote_user=ubuntu
sudo_user=root
gathering=explicit

Come posso configurare più credenziali SSH, una per la produzione e una per la stadiazione?


cosa cambia tra i tuoi ambienti? Solo il file chiave o anche user_user / sudo_user?
tedder42,

@ tedder42 La chiave privata SSH e remote_user.
user369450

Perché non lo copri nel tuo .ssh / config?
udondan,

@udondan C'è un modo per specificare una sola chiave una volta per più host in .ssh/config?
user369450

Si, puoi farlo. È possibile creare più gruppi con nomi host o pattern espliciti. Vorrei pubblicare un esempio in una risposta.
udondan,

Risposte:


16

Sembra che la mia prima risposta non sia stata del tutto corretta. Mentre ovviamente è possibile risolverlo .ssh/configcome descritto di seguito, sembra anche possibile con i parametri di inventario comportamentale di Ansibles .

Dovresti (secondo i documenti) essere in grado di definire il file chiave e l'utente nel tuo inventario, sia per host o per gruppo.

Definizione per gruppo:

[some_hosts]
host1.foo
host2.foo

[some_hosts:vars]
ansible_ssh_user=ubuntu
ansible_ssh_private_key_file=/home/caleb/.ssh/staging_key.pem

Definizione per host:

[some_hosts]
host1.foo     ansible_ssh_user=ubuntu          ansible_ssh_private_key_file=/home/caleb/.ssh/staging_key.pem
host2.foo     ansible_ssh_user=another_user    ansible_ssh_private_key_file=/home/caleb/.ssh/production_key.pem

Ma puoi definire più gruppi host già presenti nel tuo .ssh/confige ogni gruppo può avere impostazioni separate per quanto riguarda chiave e utente.

Ecco un breve esempio

#Example with a wildcard
Host *.foo.com
  user ubuntu
  IdentityFile /home/caleb/.ssh/staging_key.pem

#Example with multiple hostnames
Host hostname.one hostname.two hostname.three
  user other_user
  IdentityFile /home/caleb/.ssh/production_key.pem

Inoltre, è possibile definire un valore predefinito e sovrascriverlo in seguito con impostazioni più dettagliate.

Host *
  user defaut_username

Host somehost
  user special_username
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.