项目需求

1. 在gitlab中创建一个项目 nginxinstall
2. 编写playbook,实现一键部署nginx、部署一个静态测试页、测试部署结果
要求:
  部署nginx
  端口:83
  运行身份:root
  设置并发连接数:2048
  根目录:/vaw/www/html

其他要求:
  部署两个以上节点
  用role
  用templates

3. 将写好的playbook保存到gitlab仓库中
4.jenkins实现持续部署

192.168.59.200 docker1 jenkins git ansible
192.168.59.201 docker2 gitlab git
192.168.59.12 test2

第一步:在docker2创建一个nginxinstall项目

第二步:docker1克隆项目

  1. [root@docker1 ~]# mkdir /nginx
  2. [root@docker1 ~]# cd /nginx
  3. [root@docker1 nginx]# ls
  4. [root@docker1 nginx]# git clone http://root@192.168.59.201/root/nginxinstall.git
  5. 正克隆到 'nginxinstall'...
  6. warning: 您似乎克隆了一个空版本库。
  7. [root@docker1 nginx]# cd nginxinstall/

  

第三步:编写roles(docker1)

  1. [root@docker1 nginxinstall]# mkdir roles/nginx/{tasks,vars,templates,files} -p
  2. [root@docker1 nginxinstall]# tree
  3. .
  4. └── roles
  5.   └── nginx
  6.     ├── files
  7.     ├── tasks
  8.     ├── templates
  9.     └── vars
  10.  
  11. 6 directories, 0 files
  12.  
  13. [root@docker1 nginxinstall]# vim ./roles/nginx/vars/main.yaml
  14. usr: root
  15. por: 83
  16. prc: 2048
  17. wok: /var/www/html
  18. [root@docker1 nginxinstall]# echo v1 > ./roles/nginx/files/index.html
  19. [root@docker1 nginxinstall]# cp /etc/nginx/nginx.conf ./roles/nginx/templates/nginx.conf.j2
  20. [root@docker1 nginxinstall]# vim ./roles/nginx/templates/nginx.conf.j2
  21. ...
  22. user {{ usr }};
  23.  
  24. events {
  25.   worker_connections {{ prc }};
  26. }
  27.  
  28. http {
  29.   server {
  30.     listen {{ por }};
  31.   root {{ wok }};
  32. ...
  33.  
  34. [root@docker1 nginxinstall]# vim ./roles/nginx/tasks/main.yaml
  35. - yum: name=nginx state=present
  36. - template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
  37. - service: name=nginx state=restarted
  38. - copy: src=index.html dest={{ wok }}
  39.  
  40. [root@docker1 nginxinstall]# mkdir inventory
  41. [root@docker1 nginxinstall]# ls
  42. inventory roles
  43. [root@docker1 nginxinstall]# vim inventory/host
  44. [test]
  45. 192.168.59.12
  46.  
  47. [root@docker1 nginxinstall]# vim site.yaml
  48. - hosts: all
  49. roles:
  50. - name: nginx
  51.  
  52. [root@docker1 nginxinstall]# vim /etc/sysconfig/jenkins
  53. ...
  54. JENKINS_USER="root"
  55. … 

第四步:查看jenkins相关信息:

  1. [root@docker1 nginxinstall]# ps aux |grep jenkins
  2. root 37.1 4.3 ? Ssl : : /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort= --debug= --handlerCountMax= --handlerCountMaxIdle=
  3. root 0.0 0.0 pts/ R+ : : grep --color=auto jenkins
  4. [root@docker1 nginxinstall]# systemctl restart jenkins

第五步:查看roles文件,并且模拟运行

  1. [root@docker1 nginxinstall]# tree
  2. .
  3. ├── inventory
  4. └── host
  5. ├── roles
  6. └── nginx
  7.   ├── files
  8.    └── index.html
  9.   ├── tasks
  10.    └── main.yaml
  11.    ├── templates
  12.    └── nginx.conf.j2
  13.    └── vars
  14.      └── main.yaml
  15. └── site.yaml
  16. 7 directories, 6 files
  17.  
  18. [root@docker1 nginxinstall]# ansible-playbook -C -i inventory/host site.yaml
  19. PLAY [test] ************************************************************************************************************
  20. TASK [Gathering Facts] *************************************************************************************************
  21. ok: [192.168.59.12]
  22. TASK [nginx : yum] *****************************************************************************************************
  23. changed: [192.168.59.12]
  24. TASK [nginx : template] ************************************************************************************************
  25. changed: [192.168.59.12]
  26. TASK [nginx : service] *************************************************************************************************
  27. changed: [192.168.59.12]
  28. TASK [nginx : copy] ****************************************************************************************************
  29. changed: [192.168.59.12]
  30. PLAY RECAP *************************************************************************************************************
  31. 192.168.59.12 : ok=5 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

第六步:上传v1版本:

  1. [root@docker1 nginxinstall]# git add .
  2. [root@docker1 nginxinstall]# git config --global user.email "you@example.com"
  3. [root@docker1 nginxinstall]# git config --global user.name "Your Name"
  4. [root@docker1 nginxinstall]# git commit -m v1
  5. [master(根提交) 030ce20] v1
  6. files changed, insertions(+)
  7. create mode inventory/host
  8. create mode roles/nginx/files/index.html
  9. create mode roles/nginx/tasks/main.yaml
  10. create mode roles/nginx/templates/nginx.conf.j2
  11. create mode roles/nginx/vars/main.yaml
  12. create mode site.yaml
  13. [root@docker1 nginxinstall]# git push -u origin master
  14. Password for 'http://root@192.168.59.201':
  15. Counting objects: , done.
  16. Compressing objects: % (/), done.
  17. Writing objects: % (/), 1.80 KiB | bytes/s, done.
  18. Total (delta ), reused (delta )
  19. To http://root@192.168.59.201/root/nginxinstall.git
  20. * [new branch] master -> master
  21. 分支 master 设置为跟踪来自 origin 的远程分支 master

第七步:docker1,网页布置jenkins
1、创建hitlab用户凭证

2、创建项目(nginx_install)

 

3、复制项目链接

 

4、填写项目

 

5、填写shell

 

6、构建

第九步:验证在其他电脑能否上传:(docker2)

  1. [root@docker2 ~]# cd nginxinstall/
  2. [root@docker2 nginxinstall]# ls
  3. inventory roles site.yaml
  4. [root@docker2 nginxinstall]# vim roles/nginx/files/index.html
  5. [root@docker2 nginxinstall]# git add .
  6. [root@docker2 nginxinstall]# ls
  7. inventory roles site.yaml
  8. [root@docker2 nginxinstall]# git commit -m v2
  9. [master 6a6dfa1] v2
  10. 1 file changed, 1 insertion(+), 1 deletion(-)
  11. [root@docker2 nginxinstall]# git push -u origin master
  12.  
  13. (gnome-ssh-askpass:14400): Gtk-WARNING **: 20:22:42.388: cannot open display:
  14. error: unable to read askpass response from '/usr/libexec/openssh/gnome-ssh-askpass'
  15. Password for 'http://root@192.168.59.201':
  16. Counting objects: 11, done.
  17. Compressing objects: 100% (3/3), done.
  18. Writing objects: 100% (6/6), 520 bytes | 0 bytes/s, done.
  19. Total 6 (delta 0), reused 0 (delta 0)
  20. To http://root@192.168.59.201/root/nginxinstall.git
  21. 030ce20..6a6dfa1 master -> master
  22. 分支 master 设置为跟踪来自 origin 的远程分支 master
  23. [root@docker2 nginxinstall]# 

 

项目:git+gitlab+jenkins+ansible上线网站的更多相关文章

  1. Jekens 配置多项目SCM GitLab+Jenkins持续集成环境

    参考: 搭建GitLab+Jenkins持续集成环境图文教程 https://blog.csdn.net/ruangong1203/article/details/73065410 Jenkins中配 ...

  2. 使用Jenkins自动编译我的 java 项目 git maven jenkins

    之前的项目已经将jenkins部署好,现在添加maven项目 准备工作 安装插件 Git plugin Publish Over SSH 全局设置  key: 是 linux服务器的私钥 Global ...

  3. 【Gitlab+Jenkins+Ansible】构建自动化部署

    说明: Gitlab.Jenkins.生产服务器.测试服务器上都需要安装Git. 一.安装Gitlab 1.主机配置 IP: 10.10.10.105 OS: CentOs7. Gitlab版本:gi ...

  4. Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(一)--技术流ken

    前言 在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken>,<Git+Gitlab+A ...

  5. Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(一)

    在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken>,<Git+Gitlab+Ansi ...

  6. Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(6)

    前言 在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx–技术流ken>,<Git+Gitlab+An ...

  7. Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(二)--技术流ken

    项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)--技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个 ...

  8. Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(7)

    项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)–技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个静 ...

  9. Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站

    环境准备 三台主机: 一台主机部署jenkins和作为ansible的管理主机 一台主机部署gitlab和ansible的节点1 一台主机为ansible的节点2 防火墙和apache服务关闭 第一步 ...

