一篇文章介绍了如何使用roles模块来使ansible模块化,那么在实际操作环境中,命令行工具毕竟不是那么的方便,那么就需要jenkins这个工具来使ansible/ansible-playbook可视化

ansible安装

这里直接贴出安装命令,过多的不再赘述,这里我们使用源码来安装ansible

使用源码安装python

yum install -y gcc gcc-c++ ncurses ncurses-devel unzip zlib-devel zlib openssl-devel openssl
cd /usr/local/src/
wget 'https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz'
tar -zxvf Python-3.6.4.tgz
cd Python-3.6.4
./configure --prefix=/usr/local/python/ #环境探测
make #编译
make install #安装

测试python3是否安装成功

/usr/local/python/bin/python3 --version
ln -s /usr/local/python/bin/python3 /usr/local/bin/
python3 --version

安装ansible

/usr/local/python/bin/pip3 install ansible
/usr/local/python/bin/ansible --version
ln -s /usr/local/python/bin/ansible /usr/local/bin/
ansible --version

如果想安装指定的版本的话
/usr/local/python/bin/pip3 install ansible==2.1.1(版本号)

ansible查看帮助

/usr/local/python/bin/ansible-doc -l #查看总帮助
/usr/local/python/bin/ansible-doc -s shell #查看shell模块的帮助
/usr/local/python/bin/ansible-doc -s raw

jenkins安装

jenkins是需要java环境支撑的,我们通过简短的几个命令先把java环境给搭建一下

使用官方的二进制包解压安装,官方二进制包的下载地址

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

cd /usr/local/src/
tar -zxvf jdk-8u172-linux-x64.tar.gz
mv jdk1.8.0_172 /usr/local/
/usr/local/jdk1.8.0_172/bin/java -version  #验证是否成功

#配置环境变量
export JAVA_HOME=/usr/local/jdk1.8.0_172/
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH

jenkins的安装

首先我们进到jenkins的官网 https://jenkins.io/
找到download页面最底下的.war格式的文件进行下载

wget 'https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.107.2/jenkins.war'
java -jar jenkins.war

如果想要进行后台的运行nohup java -jar jenkins.war >/tmp/jenkins.out 2>/tmp/jenkins.out & #jenkins

配置

jenkins默认监听8080端口,在浏览器输入http://[localhost]:8080
会让你输入验证密码,因为jenkins有着很大的权限,一旦入侵会造成很严重的后果。
jenkins默认密码路径,需要到jenkins所在的服务器进行查看
/root/.jenkins/secrets/initialAdminPassword
同时我们安装的时候需要注意把Publish Over SSH这个插件给勾选上,最后通过新添加用户我们就能进入jenkins的主页面
jenkins
我们需要在系统管理 -> 系统设置 -> 找到Publish over SSH可以添加对应的操作服务器
jenkins2
其中NAME相当于是备注,hostname相当于是要管理主机的ip地址remote directory相当于是如果在项目中上传文件的路径,会相对于这个路径
注意:Remote Directory那个"/",必须要写上,如果为空的话是上传不了文件的。
如果默认ssh端口不是22的话,需要在下面改成你的ssh端口。最后测试如果是success则代表已经是添加好了的。

jenkins与ansible的配合使用

首先我们需要安装ansible插件系统管理——>管理插件——>可选插件里面找到ansible然后静静地等待它安装好即可

安装好之后我们回到首页,添加一个新的任务
jenkins3
选择构建任务
jenkins4
jenkins5
含义:
- host pattern:代表你的主机列,如果想控制所有主机,选择all
- inventory:file or host list代表选择主机中的某个文件作为配置文件;inline content可以直接在下方的框中填写配置文件
- module:ansible的模块
- Module arguments or command to execute:相当于模块-a选项后面的参数

完成我我们回到首页,选择立即构建,我们就可以看到处理的结果
jenkins6
jenkins7

jenkins与ansible-playbook的配合使用

我们在构建任务的选择时选择playbook
jenkins8

jenkins9
含义:
- Playbook path:你的playbook配置文件的绝对路径
- Inventory:同上

我的playbook文件配置:

---
- hosts: all
  tasks:
  - name: test jenkins ansible-playbook
    shell: echo 'heroyf' >>/tmp/heroyf.log

保存应用——>立即构建,然后我们查看已经构建成功
jenkins10
成功输出,因为我的/etc/ansible/hosts中有两台主机都指向自己,所以输出了两次
jenkins11

写在最后

jenkins+ansible确实能将运维工作的困难度大大减少,但注意一定要保证jenkins的安装,只能被管理员方位,可以通过nginx中的访问控制模块来设置密码或者设置白名单ip来保证安全性

版权声明:本文为原创文章,版权归 heroyf 所有
本文链接: https://heroyf.club/2018/08/ansiblejenkins/


“苹果是给那些为了爱选择死亡的人的奖励”