不能在EC2主机上运行Ansible playbook

我正在尝试针对已经configuration好的EC2主机运行一个简单的Ansible操作手册。 当我运行剧本时,出现以下错误:

SSH Error: data could not be sent to the remote host. Make sure this host can be reached over ssh 

使用亚马逊提供的.pem文件,我可以手动ssh到框中,只要做

ssh ubuntu @ my_instance_ip

这是我正在运行的完整命令:

 ansible-playbook --inventory-file=inventory/production --extra-vars=ansible_ssh_user=ubuntu my-playbook.yml -vvvv 

这是我的库存文件(IP / DNS掩码):

 [test] ec2-1-1-1-1.us-west-1.compute.amazonaws.com ansible_ssh_private_key_file=~/path_to_pem_file.pem 

有意思的是,如果我运行saps命令,这个命令剧本就是一口气吐出来的:

 ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60m -o ControlPath="/Users/me/.ansible/cp/ansible-ssh-%h-%p-%r" -o IdentityFile="/path_to_my_pem_file.pem" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ubuntu -o ConnectTimeout=10 ec2-1-1-1-1.us-west-1.compute.amazonaws.com 

我得到以下内容:

 debug3: muxserver_listen: temporary control path /Users/me/.ansible/cp/ansible-ssh-ec2-1-1-1-1.us-west-1.compute.amazonaws.com-22-ubuntu.8MjEBnDdRIAO8zAT unix_listener: "/Users/me/.ansible/cp/ansible-ssh-ec2-1-1-1-1.us-west-1.compute.amazonaws.com-22-ubuntu.8MjEBnDdRIAO8zAT" too long for Unix domain socket 

那个错误有效吗? 如果是的话,是否有减less命令? 谢谢!

正如在注释和链接的SO问题中已经指出的,这里的相关错误信息是: too long for Unix domain socket 。 这个错误可以通过调整ansible.cfgcontrol_path参数来解决

用于ControlPath套接字的path。 默认为“%(directory)s / ansible-ssh – %% h – %% p – %% r”,但是在一些主机名很长或path名很长的系统上(由长用户名或深嵌目录),这可能会超过文件套接字名称的字符限制(大多数平台为108个字符)。 在这种情况下,您可能希望缩短下面的string。

例如:control_path =%(目录)s / %% h – %% r