随机推荐

  1. centos 文本文件编码转换

    iconv -f utf-8 -t gbk   shtel_single_utf8.mlf > shtel_single_gbk.mlf

  2. 【VSFTP服务】vsftpd文件传输协议

    vsftpd文件传输协议 系统环境:CentOS Linux release 7.6.1810 (Core) 一.简介 FTP(文件传输协议)全称是:Very Secure FTP Server.   ...

  3. jquery ajax怎么使用jsonp跨域访问

    在项目中使用接口的比较多,在客户端跨域访问,jquery中只能使用jquery ajax的jsonp方法. 值得注意的是,jQuery.ajax()只支持get方式的跨域,post的方式是不支持的.& ...

  4. Mysql 查询表字段数量

    select count(*) from information_schema.`COLUMNS` where TABLE_SCHEMA='dbName' -- 数据库名 and TABLE_NAME ...

  5. linux (centos)增删改查用户命令

    1,查看用户 cat /etc/passwd 2,删除用户 userdel 用户名 3,查看组 cat /etc/group 4,删除组 groupdel 组名 5.查看系统中有哪些用户: cut - ...

  6. linq 数据库已存在,直接添加数据

    using System.Data.Linq;using System.Data.Linq.Mapping; namespace ConsoleApplication1388{ class Progr ...

  7. FPGA最小系统设计

    以EP4CE6E22I7为例,设计FPGA最小系统. 程序存储设计 一般使用EPCS4I8N: FPGA_DATA0:13 FPGA_DCLK :12 FPGA_nCS:8 ASDO:6 时钟 待续

  8. Asp.Net SignalR 使用记录

    工作上遇到一个推送消息的功能的实现.本着面向百度编程的思想.网上百度了一大堆.主要的实现方式是原生的WebSocket,和SignalR,再次写一个关于Asp.Net SignalR 的demo 这里 ...

  9. Java生鲜电商平台-redis缓存在商品中的设计与架构

    Java生鲜电商平台-redis缓存在商品中的设计与架构 说明:Java开源生鲜电商平台-redis缓存在商品中的设计与架构. 1. 各种计数,商品维度计数和用户维度计数 说起电商,肯定离不开商品,而 ...

  10. nrm : 无法加载文件 C:\Users\TANG\AppData\Roaming\npm\nrm.ps1,因为在此系统上禁止运行脚本。

    1.win+s 搜索powershell 以管理身份运行 2.使用set-ExecutionPolicy RemoteSigned命令将计算机上的执行策略更改为 RemoteSigned,输入Y确定 ...