Ansible配置文件

时间:2016-06-15 23:49:34

标签: ansible ansible-playbook

我刚开始使用Ansible,我遇到了配置文件的一些问题。

最初,我无法ping主机,因为我的ansible套接字路径文件太长了。我通过引用Ansible: SSH Error: unix_listener: too long for Unix domain socket更改了此内容,并将我的路径更改为control_path=~/%%h‐%%r

这些转义序列(%%h and %%r)是什么?有没有可用的文件?有没有办法让我的路径更小?是否有IP地址的转义序列?

谢谢!

1 个答案:

答案 0 :(得分:0)

这与Ansible并无关系。控制路径是SSH存储其多路径会话套接字的地方。

http://man.openbsd.org/ssh_config.5

  

<强>了ControlPath
  指定用于连接共享的控制套接字的路径,如上面的ControlMaster部分所述,或者字符串“none”以禁用连接共享。在路径中,'%L'将被本地主机名的第一个组件替换,'%l'将被本地主机名(包括任何域名)替换,'%h'将被目标替换主机名,'%n'将替换为命令行上指定的原始目标主机名,'%p'表示目标端口,'%r'表示远程登录用户名,'%u'表示用户名和'% i'由运行ssh(1)的用户的数字用户ID(uid)和'%C'连接的散列:%l%h%p%r。建议用于机会性连接共享的任何ControlPath至少包括%h,%p和%r(或者替代%C),并放置在其他用户无法写入的目录中。这可确保唯一标识共享连接。

因此,主机IP没有占位符。缩短路径总是妥协。 ~/%%h‐%%r已经是最不可能的解决方案。如果您可以保证不会使用其他远程用户连接到主机,则可以安全地删除%r并仅使用%h

如果问题是您的主机名太长,可能在.ssh / config中创建别名是一种解决方案吗?

host short-name
    hostname very-long-name-that-makes-control-path-location-exceed-the-possible-length-limitation

%n然后应该引用可以代替short-name的{​​{1}}。