5.部署gitlab远程私有仓库并使用
[toc]
部署gitlab
私有代码仓库 ,除了gitlab以外 还有gogs
精细化的权限配置
控制用户/用户组权限,避免任何用户都可以将代码提交到master
下载安装包
12345# 下载gitlabwget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm# 安装gitlabyum localinstall -y gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm
安装成功
修改配置文件
备份配置文件
1# cp /etc/gitlab/gitlab.rb{,.bak}
配置邮箱
1234567891011121314151617181920# 修改配置你文件 添加域名vim /etc/gitlab/gitlab.rb13 external_url 'http://gitlab.xxx.com'# 配置邮箱## 用于:用户激活、用户注册、找回密码、合并通知、领导审批、邮 ...
4.CICD远程仓库配置及推送
[toc]
什么是 CI/CD?CI/CD 是一种通过在[应用开发](https://www.redhat.com/zh/topics/devops/[[url-nid:307771;title:'article | why choose red hat for cloud-native development?’])阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。作为一种面向开发和运维团队的解决方案,CI/CD 主要针对在集成新代码时所引发的问题(亦称:“集成地狱”)。
具体而言,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。这些关联的事务通常被统称为“CI/CD 管道”,由开发和运维团队以敏捷方式协同支持,采用的方法不是 DevOps 就是站点可靠性工程(SRE)。
CICD远程仓库仓库类型
使用gitee(码云)配置创建远程仓库
将本地仓库推送至远程仓库1234567891011121314151617181920# 远程仓库全局设置git config --glo ...
3.git分支管理及标签创建
[toc]
Git工作区域git工作区域切换
文件状态
1234Untracked # 没有被管理Staged # 通过git add放入暂存区Unmodified # 没有被修改的状态Modified # 文件被修改了
分支切换及合并示例需求一老板:给我写一个官网程序猿:花了一天一夜,做出来了,请老板过目
编写代码
html代码
123456789101112131415# vim index.html<!DOCTYPE html><html lang="zh"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>代码迭代过程-曾老湿</title> <link rel="stylesheet ...
2.Git本地仓库和版本控制
[toc]
前言不管是做为程序猿还是运维工程师,很多人一定都听说过GitHub 。
分布式版本控制系统版本控制不管实在企业中,在个人,都接触过版本控制比如:
脚本 一遍一遍修改
论文 一遍一遍修改
什么是分布式分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的2机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。
因为 Git 是分布式的,所以 Git 支持离线工作,在本地可以进行很多操作,包括接下来将要重磅推出的分支功能.
git本地仓库git部署12345# 安装gityum install -y git# 查看版本号git --version
web操作12345678910111213141516# 安装nginxyum install -y nginx# 编辑配置文件server{ listen 80; server_name _; root /code/web; index index.html;}# 创建站点目录mkdir /code/ ...
1.Git 使用方法简介
[toc]
前言git 是一个分布式的版本管理工具,适用于多人开发团队进行代码的组织管理。
svn、hg、cvs 等
代码版本管理
每天更新代码
多人合并代码
Git 安装我们可以去官网下载 git
https://git-scm.com/downloads
安装完成后输入下面的命令
12$ git config --global user.name "Your Name"$ git config --global user.email "email@example.com"
创建版本库123456mkdir learngitcd learngitpwd /Users/michael/learngitgit init # 初始化仓库Initialized empty Git repository in /Users/michael/learngit/.git/ls -ah # 查看隐藏的git目录,我们的版本库信息都在这里,一般情况下不需要编辑
大家可以把版本库,想象仓库。存储东西。
添加文件创建好版本库之后,我们就可以对代码进 ...
8.Ansible:Roles、Galaxy、Vault加密
[toc]
Ansible Roles基本概述roles不管是Ansible还是saltstack,在写一键部署的时候,都不可能把所有的步骤全部写入到一个’剧本’文件当中,我们肯定需要把不同的工作模块,拆分开来(解耦),那么说到解耦,我们就需要用到roles官方推荐,因为roles的目录结构层次更加清晰。
例如:我们之前推荐大家写一个base.yml里面写所有基础优化的项目,其实把所有东西摞进去也是很鸡肋的,不如我们把这些功能全部拆分开,谁需要使用,就调用即可。
建议:每个roles最好只使用一个tasks这样方便我们去调用,能够很好的做到解耦。(SOA)
Ansible Roles目录结构官方推荐最佳实践目录结构定义方式123456789101112131415161718192021222324252627282930313233343536373839404142production # inventory file for production serversstaging # inventory file fo ...
7.Ansible:Jinja2模板
[toc]
Ansible Jinja2模板概述什么是jinja2模板jinja2是Python的全功能模板引擎
Jinja2与Ansible啥关系
Ansible通常会使用jinja2模板来修改被管理主机的配置文件等,在saltstack中同样会使用到jinja2
Ansible如何使用Jinja2
使用Ansible的jinja2模板也就是使用template模块,该模块和copy模块一样,都是讲文件复制到远端主机上去,但是区别在于,template模块可以获取到文件中的变量,而copy则是原封不动的把文件内容复制过去。
之前我们在推送rsync的backup脚本时,想把脚本中的变量名改成主机名,如果使用copy模块则推送过去的就是,不变,如果使用template,则会变成对应的主机名。
Ansible使用Jinja2注意事项
Ansible允许jinja2模板中使用条件判断和循环,但是不允许在playbook中使用。 注意:不是每个管理员都需要这个特性,但是有些时候jinja2模块能大大提高效率。
Ansible Jinja2模板使用Jinja2基本语法
输出变量 ...
6.Ansible:流程控制
[toc]
Playbook条件语句
我们使用不同的系统的时候,可以通过判断系统来对软件包进行安装。
在nfs和rsync安装过程中,客户端服务器不需要推送配置文件,之前我们都是写多个play,会影响效率。
我们在源码安装nginx的时候,执行第二遍就无法执行了,此时我们就可以进行判断是否安装过。
ansible_facts[‘os_family’]自动识别系统的变量123456789101112131415161718192021# 当满足什么条件的时候执行哪些taskwhen # 当满足指定条件的时候执行# 根据不同的操作系统安装apache# 示例:- hosts: web_group tasks: - name: Install CentOS Httpd yum: name: httpd state: present #官方 when: ansible_facts['os_family'] == "CentOS" #非官方 when: ansible_di ...
5.Ansible:变量定义、变量注册、facts缓存
[toc]
Ansible的变量变量概述变量提供了便捷的方式来管理Ansible playbook的每一个项目中的动态值,比如nginx-1.6.3这个软件包的版本,在其它地方或许会反复使用,那么如果讲此值设置为变量,然后再在其他的playbook中调用,会方便许多。如此一来还方便维护,减少维护的成本。
定义变量的方式
通过命令行进行变量定义
在play文件中进行变量定义
通过Inventory主机信息文件中进行变量定义
变量的优先级变量的读取优先级为:
命令行 > playbook文件 (vars_file>vars)>host_vars>group_vars> Inventory文件
变量定义Inventory定义变量123[web_group:vars]uid="438"user_name="xxx"
playbook中vars定义变量12345678910111213141516171819202122232425262728293031323334# playbook变量可以通过多种方式进行定义,最 ...
4.Ansible:Playbook一键部署wordpress
[toc]
示例:PlayBook一键部署wordpress需求使用PlayBook编写一键部署wordpress
环境准备
主机名
WanIP
LanIP
角色
应用
m01
10.0.0.61
172.16.1.61
ansible管理机
ansible
web01
10.0.0.7
172.16.1.7
wordpress网站
nginx php nfs
web02
10.0.0.8
172.16.1.8
wordpress网站
nginx php nfs
nfs
10.0.0.31
172.16.1.31
共享存储
nfs rsync
backup
10.0.0.41
172.16.1.41
实时同步备份
nfs rsync
db01
10.0.0.51
172.16.1.51
数据库
mariadb MySQL-python
准备条件12345678910111213141516171819# 在此路径下准备以下文件,用于一键部署wordpress/root/wordpress_ansible/├── base│ ├── hosts│ └── ...