Jenkins持续集成——jenkins结合ansible

一、jenkins结合ansible
1.1添加ansible交付任务

Jenkins服务器提前部署好到目标主机的ssh免密,并安装ansible软件包。
由于是以jenkins用户调用ansible命令,所以需要设置jenkins用户到目标主机的免密。

1.2实验环境

server4 172.25.254.4 gitlab
server3 172.25.254.3 ansible
server5 172.25.254.5 jenkins
server6 172.25.254.6 jenkins+ansible测试环境

jenkins用户本身做免密,

[root@server5 ~]# cat /etc/passwd | grep jenkins  
jenkins:x:998:996:Jenkins Automation Server:/var/lib/jenkins:/bin/false
[root@server5 ~]# usermod -s /bin/bash jenkins   
[root@server5 ~]# su - jenkins
-bash-4.2$ ssh-keygen             
-bash-4.2$ cd .ssh
-bash-4.2$ ls
id_rsa  id_rsa.pub  known_hosts

创建用户ansible

[root@server3、6 ~]# cat /etc/passwd | grep 1000  查看uip未被使用
[root@server3、6 ~]# useradd -u 1000 ansible  创建用户
[root@server3、6 ~]# useradd -u 1000 ansible
echo westos | passwd --stdin ansible 更改密码
 ssh-copy-id ansible@172.25.254.3
 ssh-copy-id ansible@172.25.254.6

Jenkins持续集成——jenkins结合ansible_第1张图片
Jenkins持续集成——jenkins结合ansible_第2张图片
1.3ansible用户权限的下方

server3/6  visudo 
ansible   ALL=(ALL)       NOPASSWD: ALL

1.4新建playbook代码仓库
Jenkins持续集成——jenkins结合ansible_第3张图片

[root@server4 ~]# git clone [email protected]:root/playbook.git  关联远程仓库
Cloning into 'playbook'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
[root@server4 ~]# ls
anaconda-ks.cfg  demo  gitlab-ce-12.9.7-ce.0.el7.x86_64.rpm  playbook
[root@server4 ~]# cd playbook/
[root@server4 playbook]# ls
README.md

在Jenkins上新建任务(ansible)
Jenkins持续集成——jenkins结合ansible_第4张图片

Jenkins持续集成——jenkins结合ansible_第5张图片
安装ansibled(server5)

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
 yum install  -y ansible
[root@server5 yum.repos.d]# cd /etc/ansible/
[root@server5 ansible]# ls
ansible.cfg  hosts  roles

在gitlab主机上编写ansible的playbook配置文件

[root@server4 ~]# cd playbook/
[root@server4 playbook]# ls
README.md
[root@server4 playbook]# vim ansible.cfg
[root@server4 playbook]# cat  ansible.cfg
[defaults]
remote_user=ansible
command_warnings=False

[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
[root@server4 playbook]# git add ansible.cfg 
[root@server4 playbook]# git commit -m "add ansible.cfg"
[root@server4 playbook]# git push -u origin master  上传文件到gitlab仓库


jenkins主机查看
-bash-4.2$ cd /var/lib/jenkins/workspace/ansible
-bash-4.2$ ls
ansible.cfg  README.md  文件已经自动获取

手动触发点击构建查看输出
Jenkins持续集成——jenkins结合ansible_第6张图片

[root@server4 playbook]# mkdir inventory  创建对象
[root@server4 playbook]# cd inventory/
[root@server4 inventory]# touch test prod
[root@server4 inventory]# ls
prod  test
[root@server4 inventory]# vim test 
[root@server4 inventory]# vim prod 
[root@server4 inventory]# cat  prod 
[prod]
172.25.254.6
[root@server4 inventory]# cat  test 
[test]
172.25.254.3
[root@server4 playbook]# tree .  查看树形结构图
.
├── ansible.cfg
├── inventory
│   ├── prod
│   └── test
└── README.md

1 directory, 4 files
[root@server4 playbook]# vim playbook.yml  编写playbook
[root@server4 playbook]# cat  playbook.yml
---
- host: all  所有主机
 tasks:
   - name: install apache    安装Apache
     yum:
       name: httpd  服务名称
       state: present  

   - name: start apache  开启Apache
     service:   指定服务
       name: httpd   名称
       state: started  状态
上传对象文件和playbook.yml文件到gitlab仓 库
[root@server4 playbook]# git add .
[root@server4 playbook]# git commit -m "add playbook.yml"
[root@server4 playbook]# git push -u origin master  

Jenkins中设置ansible任务的参数构建过程和构建环境
Jenkins持续集成——jenkins结合ansible_第7张图片
Jenkins持续集成——jenkins结合ansible_第8张图片

Jenkins持续集成——jenkins结合ansible_第9张图片
选择构建项目执行
Jenkins持续集成——jenkins结合ansible_第10张图片
控制台输出成功
Jenkins持续集成——jenkins结合ansible_第11张图片
server3(test)查看
Jenkins持续集成——jenkins结合ansible_第12张图片

你可能感兴趣的:(持续集成)