Ansible: ssh์—์„œ 'unix ๋„๋ฉ”์ธ ์†Œ์ผ“ "๋„ˆ๋ฌด ๊น๋‹ˆ๋‹ค"' ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ œ์–ด ๊ฒฝ๋กœ ์„ค์ • ์—…๋ฐ์ดํŠธ๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2015๋…„ 07์›” 09์ผ  ยท  66์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ansible/ansible

๋ฌธ์ œ ์œ ํ˜•

๊ธฐ๋Šฅ ์•„์ด๋””์–ด

๊ตฌ์„ฑ ์š”์†Œ ์ด๋ฆ„

SSH ์ œ์–ด ์ง€์†

ANSIBLE ๋ฒ„์ „

2.0

์š”์•ฝ

ec2 ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ssh๋Š” ๋‹ค์Œ ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

SSH Error: unix_listener: "/Users/luke/.ansible/cp/ansible-ssh-ec2-255-255-255-255.compute-1.amazonaws.com-22-ubuntu.CErvOvRE5U0urCgm" too long for Unix domain socket

์ „์ฒด ์˜ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

$ ansible -vvvv -i ec2.py -u ubuntu us-east-1 -m ping
<ec2-255-255-255-255.compute-1.amazonaws.com> ESTABLISH CONNECTION FOR USER: ubuntu
<ec2-255-255-255-255.compute-1.amazonaws.com> REMOTE_MODULE ping
<ec2-255-255-255-255.compute-1.amazonaws.com> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/Users/luke/.ansible/cp/ansible-ssh-%h-%p-%r" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 ec2-255-255-255-255.compute-1.amazonaws.com /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1436458336.4-21039895766180 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1436458336.4-21039895766180 && echo $HOME/.ansible/tmp/ansible-tmp-1436458336.4-21039895766180'
ec2-255-255-255-255.compute-1.amazonaws.com | FAILED => SSH Error: unix_listener: "/Users/luke/.ansible/cp/ansible-ssh-ec2-255-255-255-255.compute-1.amazonaws.com-22-ubuntu.CErvOvRE5U0urCgm" too long for Unix domain socket
    while connecting to 255.255.255.255:22
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.

๋‚˜๋Š” ์—ฌ๊ธฐ์— IP ๋“ฑ์˜ ๋ฏผ๊ฐํ•œ ์ •๋ณด ์ค‘ ์ผ๋ถ€๋ฅผ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.

affects_2.0 affects_2.3 feature

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๊ฒฝ๋กœ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ด๊ฒƒ์„ ๋‚ด ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

[ssh_connection]
control_path = %(directory)s/%%h-%%p-%%r

์˜ค๋ฅ˜ ์ถœ๋ ฅ์— ํฌํ•จํ•˜๊ฑฐ๋‚˜ ์‹คํŒจํ•˜๋Š” ๋Œ€์‹  ๋” ์šฐ์•„ํ•œ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  66 ๋Œ“๊ธ€

๊ฒฝ๋กœ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ด๊ฒƒ์„ ๋‚ด ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

[ssh_connection]
control_path = %(directory)s/%%h-%%p-%%r

์˜ค๋ฅ˜ ์ถœ๋ ฅ์— ํฌํ•จํ•˜๊ฑฐ๋‚˜ ์‹คํŒจํ•˜๋Š” ๋Œ€์‹  ๋” ์šฐ์•„ํ•œ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋ฅผ ์œ„ํ•ด ๊ฐ™์€ ์˜ค๋ฅ˜! ์ด ์ˆ˜์ • ์‚ฌํ•ญ์—์„œ LukeHoersten์˜ ์˜๊ฒฌ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

@LukeHoersten ์˜ ์†”๋ฃจ์…˜์„ ์ง€์ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๊ดœ์ฐฎ์•„์š”. ๋ฐ”๋ผ๊ฑด๋Œ€ ์šฐ๋ฆฌ๋Š” ๊ฑฐ๊ธฐ์—์„œ ๋” ํ™•์‹คํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ƒˆ๋‚ด๊ธฐ๋“ค์—๊ฒŒ ๋ถˆ๋ฆฌํ•˜๋‹ค.

๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ์— ์ฃผ์„ ์ฒ˜๋ฆฌ๋œ ๋˜ ๋‹ค๋ฅธ ์ œ์•ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
control_path = %(directory)s/%%h-%%r

๊ทธ๋Ÿฌ๋‚˜ ์˜ˆ, ๋„์›€ ๋ฉ”์‹œ์ง€๊ฐ€ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ €๋„ ์ด๊ฒƒ๋งŒ ์ณค์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ƒˆ๋กœ์šด ์‚ฌ๋žŒ์ด๊ณ  ์—„์ฒญ๋‚œ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ต๋ณ€ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๊ทธ๋ฆฌ๊ณ  ์ˆ˜์ •์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ :+1: ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด.

