我写了一个ansible角色来复制我的应用程序的属性文件到远程机器上,我首先检查本地的属性文件是否存在,然后把文件复制到远程机器上。我首先检查属性文件是否在本地存在,然后把文件复制到远程机器上。我用来运行playbook的命令如下:-。
ansible-playbook -i ./playbooks/hosts ./playbooks/deploy.yml --tags copy --limit remote_machine_name --ask-become-pass
我可以看到,播放本运行得很好,我能够验证文件已经复制到远程机器上。现在,当我尝试使用Gitlab CICD实现同样的目标时,管道失败了,说指定的文件不存在。在 ansible-playbook
命令,我在 CI/CD
管道是:-
ansible-playbook -i ./playbooks/hosts ./playbooks/deploy.yml --tags copy --limit remote_machine_name --extra-vars "ansible_user=${ANSIBLE_USER} ansible_become_pass=${ANSIBLE_USER_PASSWORD} ansible_sudo_pass=${ANSIBLE_USER_PASSWORD}"
当管道失败时,我得到的堆栈跟踪:-。
"item": {
"ansible_loop_var": "item",
"changed": false,
"failed": false,
"invocation": {
"module_args": {
"checksum_algorithm": "sha1",
"follow": false,
"get_attributes": true,
"get_checksum": true,
"get_md5": false,
"get_mime": true,
"path": "../properties/application.properties"
}
},
"item": "../properties/application.properties",
"stat": {
"exists": false
}
},
"msg": "file ../properties/application.properties does not exist"
}
这背后的原因可能是什么?我可以验证gitlab管道的其他阶段工作正常。
在我的jenkens
我在ansible-playbook XXXX之前添加sudo。
你可以添加
ansible_user=${ANSIBLE_USER}
ansible_become_pass=${ANSIBLE_USER_PASSWORD}
ansible_sudo_pass=${ANSIBLE_USER_PASSWORD}
东家
playbooks/hosts