ansible 部署基于centos7+docker+nginx+openssl+v2版私有仓库

ansible 部署基于centos7+docker.1.12+nginx+openssl+v2版私有仓库

1、申请域名证书不做详细教程网络上很多

2、ansible-playbook 结构

.
├── hosts # 需要安装服务器IP地址
├── roles
│   ├── docker
│   │   ├── defaults
│   │   ├── files
│   │   │   └── dockerkey #证书 文件加
│   │   │       ├── domain.crt #nginx key文件
│   │   │       └── ssl.crt # nginx 证书
│   │   ├── handlers
│   │   ├── meta
│   │   ├── tasks
│   │   │   └── main.yml # docker ansible 安装文件
│   │   ├── templates
│   │   │   ├── docker #docker 配置文件 最新docker 没配置文件
│   │   │   ├── docker.conf.j2 # docker nginx 配置
│   │   │   ├── docker.repo # docker yum 安装源
│   │   │   └── docker.service # dockr 启动服务 最新的会要求必须使用https
│   │   └── vars
│   ├── nginx
│   │   ├── defaults
│   │   ├── files
│   │   │   ├── nginx-1.11.5.tar.gz # nginx 源码文件
│   │   │   └── nginx_install.sh # nginx 安装脚本
│   │   ├── handlers
│   │   ├── meta
│   │   ├── tasks
│   │   │   └── main.yml # nginx   ansible 安装文件
│   │   ├── templates
│   │   │   ├── default.conf # nginx web 默认配置
│   │   │   ├── nginx # nginx 启动脚本
│   │   │   └── nginx.conf # nginx  默认配置文件
│   │   └── vars
│   └── openssl
│       ├── defaults
│       ├── files
│       │   ├── openssl-1.1.0b.tar.gz # opebssl 源码文件
│       │   └── openssl_install.sh # openssl 安装脚本
│       ├── handlers
│       ├── meta
│       ├── tasks
│       │   └── main.yml # openssl ansible  安装文件
│       ├── templates
│       └── vars
├── site.retry
└── site.yml

3、site.yml 说明

- hosts: all
  user: root
  vars:
     opensll_ver: 1.1.0b # openssl 版本号 变量作为文件名称后缀 安装用到
     nginx_ver: 1.11.5 # nginx 版本号 变量作为文件名称后缀 安装用到
     Domain_name: docker.test.net:5000 # docker 访问私有镜像用到必须能访问
     dockerdata: mydata # docker 仓库宿主机存放地址
     dockerkey: mykey # nginx hhtps 证书存放位置
     Fullchain: ssl.crt # nginx 证书名字
     Privkey: domain.crt # nginx key文件名字
  roles:
   - openssl # 安装 openssl 
   - nginx # 安装 nginx
   - docker # 安装  docker 及私有仓库 
   #roles 不要搞混了,安装nginx 会去寻找 openssl 解压路径的

4、openssl main.yml 说明

- name: yum epel-release
  yum: name=epel-release state=present
- name: Install Compile environment # yum 安装编译环境及依赖包
  yum: name={{ item }} state=present
  with_items:
      - git
      - patch
      - gcc
      - gcc-c++ 
      - readline-devel
      - zlib-devel
      - zlib
      - libffi-devel
      - pcre-devel
      - pcre
      - make
      - autoconf
      - automake
      - libtool
      - bison
      - libxml2-devel
      - libxslt-devel
      - libyaml-devel 
      - python 
      - python-docutils
      - cmake
      - imake
      - expat-devel
      - libaio
      - libaio-devel
      - bzr
      - ncurses-devel
- name: copy to pcre
  copy: src={{ item }} dest=/tmp/{{ item }} owner=root group=root mode=755
  with_items:
      - openssl-{{ opensll_ver }}.tar.gz  # 上传文件到客户机
      - openssl_install.sh
- name: install openssl_install.sh
  shell: /bin/bash /tmp/openssl_install.sh "{{ opensll_ver }}" # 
  #客户机安装openssl

5、nginx main.yml 说明

- stat: path=/usr/sbin/nginx # 获取是否安装nginx
  register: nginx_path_register
- name: copy to nginx
  copy: src={{ item }} dest=/tmp/{{ item }} owner=root group=root mode=755
  with_items:
      - nginx-{{ nginx_ver }}.tar.gz # 上次文件到nginx
      - nginx_install.sh
  when: nginx_path_register.stat.exists == False # 判断是否安装nginx
- name: install nginx_install.sh
  shell: /bin/bash /tmp/nginx_install.sh {{ nginx_ver }} {{ opensll_ver }}
  when: nginx_path_register.stat.exists == False
- stat: path=/etc/init.d/nginx
  register: nginxinit_path_register