์˜ค๋Š˜ ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค. ansible.cfg ์— ๋Œ€ํ•œ ํžŒํŠธ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!!

control_path ํŽธ์ง‘์€ Mac OSX El Capitan์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ El Capitan์—์„œ ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

[ssh_connection]
control_path = %(๋””๋ ‰ํ† ๋ฆฌ)s/%%h-%%r

@willotter๊ฐ€ ์ง€์ ํ–ˆ๋“ฏ์ด https://raw.githubusercontent.com/ansible/ansible/devel/examples/ansible.cfg ์—์„œ ์ฃผ์„ ์ฒ˜๋ฆฌ๋œ ๋ช…๋ น๋ฌธ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋ฌธ์ œ์ธ ์ด์œ ๋ฅผ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. Windows ์™ธ๋ถ€์—์„œ ๊ธด ๊ฒฝ๋กœ ์ด๋ฆ„์ด ์–ธ์ œ๋ถ€ํ„ฐ ๋ฌธ์ œ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ EI Capitan์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„ ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

[ssh_connection]
control_path = %(directory)s/%%h-%%p-%%r

@deyvsh ๊ทธ๊ฒƒ์ด

El Capitan์ด Apple์—์„œ ์ถœ์‹œ๋œ ์ดํ›„๋กœ. ์ค‘๊ตญ์–ด ํŽ˜์ด์ง€๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ด๊ฒƒ์€ MacOS์—์„œ ์ด ์ƒˆ๋กœ์šด ๋™์ž‘์„ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š” ์œ ์ผํ•œ ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค. ssh๋ฅผ ํ†ตํ•ด ์›๊ฒฉ ํŒŒ์ผ์— ํˆฌ๋ช…ํ•˜๊ฒŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” emacs์—์„œ Tramp ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์œ ๋‹‰์Šค ๋„๋ฉ”์ธ ์†Œ์ผ“์˜ ๊ธด ํŒŒ์ผ ์ด๋ฆ„์— ๋Œ€ํ•œ ๋™์ผํ•œ ์˜ค๋ฅ˜์ด์ง€๋งŒ Ansible์—์„œ์ฒ˜๋Ÿผ ํ•ด๊ฒฐํ•˜๊ธฐ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@cswarth ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ์ด ssh ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ssh ๊ตฌ์„ฑ ํŒŒ์ผ ~/.ssh/config control_path๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Host *
  ControlPath /tmp/%r@%h:%p

์ €๋Š” Mac OS X์ด ์—†์–ด์„œ ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์—†์ง€๋งŒ emacs๊ฐ€ SSH๋ฅผ ํ†ตํ•ด ํŠน์ • ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜์ง€ ์•Š๋Š” ํ•œ ์ด๊ฒƒ์€ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@willotter ๋‚˜๋Š” ์ด ์•„์ด๋””์–ด๋ฅผ ์ ์šฉํ•˜๊ณ  ๊ทธ๊ฒƒ์„ ์ž‘๋™์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๊ทธ๊ฒƒ์„ ๋‚ดsible.cfg ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

[ssh_connection]
control_path = /tmp/%%h-%%p-%%r

