Ansible playbook在终端执行时成功,但在Gitlab CICD管道中却失败了。

问题描述 投票:2回答:1

我写了一个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管道的其他阶段工作正常。

ansible gitlab gitlab-ci continuous-deployment
1个回答
0
投票

在我的jenkens

我在ansible-playbook XXXX之前添加sudo。

你可以添加

ansible_user=${ANSIBLE_USER} 
ansible_become_pass=${ANSIBLE_USER_PASSWORD} 
ansible_sudo_pass=${ANSIBLE_USER_PASSWORD}

东家

playbooks/hosts 
© www.soinside.com 2019 - 2024. All rights reserved.