Jenkins+Ansible自动化部署工具

Jenkins安装部署

1.下载安装

在指定文件夹安装一个Tomcat,然后进入tomcat的webapp目录下,直接将jenkins.war部署进来,或者下载进来

#wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war

2.设置Jekins环境变量设置

#sudo vi /etc/profile

在最后面加上这一句

export JENKINS_HOME=/data/program/tomcat/webapps/Jenkins(jnekins的安装路径)


#. /etc/profile #使配置文件生效

3.修改tomcat端口号

#vi /usr/local/apache-tomcat/conf/server.xml

<Connector port="8083" protocol="HTTP/1.1"connectionTimeout="20000"                    redirectPort="8443" />

保证端口号不冲突


4. 重启tomcat,进入tomcat的安装目录下的bin目录

#./startup.sh

tomcat会解压war包,生成一个jenkins文件夹,而且会在root目录下生成一个.jenkins的文件夹

5.Jenkins 验证。在浏览器里,输入网址:http://ip:port/jenkins

6.输入密码


在文件里找到密码,并且登录。

jenkins ansible 插件 使用 ansible与jenkins_运维

 

7.安装插件,选择安装推荐的插件

如果下载插件很慢可先不安装,登录后。修改配置文件

#cd 安装的tomcat/webapps/Jenkins/updates/

# sed -i 's#http://updates.jekins-ci.org/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json && sed -i '#/http://www.google.com#https://www.baidu.com#g' default.json

然后修改Update Site的值为https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json,然后点击Submit按钮

http://ip:port/ restart


jenkins ansible 插件 使用 ansible与jenkins_运维_02

 

jenkins ansible 插件 使用 ansible与jenkins_运维_03

 



然后就会自动下载

jenkins ansible 插件 使用 ansible与jenkins_sed_04

 


下载完后会创建管理员账户


jenkins ansible 插件 使用 ansible与jenkins_tomcat_05

 


安装完成,运行截图

jenkins ansible 插件 使用 ansible与jenkins_Jenkins_06

 



可以下载汉化插件,使菜单栏变成变成中文

在插件搜索里搜索

jenkins ansible 插件 使用 ansible与jenkins_tomcat_07

 




Ansible安装部署

前提:要安装ansible系统中必须要安装python的版本在2.7及以上。

1. Ansible是属于Extra Packages for Enterprise Linux (EPEL)库的一部分,因此要先安装EPEL

#yum install epel-release

2. 直接安装ansible,目前默认安装的版本是2.2,官方持续在更新

#yum install ansible

3. 修改ansible配置和主机列表hosts:

1)关闭第一次使用ansible连接客户端时输入命令提示:

#sed -I "s@\#host_key_checking = False@host_key_checking =False@g" /etc/ansible/ansible.cfg


指定日志路径:

#sed -i "s@\#log_path = \/var\/log\/ansible.log@log_path = \/var\/log\/ansible.log@g" /etc/ansible/ansible.cfg

2)将所有主机ip加入到/etc/ansible/hosts文件中:

jenkins ansible 插件 使用 ansible与jenkins_sed_08

 

默认ssh的端口为22端口,如果为其他端口号,可在主机名后面加上端口号,如 192.168.159.131:9604 ,也可以修改配置文件中的remote_port变量值

/etc/ansible/hosts也可以定义一个主机范围,如192.168.159.[100:200] ,表示192.168.159.100 - 192.168.159.200 的主机


4. 创建和配置 SSH 公钥认证(免密码登录)

#ssh-keygen -t rsa

按提示使用默认配置一路回车即可:


jenkins ansible 插件 使用 ansible与jenkins_Jenkins_09

 


5.通过ansible将公钥分发至各主机上:

#ansible all -m authorized_key -a "user=root key='{{ lookup('file', '/root/.ssh/id_rsa.pub') }}' path=/root/.ssh/authorized_keys manage_dir=no" --ask-pass -c paramiko


jenkins ansible 插件 使用 ansible与jenkins_Jenkins_10

 


需要输入主机的密码,若是有的主机密码不一致,那么该主机会分发失败,此时只需再执行一遍命令输入该主机密码即可。或者先将密码相同的主机进行分组,然后依次指定主机组执行命令分批分发公钥。

此命令是通过追加的方式来推送公钥至authorized_keys,所以不用担心原来的文件内容会被覆盖。

到任意一台主机上查看,可以看到公钥已成功推送:

jenkins ansible 插件 使用 ansible与jenkins_tomcat_11

 


6. 修改ansible配置,指定私钥文件路径:

#sed -i "s@\#private_key_file = \/path\/to\/file@private_key_file = \/root\/.ssh\/id_rsa@g" /etc/ansible/ansible.cfg


7. 测试:

#ansible all -m ping

jenkins ansible 插件 使用 ansible与jenkins_Jenkins_12

 

可以在命令后面加上-vvvv参数查看详细的输出结果,尤其是在命令执行失败需要排错的时候非常有用。