- name: nginx conf to cl
  template: src=nginx.conf dest=/etc/nginx/nginx.conf # 上传配置文件到客户机
- name: nginx mkdir -p conf.d
  shell:  mkdir -p /etc/nginx/conf.d
- name: nginx default.conf
  template: src=default.conf dest=/etc/nginx/conf.d/default.conf # 上传配置文件到客户机
- name: nginx start stop to client
  template: src=nginx dest=/etc/init.d/nginx owner=root group=root mode=755 # 上传启动文件到客户机
  when: nginxinit_path_register.stat.exists == False
- name: nginx service 
  shell: chkconfig nginx on && service nginx start # 加入开机启动并启动nginx
  when: nginxinit_path_register.stat.exists == False

6、docker  main.yml 说明

- name: cp  docker.repo client
  template: src=docker.repo dest=/etc/yum.repos.d/docker.repo # 上传yum 源到客户机。
- name: cp  docker to /etc/sysconfig/docker
  template: src=docker dest=/etc/sysconfig/docker # 上传配置文件到客户机
- name: yum install docker
  yum: name=docker-engine state=present # 安装docker
- name: docker Using the specified configuration file 
  template: src=docker.service  dest=/lib/systemd/system/docker.service # 上传启动文件到客户机
- name: enabled service docker.service
  service: name=docker.service enabled=yes # 打开docker 开机启动
- name: systemctl daemon-reload 
  shell: systemctl daemon-reload # 刷新 系统 service 服务器
- lineinfile: dest=/etc/sysconfig/docker regexp=^OPTIONS= line=OPTIONS=‘--selinux-enabled --insecure-registry {{ Domain_name }} --log-driver=journald‘ # 修改docker 本机能够http 访问
- name: systemctl daemon-reload
  shell: systemctl daemon-reload # 刷新 系统 service 服务器
- name: start  service docker.service # 启动docker 服务
  service: name=docker  state=started
- name: create /{{ dockerdata }}/registry # 创建docker 数据文件夹
  shell: mkdir -p /{{ dockerdata }}/registry
- name: selinx /{{ dockerdata }}/registry # selinx 开启 docker 服务文件读写权限 如果关闭selinx 会报错 可以不理会
  shell: chcon -Rt svirt_sandbox_file_t /{{ dockerdata }}
  ignore_errors: True
- name: yum epel-release # 安装yum epel 源 如果安装就不会安装
  yum: name=epel-release state=present
- name: yum python-pip # 安装PIP 支持
  yum: name=python-pip state=present
- pip: name=docker-py # 安装docker  api
- name: docker registry:2.4.1
  docker: 
    image: registry:2.4.1 # docker images
    state: reloaded
    pull: always # 每次都pull 镜像
    volumes: 
    - "/{{ dockerdata }}/registry:/var/lib/registry/" # docker 文件加映射
    ports:
    - "5000:5000" docker #端口映射
- name: mkdir -p /{{ dockerkey }}  # 创建docker nginx 证书存放文件夹
  shell:  mkdir -p /{{ dockerkey }}
- name: selinux  /{{ dockerkey }} # selinx 放行文件夹 
  shell: chcon -Rt svirt_sandbox_file_t /{{ dockerkey }} 
  ignore_errors: True
- name: up key file client
  copy: src=dockerkey/  dest=/{{ dockerkey }}/ # 上传证书文件到客户机
- name: up nginx file client 
  template: src=docker.conf.j2 dest=/etc/nginx/conf.d/docker.conf # 上次nginx docker 代理配置到客户机
- name: /usr/sbin/nginx  -s reload # 刷新nginx 配置
  shell: /usr/sbin/nginx  -s reload

7、一些其它说明:

执行ansible-playbook -i hosts site.yml -verbose
由于附件要求小于2M 不能上传源码 请根据说2 进行存放文件、文件名版本号请修改 site.yml 
openssl 源码下载地址:www.openssl.org/source  
nginx 源码下载地址:nginx.org
数字证书存放到

├── roles
│   ├── docker
│   │   ├── defaults
│   │   ├── files
│   │   │   └── dockerkey #证书 文件加
│   │   │       ├── domain.crt #nginx key文件
│   │   │       └── ssl.crt # nginx 证书
部署完成 可以打开
如果nginx 证书也配置正确 
  docker tag centos:latest docker.test.com/centos # docker 镜像标签
  docker push docker.test.com/centos 上传镜像到私有仓库
  docker pull docker.test.com/centos 下载镜像到其它服务器 
  脚本放到附件
时间: 2024-10-12 22:20:18

ansible 部署基于centos7+docker+nginx+openssl+v2版私有仓库的相关文章

