标题基本上说明了一切。
我认为任何工作都是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
是什么,或者这里可以放什么其他东西。有地方指定吗?
答案1
ANSIBLE_SSH_CONTROL_PATH 的较新文档(出于某种原因,Google 喜欢旧版本)提到%(directory)
并省略了不少关于路径长度限制的词。
这是保存 ssh 的 ControlPath 套接字的位置,它使用 ssh 的变量替换。自 2.3 起,如果为空,ansible 将生成唯一的哈希值。使用
%(directory)
s 来指示在何处使用控制目录路径设置。在 2.3 之前,它默认为control_path=%(directory)s/ansible-ssh-%%h-%%p-%%r
。请注意,如果-o ControlPath
在 ssh args 中设置了 ,则此设置将被忽略。
ANSIBLE_SSH_CONTROL_PATH_DIR 是配置定义中的下一个。
如果控制路径设置为空,则设置用于 ssh 控制路径的目录。此外,还
%(directory)
为控制路径设置提供 s 变量。
替换是使用 ssh 连接插件中的自定义代码实现的,执行 Python(不是 Jinja)字符串模板。ssh 连接代码是 Ansible 中最古老的代码之一,这是一种从未流行的遗留模式。
一般来说,Ansible 插件或模块会列出您可以提供的值的任何特殊内容。