2017 ์—…๋ฐ์ดํŠธ: @willotter ๊ฐ€ ๋” ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค :(

@LukeHoersten ๋•๋ถ„์— ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!

์ด์— ๋Œ€ํ•œ ๊ทผ๋ณธ ์›์ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

https://github.com/openssh/openssh-portable/blob/9ada37d36003a77902e90a3214981e417457cf13/misc.c#L1070

int
unix_listener(const char *path, int backlog, int unlink_first)
{
    struct sockaddr_un sunaddr;
    int saved_errno, sock;

    memset(&sunaddr, 0, sizeof(sunaddr));
    sunaddr.sun_family = AF_UNIX;
    if (strlcpy(sunaddr.sun_path, path, sizeof(sunaddr.sun_path)) >= sizeof(sunaddr.sun_path)) {
        error("%s: \"%s\" too long for Unix domain socket", __func__,
            path);
        errno = ENAMETOOLONG;
        return -1;
    }

ํ•œ๊ณ„(sizeof(sunaddr.sun_path))๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man4/unix.4.html ์„ ์‚ดํŽด๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

           struct sockaddr_un {
                   u_char  sun_len;
                   u_char  sun_family;
                   char    sun_path[104];
           };

๊ฒฝ๋กœ๋Š” 0 ์ข…๋ฃŒ์ž๋ฅผ ํฌํ•จํ•˜์—ฌ 104์ž๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋˜ํ•œ https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Multiplexing#Manually_Establishing_Multiplexed_Connections ์—์„œ ๋…ผ์˜๋˜๊ณ  ์žˆ์œผ๋ฉฐ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

6.7๋ถ€ํ„ฐ %r@%h:%p์˜ ์กฐํ•ฉ๊ณผ ๊ทธ์— ๋Œ€ํ•œ ๋ณ€ํ˜•์„ %C๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ์กฐํ•ฉ์€ ์ž์ฒด์ ์œผ๋กœ %l%h%p%r์˜ ์—ฐ๊ฒฐ์—์„œ ํ•ด์‹œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ์‚ฌ์šฉํ•˜๋ ค๋Š”

[ssh_connection]
control_path = %(directory)s/%%C

๋˜ํ•œ ๋ณด์•ˆ ๋•Œ๋ฌธ์— /tmp ๋˜๋Š” ์„ธ๊ณ„์—์„œ ์“ธ ์ˆ˜ ์žˆ๊ณ  ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์œ„์น˜์—์„œ ๋ฒ—์–ด๋‚˜๊ณ  ์‹ถ์–ดํ•ฉ๋‹ˆ๋‹ค.

http://pastebin.com/ugXKMFsv ๋„ ์ฐธ์กฐ

@isotopp ์ข‹์€ ์ œ์•ˆ. ํ–ฅํ›„ ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋ณธ๊ฐ’์„ control_path = %(directory)s/%%C ๋กœ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

@LukeHoersten ์ œ ์ƒ๊ฐ์—๋Š” ๊ฐ€๋Šฅ๋„ ๊ธฐ๋ณธ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ๋‚ด๊ฐ€ ๊ทธ๋žฌ์–ด

[:~] $ grep -i control ~/.ssh/config
ControlMaster auto
ControlPath ~/.ssh/_%C

Ping @bcoca - ์œ„์˜ ๋ถ„์„ ๋ฐ ์ œ์•ˆ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

+1

์•ฝ๊ฐ„ ์ด์ „ ๋ฒ„์ „์˜ openssh๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋งŽ์€ OS/๋ฐฐํฌํŒ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

http://pastebin.com/ugXKMFsv ์—์„œ ์ œ์•ˆ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋ฌธ์„œ ๋ฐ ์ฃผ์„๋งŒ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋ฒ„์ „์˜ openssh์—์„œ ์ž‘๋™ํ•˜์ง€๋งŒ %C์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด ์ปดํ“จํ„ฐ์— ๊ธด ์‚ฌ์šฉ์ž ์ด๋ฆ„(11์ž)์ด ์žˆ์–ด์„œ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ๊ธ€์ž ์ˆ˜ ์ œํ•œ์„ ์ดˆ๊ณผํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/ansible/ansible/blob/devel/examples/ansible.cfg#L216 -L225

๋‚˜๋Š” -%%r ๋–จ์–ด๋œจ๋ ธ๊ณ  ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.

๋‚ด ์ธ๋ฒคํ† ๋ฆฌ ํŒŒ์ผ ๋Œ€์‹ ์— ๋‚ด group_vars ํŒŒ์ผ์„ ์ œ๊ณตํ•˜๊ณ  ansible์ด ์–ด๋–ป๊ฒŒ๋“  ์•”ํ˜ธํ™”๋œ ํŒŒ์ผ์„ ํ–‰๋ณตํ•˜๊ฒŒ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ  182937891273891723981723891723987189237189237981273981๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์œผ๋กœ ์ˆ˜๋ฝํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋Š˜ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. SSH๋Š” ๋˜ํ•œ ๊ธด ControlPath๋ฅผ ์•Œ์•„์ฐจ๋ฆฌ๊ธฐ ์ „๊นŒ์ง€ ๊ทธ๊ฒƒ์ด ์ด์ƒํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ›„์†์„ ์œ„ํ•œ ๊ฒฝ๊ณ  - -vvvv๋กœ ๋ชจ๋“  ๊ฒƒ์„ ์‹คํ–‰ํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ ํ˜ธ์ŠคํŠธ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. OS X El Capitan์—์„œ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

+1
์ด๊ฒƒ์€ OS X El Capitan์—์„œ ๋‚ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

OS X EL Capitan์—์„œ๋„ ์ €๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ brew๋ฅผ ํ†ตํ•ด ๊ฐ€๋Šฅํ•˜๋ฉด ํŒŒ์ผ์€ /usr/local/etc/ansible/ansible.cfg

:+1 ์ด๊ฒƒ์€ ec2-XX-XXX-XX-XX.eu-west-1.compute.amazonaws.com ์™€ ๊ฐ™์€ ๊ธด ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ๊ฐ€์ง„ ํ˜ธ์ŠคํŠธ๋ฅผ ๊ฐ–๋Š” ansible all -i inventory -m ping ๋ฅผ ํ•˜๋ ค๊ณ  ํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ El Capitan์—์„œ ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ansible.cfg ํŒŒ์ผ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

[ssh_connection]
control_path = %(directory)s/%%C

์ด์ œ ansible .. ์‹คํ–‰ํ•ด๋„ ssh ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

OS X EL Capitan์—์„œ๋„ ์ €๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ brew๋ฅผ ํ†ตํ•ด ๊ฐ€๋Šฅํ•œ ํŒŒ์ผ์„ ์„ค์น˜ํ–ˆ๋‹ค๋ฉด ํŒŒ์ผ์€ /usr/local/etc/ansible/ansible.cfg์ž…๋‹ˆ๋‹ค.

์ €๋Š” El Capitan์ด๊ณ  brew๋ฅผ ํ†ตํ•ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ์„ค์น˜ํ–ˆ์œผ๋ฉฐ ํ•ด๋‹น ์„ค์ •์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ /usr/local/etc/ansible/ansible.cfg ํŒŒ์ผ์„ ๋ฌด์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

@tleyden ๊ทธ๊ฑด ๊ฝค ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. /usr/local/etc/ansible/ansible.cfg ๋Š” ์ €์—๊ฒŒ ์ž˜ ๋งž์Šต๋‹ˆ๋‹ค .

์˜ค, ๋ฐฉ๊ธˆ ์ฐจ์ด์ ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. brew๊ฐ€ ์•„๋‹Œ pip install ansible ๋ฅผ ํ†ตํ•ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ CErvOvRE5U0urCgm ์™€ ๊ฐ™์€ ๋ฌธ์ž์—ด์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ ์“ธ๋ชจ์—†๋Š” ๋ˆ ๋•Œ๋ฌธ์— ๋‚˜์—๊ฒŒ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์กฐ์น˜๋ฅผ ์ทจํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ์— ๋ช‡ ๊ฐ€์ง€ ์„ค๋ช…์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  • ์„ ์  ์„œ๋ฅ˜ ๋น„์น˜. ์ œ์•ˆ๋œ ๋ฌธ์„œ ์—…๋ฐ์ดํŠธ๋Š” ์ด ํ‹ฐ์ผ“์—์„œ ๋งํฌ๋œ ์š”์ ์— ์žˆ์ง€๋งŒ PR์—๋Š” ์—†์œผ๋ฏ€๋กœ ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • ๋” ๋‚˜์€ ์˜ค๋ฅ˜ ํฌ์ฐฉ -- %C๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  ssh๊ฐ€ ์ด๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉด ์‚ฌ๋žŒ๋“ค์—๊ฒŒ %l-%h-%p๋กœ ๋ฐ”๊พธ๋ผ๊ณ  ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๋กœ๊ฐ€ ๋„ˆ๋ฌด ๊ธธ๋ฉด ์‚ฌ๋žŒ๋“ค์—๊ฒŒ %C๋ฅผ ์‹œ๋„ํ•˜๊ฑฐ๋‚˜ ๋‹จ์ˆœํžˆ ๊ฒฝ๋กœ๋ฅผ ์ค„์ด๋„๋ก ์ง€์‹œํ•˜์‹ญ์‹œ์˜ค.
  • ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ssh๊ฐ€ %C๋ฅผ ์ง€์›ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฐ์ง€ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ  ์ง€์›ํ•œ๋‹ค๋ฉด ์‚ฌ์šฉํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค(์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ๋งŒ ๊ด€๋ จ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?). ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ํ›จ์”ฌ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•˜์‹ญ์‹œ์˜ค.)

๋‚˜๋Š” ๋˜ํ•œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ง๋ถ™์˜€๋‹ค.
%(directory)s/%%hโ€%%r
ํ•˜์ง€๋งŒ ๋‚ด ๊ธธ์€ ์•„์ง ๋„ˆ๋ฌด ๋ฉ€๋‹ค? ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”?

SSH Error: unix_listener: "/Users/myfullname/.ansible/cp/ec2-xx-xx-xx-xx.eu-central-1.compute.amazonaws.com-centos.AAZFTHkT5xXXXXXX" too long for Unix domain socket
    while connecting to 52.xx.xx.xx:22

Ubuntu 16.04์˜ 2.1.0.0์—์„œ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

$ ssh -V
OpenSSH_7.2p2 Ubuntu-4ubuntu1, OpenSSL 1.0.2g-fips  1 Mar 2016

์ด๊ฒƒ์„ ๋‚ดsible.cfg์— ์ถ”๊ฐ€ํ•˜๋ฉด ํšจ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

[ssh_connection]
control_path=%(directory)s/%%h-%%p-%%r

๋˜๋Š” ansible.cfg์—์„œ ssh_connection.control_path๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•„๋„ ๊ธด AWS ๋„๋ฉ”์ธ ์ด๋ฆ„์„ IP ์ฃผ์†Œ๋กœ ๋ณ€๊ฒฝํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋งํ–ˆ๋“ฏ์ด -vvvv๋กœ ์‹คํ–‰ํ•  ๋•Œ์ด ์˜ค๋ฅ˜๋Š” ๋ถ„๋ช…ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋””๋ฒ„๊ทธ ์ถœ๋ ฅ์—์„œ โ€‹โ€‹๋ช…๋ น์„ ๋ณต์‚ฌํ•˜๊ณ  ํ„ฐ๋ฏธ๋„์—์„œ ์ง์ ‘ ์‹คํ–‰ํ•˜์—ฌ "Too long for Unix domain socket" ์˜ค๋ฅ˜๋ฅผ ํ™•์ธํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ €๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” Ansible ํ”Œ๋ ˆ์ด๋ถ์„ ์‹คํ–‰ํ•˜๋Š” ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ IP์™€ FQDN ๊ฐ„์— ์ „ํ™˜ํ•ด์•ผ ํ•˜๋Š” ๋งค์šฐ ์„ฑ๊ฐ€์‹  ์ผ์ด์—ˆ์Šต๋‹ˆ๋‹ค... Ansible ์ธก์—์„œ ๊ณ„ํšํ•œ ์‹ค์ œ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@swoodford , ๊ธฐ๋ณธ ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด Linux ๋ฐฐํฌํŒ์— ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด fedora ๊ด€๋ฆฌ์ž๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋” ์งง์€ ์ œ์–ด ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด์ „ ๋ฐฐํฌํŒ๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋ ค๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฐฐํฌํŒ์˜ ์‚ฌ์šฉ์ž๋Š” ์ด์ œ ํ›จ์”ฌ ๋” ๋งŽ์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฒƒ์ด ์˜๋ฏธ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐฐํฌํŒ์€ ๋” ์•ˆ์ •์ ์ธ ์˜ต์…˜์œผ๋กœ ์ž‘๋™ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํžˆ ์ตœ์‹  ๋ฒ„์ „์ž„์„ ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ ์–ด๋„ ์ตœ์‹  ๋ฐฐํฌํŒ์€ ํŒจํ‚ค์ง• ์ค‘์— ๊ธฐ๋ณธ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ asible์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์•„์ฃผ ์žฌ๋ฏธ์žˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์–ผ๋งˆ ์ „์— cdist์—์„œ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๋‹ค๋ฅธ ๋ฒ„๊ทธ๋ฅผ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค). Unix์˜ sun_path ์ œํ•œ์€ 2016๋…„์— ์šฐ๋ฆฌ ๋ชจ๋‘๋ฅผ ๋ฌผ๋ฆฐ ์ •๋ง ์˜ค๋ž˜๋œ ์ œํ•œ์ž…๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์‰ฌ์šด ์†”๋ฃจ์…˜: ์—†์Œ.
๋‘ ๋ฒˆ์งธ ์ตœ์ƒ์˜ ์†”๋ฃจ์…˜: ์†Œ์ผ“ ์ด๋ฆ„์„ ์งง๊ฒŒ ์œ ์ง€ํ•˜์‹ญ์‹œ์˜ค. ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๊ธด ๊ฒฝ๋กœ์ธ ๊ฒฝ์šฐ ์—ฌ์ „ํžˆ ์ค‘๋‹จ๋จ
์„ธ ๋ฒˆ์งธ ์ตœ์ƒ์˜ ์†”๋ฃจ์…˜: /tmp/short-random-path/c ์–ด๋”˜๊ฐ€์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค(ํ•˜๋‚˜์˜ ๋ฌธ์ž๋งŒ ํ•„์š”ํ•จ).

