ansible简介
通俗理解ansible是一个能在本地对其他进行远程操作的工具,具体如何安装这里不再介绍,流水线已经集成好ansible功能,下面直接介绍jenkins流水线中如何使用ansible,下面我们用一个例子来说明
- 首先创建一个远程机器的ip清单文件,这个文件内容写明用户要在哪些机器上进行远程的操作,这里我们创建一个ip清单文件inventory(名称自定义),文件具体配置信息如下
图第1步:远程机器的ip地址
图第2步:远程机器执行命令的用户身份:我这里是用的root,大家根据自己实际部署机器可以使用的用户将这里进行替换
图第3步:远程机器执行命令用户密码
- 其次创建一个test_ansible.yml脚本文件,这个文件中具体为对远程机器执行的具体操作,编辑信息如图
图第1步: 对这个脚本起一个名称,建议与具体操作的内容有关,我这里就随便起了个名字,这里名称对执行结果没有影响
图第2步: 远程机器的用户权限,我这里用的是root身份,大家用的时候以实际可以用的权限进行替换
图第3步:这里表示指定要远程的ip信息,指定的是前面inventory文件中的ip信息,保持默认即可
图第4步:保持默认
图第5步:这里是对第1步中名称的进一步描述,比如我这里写的是创建一个文件并编辑
图第6步:远程机器执行命令需要用到的模块,这里指定的是shell,这个比较常用,一般我们对远程机器进行命令的执行用这个模块即可,
图第7步:具体命令的编写,因为我这里用的是shell模块,所以执行命令前面需要写cmd : ”具体要执行的命令,这里就相当与普通的shell命令 ”
图第8步:执行命令所在的目录,比如我这里是在opt目录下创建这个文件并编辑,那就是chdir: 具体目录,注意这里一定要写绝对路径,不然脚本执行会识别不到
图第9步:这里是另一个模块copy,需要拷贝文件时需要用到,
图第10步:要拷贝的本地目录,这里因为我的流水线名称是python-jenkins-sonar,我要拷贝的文件sentence2上传到gitlab,然后流水线拉取gitlab上的这个文件会放到流水线默认目录/var/jenkins_home/workspace/python-jenkins中,如果你执行
的流水线是123456那这里脚本的本地目录就要写为/var/jenkins_home/workspace/123456/sentence2
图第11步:文件要拷贝到远程主机的目录
- 将test_ansible.yml脚本文件、ip清单文件inventory、和要拷贝到远程机器的文件setence2上传到gitlab项目上的分支中,流水线拉取这个分支上的文件,在流水线中执行ansible-playbook test_ansible.yml -i inventory命令,流水线构建如果成功,说明远程机器上的操作执行,可以查看远程机器执行情况,具体流水线配置看如图
- 执行流水线构建,流水线构建如果成功,查看目标机器,
- 查看远程主机执行结果情况,与预期执行命令结果一致
- 结束
注:ansible的yml脚本编写时注意冒号:后面一定要空一格后再输入信息,不然脚本执行时会报错,还有ansible的官方模块有200多个,这里只介绍了shell、copy,后期根据大家工作需要会陆续更新多个ansible模块的介绍与实例