部署基于Gitlab+Docker+Rancher+Harbor的前端项目这一篇就够了

部署基于Gitlab+Docker+Rancher+Harbor的前端项目这一篇就够了 安大虎 ? momenta 中台开发工程师 6 人赞同了该文章 就目前的形势看,一家公司的运维体系不承载在 Docker+Harbor(或 Pouch 等同类平台)之上都不好意思说自己的互联网公司.当然这些技术也不适用于全部公司,技术在迭代,平台也一样,把我使用的工具和大家分享下,一起成长(文章中扩展可按需Google). Docker docker的架构图如下: 从图中可以看出几个组成部分 docker c

docker使用registry搭建本地私有仓库

参考链接来自:http://blog.csdn.net/wangtaoking1/article/details/44180901/ 和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时也允许我们使用registry搭建本地私有仓库. 使用私有仓库有许多优点: 节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可: 提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用. 接下来我们就大致说一下如何在本地搭建

Docker镜像创建及建立私有仓库

Docker镜像创建方法 创建镜像的方法有三种,分别是基于已有的镜像创建.基于本地模板创建.基于Dockerfile 创建,下面着重介绍这三种创建镜像的方法. ? 基于已有镜像创建 首先将镜像加载到容器,将容器里面运行的程序及运行环境打包起来生成新的镜像,需要记住该容器的ID号. 命令格式: docker commit [选项] 容器ID/名称 仓库名称:[标签] 常用选项: -m:说明信息 ? -a:作者信息 ? -p:生成过程中停止容器的运行 # docker create -it nick

Docker以https访问Harbor私有仓库(二)

1 说明 前文Centos7搭建Harbor私有仓库(二)中,我们以https方式搭建了Harbor,本篇我们主要配置Docker以https方式访问Harbor私有仓库 2 Docker配置 2.1 Mac系统 2.1.1 配置Docker Mac系统中只需配置Proferences -> Proxies使用System Proxy即可,如下: 2.1.2 登录私服验证 docker login registry.anxminise.cc #登录私服 2.2 Windows系统 待补充 2.3

将ASP.NET Core部署到CentOS7,使用Nginx代理

基础环境和相关软件准备 一.CentOS7.1 64位系统(或者其他CentOS版本的64位系统) 二.XShell软件(Windows环境下的Linux终端) 三..NetCore 1.下载安装,下载地址,https://www.microsoft.com/net/download#core 2.创建项目 3.还原依赖库&运行程序 四.Nginx 1.下载安装 2.配制环境 操作步骤 一.虚拟机安装好CentOS7.1系统,并调试好网络 二.安装好XShell软件 三..Net Core 1.

ansible 部署基于windows 2008 r2+rsync+alwaysUp(守护进程)

准备:升级PowerShell3.0 及打开WinRM模块 参考文章:http://juestnow.blog.51cto.com/1515305/1875026 下载软件包rsync http://down.51cto.com/data/371729 alwaysUp https://www.coretechnologies.com/products/AlwaysUp/ AlwaysUpCLT https://www.coretechnologies.com/products/AlwaysUp

node项目自动化部署--基于Jenkins,Docker,Github(3)自动化部署

GitHub仓库 由于现在的代码基本上都是多人合作开发,所以肯定会用到像 git 这样的版本控制工具 所以这里使用 GitHub 来做一个演示 首先我们需要在github上新建一个仓库 点击New来新建一个仓库 输入一个名字 以及描述后点击 create 然后将代码上传到GitHub上 这里我上传的是一个简单的 hello world 的demo 到这里要部署的代码就准备完成了,接下来需要编写 Dockerfile 来告诉 docker 该怎么打包我们的项目 Dockerfile编写 首先我们在

部署基于Centos7的Zimbra邮件系统-之二系统准备及安装

继续上一章进行系统准备和Zimbra系统的安装. Allow iptables to by-pass all zimbra ports. Disable other services and firewall Configure iptables to allow email server traffic [[email protected] ~]#vi /etc/sysconfig/iptables Add the following -A INPUT -m state –state NEW

基于ssl协议和openssl工具建立私有CA

前言 要自建CA需先了解openssl工具和ssl协议还有各加密类型 ssl(Secure Socket Layer)安全套接字层当前版本为3.0,浏览器与Web服务器之间的身份认证和加密数据传输,它工作在传输层和各应用层之间,用户可以选择是否使用ssl进行传输,选择ssl协议将调用ssl函数库,端口也会发生变化. 加密类型 对称加密:任意加密数据块和流的内容,加密和解密用同一个密码, 通常明文通过算法和密钥生成密文,再由接受者用相同的密钥和算法解密获取明文. 算法:(DES.3DES.AES现