์žฅ๊ธฐ ์†”๋ฃจ์…˜: sun_path ์ œํ•œ์„ ์—†์• ๊ฑฐ๋‚˜ ํ•ฉ๋ฆฌ์ ์ธ 2016๋…„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ธ์ƒ

%(directory) ๋Š” ๋ฌด์—‡์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

@isotopp

~/.ssh/config ํŒŒ์ผ์— ๋„ฃ๋Š” ์˜ฌ๋ฐ”๋ฅธ ๊ตฌ๋ฌธ(๋ฐ‘์ค„ ์ ‘๋‘์–ด ํฌํ•จ)์ž…๋‹ˆ๊นŒ?

ControlMaster auto
ControlPath ~/.ssh/_%C

์ด๊ฒƒ์€ asible.cfg ํŒŒ์ผ์˜ ์ด์ค‘ %% ์™€ ๊ฐ™์€ ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š” ์ด์Šค์ผ€์ดํ”„์ž…๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ฐ€๋Šฅํ•œ ์™ธ๋ถ€์—์„œ๋„ ssh๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋‘˜ ๋‹ค ๊ตฌ์„ฑํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ํ”„๋กœ์ ํŠธ์˜ ansible.cfg์— control_path ๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„์—๋„ ์—ฌ์ „ํžˆ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์ง€๋งŒ ๋ฒ„์ „ 2.1.3์œผ๋กœ ๋˜๋Œ๋ฆฌ๊ณ  2.2.1์„ ์‹คํ–‰ํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๋™์ผํ•œ ๋ช…๋ น์„ ์‹คํ–‰ํ–ˆ์œผ๋ฉฐ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „: 2.2.0.0์—์„œ ์—ฌ์ „ํžˆ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ •๋ง ์ด์ƒํ•œ ๋ฌธ์ œ. fedora 24์—์„œ ๊ฐ€๋Šฅํ•œ 2.2.0.0 -> ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
OSX์—์„œ 2016/07/05์˜ git head -> ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@bcoca ์ €๋Š” ํ•ญ์ƒ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ, centos 6.5 ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค). ์‚ฌ์šฉํ•  ์ œ์–ด ๊ฒฝ๋กœ๋ฅผ openssh/distro ๋ฒ„์ „์—์„œ ๋™์ ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์ด๋ฏธ ๋™์ ์ž…๋‹ˆ๋‹ค. '์Šค๋งˆํŠธ' ์—ฐ๊ฒฐ ๋’ค์— ์žˆ๋Š” ๋…ผ๋ฆฌ๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์ž„์„ ํ™•์ธํ•˜์„ธ์š”.

