ΠΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ:
env.use_ssh_config = True
@hosts(['example'])
def test():
run('uname')
ΠΈ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ SSH:
Host example
HostName example.com
Π― ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΡΠΎ:
$ fab test
[example] Executing task 'test'
[example] run: uname
Fatal error: Name lookup failed for example.com
Underlying exception:
nodename nor servname provided, or not known
Aborting.
# BUT!
$ ssh example uname
Linux
ΠΡΡΡ ΠΈΠ΄Π΅ΠΈ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ?
Π― ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠ·Π½Π°Π», ΡΡΠΎ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ HostName example.com_
(ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ β ΡΡΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ Π·Π°Π²Π΅ΡΡΠ°ΡΡΠΈΠΉ ΠΏΡΠΎΠ±Π΅Π») Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ SSH.
ΠΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ # 305 ΡΠ½ΠΎΠ²Π° ΠΈ ΡΠ½ΠΎΠ²Π°?
Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ssh
, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π° (Fabric Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ Ρ
ΠΎΡΡ "example"
) Ρ ΠΊΠ»ΡΡΠΎΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ssh, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ( "example ")
Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² SSHConfig.lookup
, ΡΠ°ΠΌ Ρ ΡΠ΄Π΅Π»Π°Ρ ΡΡΡΠ»ΠΊΡ.
Π‘ΠΌ. SSH # 23
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ @yuvadm - ΠΌΠ½Π΅ ΡΠΎΠΆΠ΅ Π΄ΠΎΡΡΠ°Π»ΠΎΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ
ΠΠ΅Π½Ρ ΡΠΎΠΆΠ΅ ΡΠΊΡΡΠΈΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ° Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠΌ, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π² ΡΡΠΎ Π·Π΄Π΅ΡΡ Π΄Π»Ρ Π±ΡΠ΄ΡΡΠΈΡ
ΠΈΡΠΊΠ°ΡΠ΅Π»Π΅ΠΉ:
ΠΡΠΈΠ±ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ Ρ ΠΏΠΎΠ»ΡΡΠ°Π», Π±ΡΠ»Π° Fatal error: Name lookup failed for hosts
, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π½Π° ΡΠ»ΠΎΠ²Π°ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ env.roledefs
.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ΅Π½Ρ ΡΠΎΠΆΠ΅ ΡΠΊΡΡΠΈΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ° Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠΌ, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π² ΡΡΠΎ Π·Π΄Π΅ΡΡ Π΄Π»Ρ Π±ΡΠ΄ΡΡΠΈΡ ΠΈΡΠΊΠ°ΡΠ΅Π»Π΅ΠΉ:
ΠΡΠΈΠ±ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ Ρ ΠΏΠΎΠ»ΡΡΠ°Π», Π±ΡΠ»Π°
Fatal error: Name lookup failed for hosts
, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π½Π° ΡΠ»ΠΎΠ²Π°ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅env.roledefs
.