一、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
server3/6 visudo
ansible ALL=(ALL) NOPASSWD: ALL
[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
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 文件已经自动获取
[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