ํ˜ธ์ŠคํŠธ์—์„œ ํ˜ธ์ŠคํŠธ๋กœ ์—ฐ๊ฒฐํ•  ๋•Œ ๋ฐฐ๋‚ญ์— ssh ํ‚ค๊ฐ€ ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? :)

์ฐธ๊ณ ๋กœ EL7์—๋Š” openssh 6.6์ด ์žˆ๊ณ  %C๋Š” openssh 6.7์ด ๋  ๋•Œ๊นŒ์ง€ ์ถ”๊ฐ€๋˜์ง€ ์•Š์•˜๊ณ  ๋ฐฑํฌํŠธ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— %C๋Š” ํ˜„์žฌ ํ›Œ๋ฅญํ•œ ๊ธฐ๋ณธ๊ฐ’์ด ์•„๋‹™๋‹ˆ๋‹ค.

EL7์—์„œ ์™„์ „ํžˆ ํ™•์žฅ๋œ %l%h%p%r ํ˜•์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฌผ๋ก  ์—ฌ์ „ํžˆ ํ•ด์‹œ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ถ€๋ถ„์ ์œผ๋กœ๋งŒ ์™„ํ™”๋ฉ๋‹ˆ๋‹ค.

๋ฐฐํฌ๋œ ํŒจํ‚ค์ง€์— ๋งž๊ฒŒ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ๋ฐฐํฌํŒ ์†Œ์œ ์ž์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—…์ŠคํŠธ๋ฆผ์ด ์ด์™€ ๊ฐ™์€ ์ค‘์š”ํ•œ ๊ฐœ์„ ์„ ์ง„ํ–‰ํ•˜๊ธฐ ์ „์— 7๋…„์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ์•ˆ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ Ansible ๋ฒ„์ „ 2.2 ๋ฐ Ansible Tower 3.1.1์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฌธ์ œ๋„ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. @dennisobrien ์ด ์ด์ „์— ์ง€์ ํ–ˆ๋“ฏ์ด ์ธ๋ฒคํ† ๋ฆฌ๋ฅผ AWS ๋„๋ฉ”์ธ ์ด๋ฆ„์—์„œ AWS IP ์ฃผ์†Œ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋จผ์ € ๊ตฌ์„ฑ์—์„œ ์ด๋Ÿฌํ•œ ๋ณ€์ˆ˜๋งŒ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

