标题主要说明了一切。
我认为任何工作的原因是设置的文档control_path
:
这是保存 ControlPath 套接字的位置。这默认为:
control_path=%(directory)s/ansible-ssh-%%h-%%p-%%r
在某些具有很长主机名或很长路径名(由长用户名或深度嵌套的主目录引起)的系统上,这可能超过文件套接字名称的字符限制(大多数平台为 108 个字符)。在这种情况下,您可能希望将字符串缩短为如下所示:
control_path = %(directory)s/%%h-%%r
Ansible 1.4 及更高版本将指示用户在遇到此问题的情况下使用“-vvvv”运行,如果是这样,很容易判断控制路径文件名太长。这可能在 EC2 上经常遇到。如果在 ssh_args 中设置了 -o ControlPath,则忽略此设置。
文档从不指定有什么价值directory
,或者这里可以放什么其他东西。有没有这样的地方?
ANSIBLE_SSH_CONTROL_PATH 的较新文档(Google 出于某种原因喜欢旧版本)提到
%(directory)
并省略了很多关于路径长度限制的字眼。ANSIBLE_SSH_CONTROL_PATH_DIR 是配置定义中的下一个。
替换是使用 ssh 连接插件中的自定义代码实现的,执行 Python(不是 Jinja)字符串模板。ssh 连接代码是 Ansible 中最古老的代码之一,这是一种从未流行的遗留模式。
一般来说,Ansible 插件或模块会列出您可以提供的任何特殊值。