我正在尝试使用跳转盒来到达 ansible 上的目标虚拟机。我有以下文件结构
play.yaml
hosts
serverA
serverB
testServers/
serverX
serverY
group_vars/
all.yml
Run Code Online (Sandbox Code Playgroud)
server[X,Y]主机文件包含
[serverType]
1.2.3.4
Run Code Online (Sandbox Code Playgroud)
all.ymlhosts/testServers/包含下的文件
ansible_ssh_private_key_file: key.priv
proxy_user: myServiceAccount
proxy_user_key: key.priv
ansible_ssh_common_args: '-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ProxyCommand="ssh -i {{ proxy_user_key }} -W %h:%p -q {{ proxy_user }}@{{ bastion_host }}
Run Code Online (Sandbox Code Playgroud)
我有一个 ping 模块play.yaml
- hosts: all
gather_facts: true
tasks:
- action: ping
Run Code Online (Sandbox Code Playgroud)
我运行以下命令
ansible-playbook -vvvv play.yaml -i hosts/testServers/serverX
-e ansible_ssh_user="$LDAP_USER" -e ansible_ssh_pass="$LDAP_PASS"
-e ansible_become_pass="$LDAP_PASS"
-e bastion_host="$BASTION_NAME"
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
Failed to create temporary directory.In some cases, you may have
been able to authenticate and did not have permissions on the
target directory. Consider changing the remote tmp path in
ansible.cfg to a path rooted in \"/tmp\", for more error
information use -vvv. Failed command was: ( umask 77 && mkdir -p
\"` echo /tmp `\"&& mkdir
/tmp/ansible-tmp-1626262883.727861-210-80403864334304 && echo
ansible-tmp-1626262883.727861-210-80403864334304=\"` echo
/tmp/ansible-tmp-1626262883.727861-210-80403864334304 `\" ),
exited with result 6
Run Code Online (Sandbox Code Playgroud)
考虑
remote_tmp设置为/tmp无法在目标主机上创建临时目录可能有多种原因。首先验证 $LDAP_USER 是否可以使用 $LDAP_PASS 通过 $BASTION_NAME 连接,这可以从 ansible 控制主机上的 shell 进行测试。
如果凭据正常,并且手动登录成功,则调查文件和目录权限。多用户使用临时目录的父目录可能是一个原因。或者 /tmp 上的挂载选项,或者磁盘空间问题,或者其他问题。输出中的 Errno 6(没有此类设备)可能表明该主机或您对堡垒主机的假设存在更深层次的问题。
多用户问题(例如非特权的become_user,或者将root登录与普通用户登录结合起来)可以通过配置解决:
[defaults]
remote_tmp = /var/tmp/${USER}/ansible
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9721 次 |
| 最近记录: |