---
ssh_connection:
  control_path: "%(directory)s/%%h-%%p-%%r"

@b-long , control_path %(directory)s/%%C

๋‚ด ์„œ๋ฒ„์— ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉฐ ๋ณ€๊ฒฝํ•  ๊ถŒํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@thefourtheye ์„œ๋ฒ„ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ์ˆœ์ „ํžˆ ํด๋ผ์ด์–ธํŠธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ์˜ ์•ž๋ถ€๋ถ„์— ์žˆ๋Š”sible.cfg ํŒŒ์ผ์—์„œ ์„ค์ •ํ•˜๋Š” ์˜ต์…˜์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@antoineco ์˜ค, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” sible์„ ์ฒ˜์Œ ์ ‘ํ–ˆ๊ณ  ๋‚ด ์ปดํ“จํ„ฐ์— ์„ค์น˜ํ•˜์ง€๋„ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์— ansible.cfg ํŒŒ์ผ์ด ์žˆ์œผ๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ~/์— ๊ตฌ์„ฑ ํŒŒ์ผ .ansible.cfg๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ชจ๋“  ์†”๋ฃจ์…˜์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
[defaults] inventory=/etc/ansible/hosts [ssh_connection] control_path=%(directory)s/%%h-%%r control_path_dir=~/.ansible/cp

