项目:git+gitlab+jenkins+ansible上线网站
项目需求
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克隆项目
[root@docker1 ~]# mkdir /nginx
[root@docker1 ~]# cd /nginx
[root@docker1 nginx]# ls
[root@docker1 nginx]# git clone http://root@192.168.59.201/root/nginxinstall.git
正克隆到 'nginxinstall'...
warning: 您似乎克隆了一个空版本库。
[root@docker1 nginx]# cd nginxinstall/
第三步:编写roles(docker1)
[root@docker1 nginxinstall]# mkdir roles/nginx/{tasks,vars,templates,files} -p
[root@docker1 nginxinstall]# tree
.
└── roles
└── nginx
├── files
├── tasks
├── templates
└── vars 6 directories, 0 files [root@docker1 nginxinstall]# vim ./roles/nginx/vars/main.yaml
usr: root
por: 83
prc: 2048
wok: /var/www/html
[root@docker1 nginxinstall]# echo v1 > ./roles/nginx/files/index.html
[root@docker1 nginxinstall]# cp /etc/nginx/nginx.conf ./roles/nginx/templates/nginx.conf.j2
[root@docker1 nginxinstall]# vim ./roles/nginx/templates/nginx.conf.j2
...
user {{ usr }}; events {
worker_connections {{ prc }};
} http {
server {
listen {{ por }};
root {{ wok }};
... [root@docker1 nginxinstall]# vim ./roles/nginx/tasks/main.yaml
- yum: name=nginx state=present
- template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
- service: name=nginx state=restarted
- copy: src=index.html dest={{ wok }} [root@docker1 nginxinstall]# mkdir inventory
[root@docker1 nginxinstall]# ls
inventory roles
[root@docker1 nginxinstall]# vim inventory/host
[test]
192.168.59.12 [root@docker1 nginxinstall]# vim site.yaml
- hosts: all
roles:
- name: nginx [root@docker1 nginxinstall]# vim /etc/sysconfig/jenkins
...
JENKINS_USER="root"
…
第四步:查看jenkins相关信息:
[root@docker1 nginxinstall]# ps aux |grep jenkins
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=
root 0.0 0.0 pts/ R+ : : grep --color=auto jenkins
[root@docker1 nginxinstall]# systemctl restart jenkins
第五步:查看roles文件,并且模拟运行
[root@docker1 nginxinstall]# tree
.
├── inventory
│ └── host
├── roles
│ └── nginx
│ ├── files
│ │ └── index.html
│ ├── tasks
│ │ └── main.yaml
│ ├── templates
│ │ └── nginx.conf.j2
│ └── vars
│ └── main.yaml
└── site.yaml
7 directories, 6 files [root@docker1 nginxinstall]# ansible-playbook -C -i inventory/host site.yaml
PLAY [test] ************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************
ok: [192.168.59.12]
TASK [nginx : yum] *****************************************************************************************************
changed: [192.168.59.12]
TASK [nginx : template] ************************************************************************************************
changed: [192.168.59.12]
TASK [nginx : service] *************************************************************************************************
changed: [192.168.59.12]
TASK [nginx : copy] ****************************************************************************************************
changed: [192.168.59.12]
PLAY RECAP *************************************************************************************************************
192.168.59.12 : ok=5 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
第六步:上传v1版本:
[root@docker1 nginxinstall]# git add .
[root@docker1 nginxinstall]# git config --global user.email "you@example.com"
[root@docker1 nginxinstall]# git config --global user.name "Your Name"
[root@docker1 nginxinstall]# git commit -m v1
[master(根提交) 030ce20] v1
files changed, insertions(+)
create mode inventory/host
create mode roles/nginx/files/index.html
create mode roles/nginx/tasks/main.yaml
create mode roles/nginx/templates/nginx.conf.j2
create mode roles/nginx/vars/main.yaml
create mode site.yaml
[root@docker1 nginxinstall]# git push -u origin master
Password for 'http://root@192.168.59.201':
Counting objects: , done.
Compressing objects: % (/), done.
Writing objects: % (/), 1.80 KiB | bytes/s, done.
Total (delta ), reused (delta )
To http://root@192.168.59.201/root/nginxinstall.git
* [new branch] master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master
第七步:docker1,网页布置jenkins
1、创建hitlab用户凭证
2、创建项目(nginx_install)
3、复制项目链接
4、填写项目
5、填写shell
6、构建
第九步:验证在其他电脑能否上传:(docker2)
[root@docker2 ~]# cd nginxinstall/
[root@docker2 nginxinstall]# ls
inventory roles site.yaml
[root@docker2 nginxinstall]# vim roles/nginx/files/index.html
[root@docker2 nginxinstall]# git add .
[root@docker2 nginxinstall]# ls
inventory roles site.yaml
[root@docker2 nginxinstall]# git commit -m v2
[master 6a6dfa1] v2
1 file changed, 1 insertion(+), 1 deletion(-)
[root@docker2 nginxinstall]# git push -u origin master (gnome-ssh-askpass:14400): Gtk-WARNING **: 20:22:42.388: cannot open display:
error: unable to read askpass response from '/usr/libexec/openssh/gnome-ssh-askpass'
Password for 'http://root@192.168.59.201':
Counting objects: 11, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (6/6), 520 bytes | 0 bytes/s, done.
Total 6 (delta 0), reused 0 (delta 0)
To http://root@192.168.59.201/root/nginxinstall.git
030ce20..6a6dfa1 master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。
[root@docker2 nginxinstall]#
项目:git+gitlab+jenkins+ansible上线网站的更多相关文章
- Jekens 配置多项目SCM GitLab+Jenkins持续集成环境
参考: 搭建GitLab+Jenkins持续集成环境图文教程 https://blog.csdn.net/ruangong1203/article/details/73065410 Jenkins中配 ...
- 使用Jenkins自动编译我的 java 项目 git maven jenkins
之前的项目已经将jenkins部署好,现在添加maven项目 准备工作 安装插件 Git plugin Publish Over SSH 全局设置 key: 是 linux服务器的私钥 Global ...
- 【Gitlab+Jenkins+Ansible】构建自动化部署
说明: Gitlab.Jenkins.生产服务器.测试服务器上都需要安装Git. 一.安装Gitlab 1.主机配置 IP: 10.10.10.105 OS: CentOs7. Gitlab版本:gi ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(一)--技术流ken
前言 在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken>,<Git+Gitlab+A ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(一)
在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken>,<Git+Gitlab+Ansi ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(6)
前言 在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx–技术流ken>,<Git+Gitlab+An ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(二)--技术流ken
项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)--技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个 ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(7)
项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)–技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个静 ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站
环境准备 三台主机: 一台主机部署jenkins和作为ansible的管理主机 一台主机部署gitlab和ansible的节点1 一台主机为ansible的节点2 防火墙和apache服务关闭 第一步 ...
随机推荐
- C# 原子操作理解
C#内置提供的原子操作 Interlocked.Increment:以原子操作的形式递增指定变量的值并存储结果. Interlocked.Decrement:以原子操作的形式递减指定变量的值并存储结果 ...
- LeetCode 328:奇偶链表 Odd Even Linked List
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起.请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性. 请尝试使用原地算法完成.你的算法的空间复杂度应为 O(1), ...
- git 给分支添加描述 管理分支实用方法
1.背景 在我们工作中,正常情况我们处在一个迭代中,一个人最多会有几个功能,比较正常的操作我们会给每个大功能创建不同的分支,方便管理. 我们可以非常愉快的进行版本管理,遇到特殊情况我们也可以方便版本退 ...
- CSS3实现文字描边的2种方法
问题 最近遇到一个需求,需要实现文字的描边效果,如下图 解决方法一 首先想到去看CSS3有没有什么属性可以实现,后来被我找到了text-stroke 该属性是一个复 ...
- python asyncio call_soon, call_at, call_later
1. call_soon, 协程一运行就马上运行 def callback(sleep_times): print("success time {}".format(sleep_t ...
- Kubernetes 部署集群内部DNS服务
Kubernetes 部署集群内部DNS服务 部署官网:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dns/ ...
- MySQL for OPS 02:SQL 基础
写在前面的话 上一节主要谈谈 MySQL 是怎么安装的以及最简单的初始化我们应该做哪些配置.其中也用到了一些简单的用户操作 SQL,所以这一节主要学习常用的 SQL 使用. SQL 介绍 在了解 SQ ...
- GO学习笔记 - 数据校验
本文主题:基于asaskevich/govalidator实现Golang数据校验 小慢哥的原创文章,欢迎转载 目录 ▪ 一. asaskevich/govalidator介绍 ▪ 二. 字符串匹配 ...
- Elasticsearch 使用 php curl 插入数据
<?php /** * Created by PhpStorm. * User: func7 * Date: 2018/11/8 * Time: 11:24 */ set_time_limit( ...
- Python - 函数 - 第十四天
Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也 ...