Ansible脚本模块 - 控制套接字权限被拒绝

时间:2016-12-19 15:50:18

标签: ansible ansible-playbook

我是Ansible的新手,并尝试使用脚本模块在远程节点上运行本地脚本。我的任务定义如下:

- name: Initial setup
  script:  ../../../initial_setup.sh
  become: yes

当我运行剧本时,我得到以下错误,但我不清楚实际问题是什么。这是否表示连接节点时出现问题或传输脚本时出现问题?

fatal: [default]: FAILED! => {
    "changed": true,
    "failed": true,
    "invocation": {
        "module_args": {
            "_raw_params": "../../../initial_setup.sh"
        },
        "module_name": "script"
    },
    "rc": 127,
    "stderr": "Control socket connect(/tmp): Permission denied\r\nControlSocket /tmp already exists, disabling multiplexing\r\nConnection to 127.0.0.1 closed.\r\n",
    "stdout": "/bin/sh: 1: /home/ubuntu/.ansible/tmp/ansible-tmp-1482161914.64-107588947758469/initial_setup.sh: not found\r\n",
    "stdout_lines": [
        "/bin/sh: 1: /home/ubuntu/.ansible/tmp/ansible-tmp-1482161914.64-107588947758469/initial_setup.sh: not found"
    ]
}

1 个答案:

答案 0 :(得分:3)

TL;博士

确保在-o ControlMaster=auto的{​​{1}}中定义了ssh_args

[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s

以下错误与SSH连接多路复用有关:

  

控制套接字连接(/ tmp):权限被拒绝
  ControlSocket / tmp已经存在,禁用多路复用
  连接到127.0.0.1关闭

它尝试直接在/tmp创建一个套接字,而不是在/tmp内...在某处为SSH定义的其他参数可以在这里发挥作用。

ControlMaster的值设置为auto会导致SSH创建新的主连接,如果现有的连接不存在(或者有问题,就像这里一样?)。