๊ทธ๋ฆฌ๊ณ  ssh known_hosts์— know host์™€ ip๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉฐ EC2์˜ ์šฐ๋ถ„ํˆฌ์ž…๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค:

fatal: [default]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Warning: Permanently added 'ec2-xx-192-174-42.ap-northeast-1.compute.amazonaws.com,xx.192.174.42' (ECDSA) to the list of known hosts.\r\nunix_listener: \"/Users/name/.ansible/cp/ec2-xx-192-174-42.ap-northeast-1.compute.amazonaws.com-ubuntu.1fndG2vtHPliheeZ\" too long for Unix domain socket\r\n", "unreachable": true

control_path = %(directory)s/%%C ์ œ์•ˆ๋œ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@akostadinov ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋„ˆ๋ฌด ๋งŽ์€ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๋„ˆ๋ฌด ๋งŽ์€ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋” ์–ด๋ ค์› ๋‹ค๋ฉด... ๊ทธ ์†”๋ฃจ์…˜ ์ œ๊ณต์ž๋ฅผ ์ €์ฃผํ•˜์‹ญ์‹œ์˜ค!

๋‚ด ์œ„์น˜ ์‹œ์Šคํ…œ์˜ ~/ansible.cfg ํŒŒ์ผ์— ์ œ์•ˆ๋œ ๋ชจ๋“  ์ค„์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋„์›€์ด ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํฌ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค.

์ง€๊ธˆ ์ €์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์€ nslookup ๋จธ์‹ ์˜ IP ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋กœ๊ทธ์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@fourtheye , ์—ฌ๊ธฐ์—์„œ "์ œ์•ˆ๋œ ์ค„"์ด ๋ช‡ ๊ฐœ์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ข‹์•„์š”๊ฐ€ 50๊ฐœ ์ด์ƒ์ธ ๊ฒŒ์‹œ๋ฌผ์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ๊ทธ๋Ÿฌ๋‚˜ ์ ์ ˆํ•œ ์˜ต์…˜ ์™ธ์— ์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋Š” ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ๊ฒฝ์šฐ ~/.ansible.cfg . ์„ธ๋ถ€ ์‚ฌํ•ญ์—์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด์‹ญ์‹œ์˜ค. ์‚ฌ์šฉ์ž ๊ตฌ์„ฑ ํŒŒ์ผ ์•ž์˜ ์ ์€ ์ผ๋ฐ˜์ ์ธ ์œ ๋‹‰์Šค ๊ทœ์น™์ž…๋‹ˆ๋‹ค.

@akostadinov ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์˜คํƒ€์˜€์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ƒ๊ฒผ์–ด์š”

โžœ  ~ cat ~/.ansible.cfg
[ssh_connection]
control_path = %(directory)s/%%h-%%p-%%r

๋‚ด .ansible.cfg ๋กœ ์ฐจ์ž„ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

[ssh_connection]
control_path = /tmp/control_%%l_%%h_%%p_%%r

๋‚˜์—๊ฒŒ directory ๋Š” ์—„์ฒญ๋‚˜๊ฒŒ ๊ธธ์—ˆ๊ณ , ํ›„์ž๋Š” ๋‚™ํƒ€์˜ ๋“ฑ์„ ๋ถ€๋Ÿฌ๋œจ๋ฆฌ๋Š” ์ง€ํ‘ธ๋ผ๊ธฐ์ผ ๋ฟ์ด์—ˆ๋‹ค. ๋˜ํ•œ ๋™์ผํ•œ ์—ฐ๊ฒฐ์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก .ssh/config ์ด๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ControlMaster                    auto
ControlPath                      /tmp/control_%l_%h_%p_%r

์ฃ„์†กํ•˜์ง€๋งŒ ํ•˜๋“œ์ฝ”๋”ฉ๋œ tmp๋Š” ์ด์‹์ด ๋ถˆ๊ฐ€๋Šฅํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‹ฌ๊ฐํ•œ ๋ณด์•ˆ ์œ„ํ—˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ข‹์€ ์ด์œ ๋กœ MacOS๋Š” ์‚ฌ์šฉ์ž๊ฐ€ /tmp์— ์“ฐ๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ๊ฐ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ๊ฒฉ๋ฆฌ๋œ(๊ฐœ์ธ) tmp ํด๋”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Tmp๋Š” ansible์„ ํŒจ์น˜ํ•œ ํ›„ %(tmp)s ...์™€ ๊ฐ™์€ OS ์ œ๊ณต tmp ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„, ๊ธฐ์กด ์˜๊ฒฌ์„ ์ฝ์œผ์‹ญ์‹œ์˜ค. ๋ชจ๋‘๊ฐ€ ๊ฐ™์€ ๊ฒƒ์„ ์š”๊ตฌํ•˜๊ณ  ๊ฐ™์€ ์†”๋ฃจ์…˜์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์˜ค๋Š” ๊ฒƒ์€ ์–ด๋ฆฌ์„์€ ์ผ์ž…๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ณ  https://github.com/ansible/ansible/issues/11536#issuecomment -153030743์„ ์ฐธ์กฐ

