Jenkins Ansible 插件中的 Ansible,忽略 SSH 配置
Ansible in Jenkins Ansible plugin, ignores SSH config
当 运行 Jenkins 使用 ansible 插件时,我正在努力解决有关 ansible 中 SSH 控制路径的问题。为清单中的主机使用长 FQDNS 时会出现此问题。
我试过以下方法:
在 Jenkins 用户的 SSH 配置文件中设置短主机名和控制路径
在 /etc/ansible/ansible.cfg
设置中设置 SSH args,例如:
[ssh_connection]
ssh_args="-F /var/jenkins_home/.ssh/config -o ControlMaster=auto -o ControlPersist=30m -o ConnectTimeout=60 -o ControlPath=/tmp/ssh-%C"
control_path="/tmp/ssh-%C"
Jenkins 插件对话框中的命令行选项--ssh-extra-args=
我似乎无法说服 Ansible 使用较短的控制路径,如下所示:
" /tmp/ssh-%C"
我仍然得到:
/var/jenkins_home/.ansible/cp/ansible-ssh-bastion-dev.westeurope.cloudapp.azure.com-22-jenkins.ivQ6vi6TPB3BrYta\" too long for Unix domain socket
这与我在各处设置的选项不符。
有人知道如何说服 Ansible 插件停止忽略 SSH 选项吗?
我用 Ansible 2.2.1.0
和 Jenkins ver. 2.32.1
效果很好。
$ cat /etc/ansible/ansible.cfg
[ssh_connection]
control_path = /tmp/ssh-%%C
注意双百分号 %%C
(否则 Ansible 无法格式化)。
我建议您检查构建节点(如果您有 jenkins slaves,您可以更改 master 上的设置,但作业在其中一个 slaves 上执行)和 运行 剧本 -vvvv
附加标志以查看 ansible 使用的配置文件。
当 运行 Jenkins 使用 ansible 插件时,我正在努力解决有关 ansible 中 SSH 控制路径的问题。为清单中的主机使用长 FQDNS 时会出现此问题。
我试过以下方法:
在 Jenkins 用户的 SSH 配置文件中设置短主机名和控制路径
在
/etc/ansible/ansible.cfg
设置中设置 SSH args,例如:[ssh_connection] ssh_args="-F /var/jenkins_home/.ssh/config -o ControlMaster=auto -o ControlPersist=30m -o ConnectTimeout=60 -o ControlPath=/tmp/ssh-%C" control_path="/tmp/ssh-%C"
Jenkins 插件对话框中的命令行选项
--ssh-extra-args=
我似乎无法说服 Ansible 使用较短的控制路径,如下所示:
" /tmp/ssh-%C"
我仍然得到:
/var/jenkins_home/.ansible/cp/ansible-ssh-bastion-dev.westeurope.cloudapp.azure.com-22-jenkins.ivQ6vi6TPB3BrYta\" too long for Unix domain socket
这与我在各处设置的选项不符。
有人知道如何说服 Ansible 插件停止忽略 SSH 选项吗?
我用 Ansible 2.2.1.0
和 Jenkins ver. 2.32.1
效果很好。
$ cat /etc/ansible/ansible.cfg
[ssh_connection]
control_path = /tmp/ssh-%%C
注意双百分号 %%C
(否则 Ansible 无法格式化)。
我建议您检查构建节点(如果您有 jenkins slaves,您可以更改 master 上的设置,但作业在其中一个 slaves 上执行)和 运行 剧本 -vvvv
附加标志以查看 ansible 使用的配置文件。