下面的ansible playbook连接适用于除destrongvr之外的所有服务器。以下命令失败。
ansible-playbook -vvvv /opt/test/Auto/site.yml -i /opt/test/Auto/hosts.txt -e "source_host=dest_svr execmd=echo source_user=user2"
(0,'','OpenSSH_7.7p1(CentrifyDC内部版本5.5.1-395),OpenSSL 1.0.2o-fips 2018年3月27日\r\n错误1:读取配置数据/home/user1/.ssh/config\r\ndebug1:正在读取配置数据/etc/centrifydc/ssh/ssh_config\r\ndebug1:/etc/centrifydc/ssh/ssh_config第3行:应用*\\r\ndbug1:自动mux:正在尝试现有主机\r\ndbug2:fd 3设置O_NONBLOCK\r\ndbug2:mux_client_hello_exchange:主机版本4\r\n错误3:mux_client_forwards:请求转发:0本地,0远程\r\n错误3:mux_client_requestrongession:正在输入\r\n错误3:mux_client_request_alive:正在输入错误3:mux_client_request_alive:完成pid=57768\r\n错误3:mux_client_requestrongession:发送的会话请求错误1:mux_client_requestrongession:主会话id:2\r\n错误3:mux_client_read_packet:读取标头失败:管道损坏\r\n错误2:从主机0\r\n到destrongvr的共享连接接收到退出状态关闭\\r\n')致命:[destrongvr]:失败!=>{"changed":false,"module_sder":"OpenSSH_7.7p1(CentrifyDC版本5.5.1-395),OpenSSL 1.0.2o-fips 2018年3月27日\r\n错误1:读取配置数据/home/user1/.ssh/config\r\ndebug1:正在读取配置数据/etc/centrifydc/ssh/ssh_config\r\ndebug1:/etc/centrifydc/ssh/ssh_config第3行:应用*\\r\ndbug1:自动mux:正在尝试现有主机\r\ndbug2:fd 3设置O_NONBLOCK\r\ndbug2:mux_client_hello_exchange:主机版本4\r\n错误3:mux_client_forwards:请求转发:0本地,0远程\r\n错误3:mux_client_requestrongession:正在输入\r\n错误3:mux_client_request_alive:正在输入错误3:mux_client_request_alive:完成pid=57768\r\n错误3:mux_client_requestrongession:发送的会话请求错误1:mux_client_requestrongession:主会话id:2\r\n错误3:mux_client_read_packet:读取标头失败:管道损坏\r\n错误2:从主机2接收到退出状态\r\n到destrongvr的共享连接关闭\\r\n","module_stdout":"/home/user2/.assible/tmp/assible-tmp-1549081965.65-147775141838271/AnsiballZ_setup.py:第3行:_ANSIBALZ_WRAPPER:命令不是已找到\r\n/home/user2/.assible/tmp/assible-tmp-1549081965.65-147775141838271/AssiballZ_setup.py:第4行:意外标记附近出现语法错误
('rn/home/user2/.ansible/tmp/ansible-tmp-1549081965.65-147775141838271/AnsiballZ_setup.py: line 4:
def_ansiballz_main():'\r\n","msg":"模块故障\n有关确切错误,请参阅stdout/stderr","rc":2}要重试,请使用:--limit@/opt/test/Auto/site.retry回放*****************************************************************************************************************************************************************************************************************destrongvr:ok=0已更改=0无法访问=0失败=1
源Ansible服务器详细信息:
[user1@source_svr: Auto]$ uname -a
Linux source_svr 3.10.0-957.el7.x86_64 #1 SMP Thu Oct 4 20:48:51 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[user1@source_svr: Auto]$ ansible --version
ansible 2.7.1
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/home/user1/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /bin/ansible
python version = 2.7.5 (default, Sep 12 2018, 05:31:16) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
Ansible主机文件详细信息:
cat /opt/test/Auto/hosts.txt
[dest_svr]
dest_svr ansible_ssh_common_args="-t -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ControlPersist=30m" ansible_shell_executable=/bin/bash ansible_shell_type=sh ANSIBLE_HOST_KEY_CHECKING=false ansible_python_interpreter= ansible_ssh_private_key_file=/opt/test/ssh_key/id_rsa USER_RUN=user2
现在目标服务器的详细信息:
user2@dest_svr:~$ uname -a
SunOS dest_svr 5.11 11.3 sun4v sparc sun4v
user2@dest_svr:~$ python --version
Python 2.7.14
注意:我只想更改我的剧本,不想更改ansible.cfg中的任何内容,因为其他剧本不应该受到影响。
据我所知,这是由以下原因引起的:
line 3: _ANSIBALLZ_WRAPPER: command not found
这是一行,但稍微挖掘一下似乎意味着SunOS的shebang行不允许指向一个可执行文件,该可执行文件本身也是一个shebang:Python3 shebang线没有按预期工作
据我所知,修复方法是设置-e ansible_python_interpreter=/the/path/to/the/real/python
,或者我见过一些人尝试-e 'ansible_python_interpreter="/bin/env python"'
(我修改了env
的路径,因为显然SunOS在/usr/bin/env
中没有env
,但我没有SunOS实例来测试这一理论,所以警告为空)