๋ˆ„๊ตฐ๊ฐ€ ๋” ์ด์ƒ์˜ ์ŠคํŒธ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์Šค๋ ˆ๋“œ๋ฅผ ๋‹ซ์œผ์‹ญ์‹œ์˜ค.

@ssbarnea harcoded ์•„๋ฌด ๊ฒƒ๋„ ์ด์‹ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค ... ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ๊ฐ’์ด ์•„๋‹™๋‹ˆ๋‹ค ... /tmp๊ฐ€ ๊ณ ์ •์ ์ด๊ณ  openssh๊ฐ€ ์ด๋Ÿฌํ•œ ํŒŒ์ผ์— ๋Œ€ํ•ด ํ•ฉ๋ฆฌ์ ์ธ ๋ชจ๋“œ(0600)๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ ๋ฌธ์ œ ๋˜๋Š” macOS ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ตœ๊ทผ openssh๊ฐ€ ํ•„์š”ํ•œ %C ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์†”๋ฃจ์…˜์— ๋Œ€ํ•ด ...

๋‚˜๋Š” ๊ณ ๋Œ€ ssh ๋ฒ„์ „, ํŠนํžˆ ๊ฐ€๋Šฅํ•œ ์ปจํŠธ๋กค๋Ÿฌ์— ๋Œ€ํ•ด์„œ๋Š” ๋ณ„๋กœ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ๋ช‡ ๊ฐ€์ง€ ๋’ค์— ๋‚จ๊ฒจ๋‘˜ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์˜ํ–ฅ์„ ๋ฐ›๋Š” ์‚ฌ๋žŒ๋“ค์ด ๊ณ„์† ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ ํฐ ๋ฌธ์ œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

Ansible ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX)์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ ํ•ฉํ•œ ๊ธฐ๋ณธ๊ฐ’์„ ์ œ๊ณตํ•˜๊ณ  ๋ณ€๊ฒฝ ํ•„์š”์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. %C ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฐœ๋ฐฉํ˜• openssh ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ 1-2% ์ด์ƒ์ธ์ง€ ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

๊ฒฉ์ฃผ๋กœ %(tmpdir)s m $(configdir)s , %(inventorydir)s ์™€ ๊ฐ™์€ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— Ansible์—์„œ ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ INI ๋ณ€์ˆ˜๋ฅผ ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ์‚ฌ๋žŒ๋“ค์ด ์žˆ์œผ๋ฉด ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์Šฌํ”„๊ฒŒ๋„ ์ œ ๊ฒฝ์šฐ์—๋Š” CI์˜ ์ผ๋ถ€๋กœ Ansible์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ  ๋™์ผํ•œ ์‹œ์Šคํ…œ์— ์—ฌ๋Ÿฌ Jenkins ๋…ธ๋“œ๊ฐ€ ์žˆ๊ณ  ๋™์ผํ•œ ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ssh ์„ธ์…˜ ํ•˜์ด์žฌํ‚น์ด ์ž์ฃผ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ํ›จ์”ฌ ๋” ์‹ฌ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๋‚ด ๋ฌธ์ œ๋Š” ๋” ๋ณต์žกํ•˜๊ณ  ์ด ํ‹ฐ์ผ“์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค.

6๊ฐœ์›” ์ „์— ๋ชจ๋“  ๋ฒ„์ „์˜ ssh์— ๋Œ€ํ•ด ์ผ๋ฐ˜์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. Ansible 2.3 ์ด์ƒ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ๋‹ค๋ฉด ์ด๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๋‘์ง€ ์•Š๊ณ  ์‚ฌ์šฉ์ž ์ •์˜ ์ œ์–ด ๊ฒฝ๋กœ๋ฅผ ansible.cfg์— ์„ค์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

https://github.com/ansible/ansible/commit/ac78347f2bc4a489c7e254c6c1d950fb45f240ad

https://github.com/ansible/ansible/blob/devel/examples/ansible.cfg#L360 -L367

# The path to use for the ControlPath sockets. This defaults to a hashed string of the hostname, 
# port and username (empty string in the config). The hash mitigates a common problem users 
# found with long hostames and the conventional %(directory)s/ansible-ssh-%%h-%%p-%%r format. 
# In those cases, a "too long for Unix domain socket" ssh error would occur.
#
# Example:
# control_path = %(directory)s/%%h-%%r
#control_path =

์ด ๋Œ€ํ™”๋Š” ์œ„์˜ ํŒจ์น˜๋ฅผ ์ฐธ์กฐํ•˜์ง€ ์•Š๊ณ  ๊ณ„์† ์ง„ํ–‰๋˜๋ฏ€๋กœ ์ž ๊ทธ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฃผ์ œ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์งˆ๋ฌธ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