ansible使用【4】-- 踩坑指南--ansible-playbook.yaml显示成功,实际失败 是因为--check
我本意想用git管理ansible-playbook.yaml的
比如,我有一个setup.yaml的剧本,里面写了如何创建环境。
例如:
- hosts: webservers
become: yes
tasks:
- name: Create a directory
file:
path: /home/liqi/b888/z888
state: directory
mode: '0755'
- name: Copy tools directory
synchronize:
src: /home/liqi/mini_common/
dest: ~/liqi_test
become: no
我的,执行过程是,Jenkins拉取git代码, 然后执行这个setup.yaml。
且我的git代码仓库还有其他的执行脚本。
我的Jenkins的执行命令是:
# 部分jenkins的pipeline
...
stages {
stage('Pull Code') {
steps {
dir('/home/liqi/JenkinsTest/test_robot') {
git branch: 'liqi_dev_windows', credentialsId: 'cdac3cfe-6e45-437e-aa4d-3bfb6147894531xxx', url: 'http://192.168.9.30/liqi/test_robot.git'
}
}
}
stage('Run Ansible Playbook set up') {
steps {
script {
def ansiblePath = '/usr/bin/ansible'
env.PATH = "${ansiblePath}:${env.PATH}"
// 使用sh来执行Ansible的Playbook
sh 'ansible-playbook -i /home/liqi/JenkinsTest/test_robot/host.ini /home/liqi/JenkinsTest/test_robot/setup_env.yaml --check -v'
}
}
}
我发现每次执行都失败,无论是创建目录,还是拷贝文件等。显示成功,却执行失败。
显示成功:
实际失败:
目标49.107上没有这个b888的文件
解决方式:
后来我尝试把ansible-playbook放到外面,其他不动,就可以成功。
估计,是玄学???
在家目录下执行的:
失败的是:
ansible-playbook -i JenkinsTest/test_robot/host.ini JenkinsTest/test_robot/setup_env.yaml
成功的是:
ansible-playbook -i JenkinsTest/test_robot/host.ini ./set2.yaml
我后续计划把ansible-playbook,放到单独一个git里。
【2023-11-20最新消息】
我知道了,我失败是因为增加了这个 --check 参数,应该是我的host.ini,写的不好。导致出现了,跳过的情况!