๊ธฐ๋ฅ ์์ด๋์ด
SSH ์ ์ด ์ง์
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 ๋ฑ์ ๋ฏผ๊ฐํ ์ ๋ณด ์ค ์ผ๋ถ๋ฅผ ๋ณ๊ฒฝํ์ต๋๋ค.
๊ฒฝ๋ก๋ฅผ ์ค์ด๊ธฐ ์ํด ์ด๊ฒ์ ๋ด ๊ฐ๋ฅํ ๊ตฌ์ฑ์ ์ถ๊ฐํ์ต๋๋ค.
[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 ๋๋ถ์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค!
์ด์ ๋ํ ๊ทผ๋ณธ ์์ธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
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
๋จ์ด๋จ๋ ธ๊ณ ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
:+1: https://github.com/ansible/ansible/issues/11536#issuecomment -156210086์ผ๋ก
๋ด ์ธ๋ฒคํ ๋ฆฌ ํ์ผ ๋์ ์ ๋ด 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
์ ๊ฐ์ ๋ฌธ์์ด์ ์ถ๊ฐํ๋ ์ด์ ๋ ๋ฌด์์
๋๊น? ๊ทธ ์ธ๋ชจ์๋ ๋ ๋๋ฌธ์ ๋์๊ฒ ๋ฌธ์ ๊ฐ ์๊ฒผ์ต๋๋ค.
์ด๋ค ์กฐ์น๋ฅผ ์ทจํ ์ ์๋์ง ๋ช ํํ ํ๊ธฐ ์ํด ์ฌ๊ธฐ์ ๋ช ๊ฐ์ง ์ค๋ช ์ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค.
๋๋ ๋ํ ๋ค์๊ณผ ๊ฐ์ด ๋ง๋ถ์๋ค.
%(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 =
์ด ๋ํ๋ ์์ ํจ์น๋ฅผ ์ฐธ์กฐํ์ง ์๊ณ ๊ณ์ ์งํ๋๋ฏ๋ก ์ ๊ทธ๋๋ก ํ๊ฒ ์ต๋๋ค. ์ฃผ์ ์ ๋ํ ์ถ๊ฐ ์ง๋ฌธ์ด ์๋ ๊ฒฝ์ฐ ๋ฉ์ผ๋ง ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ฒฝ๋ก๋ฅผ ์ค์ด๊ธฐ ์ํด ์ด๊ฒ์ ๋ด ๊ฐ๋ฅํ ๊ตฌ์ฑ์ ์ถ๊ฐํ์ต๋๋ค.
์ค๋ฅ ์ถ๋ ฅ์ ํฌํจํ๊ฑฐ๋ ์คํจํ๋ ๋์ ๋ ์ฐ์ํ ๋ค๋ฅธ ์์ ์ ์ํํ๋ ๋ฐ ์ ์ฉํ ์ ์์ต๋๋ค.