ansible 部署基于centos7+docker.1.12+Nginx+openssl+v2版私有仓库
1、申请域名证书不做详细教程网络上很多
2、ansible-playbook 结构
. ├──hosts#需要安装服务器IP地址 ├──roles │├──docker ││├──defaults ││├──files │││└──dockerkey#证书文件加 │││├──domain.crt#Nginxkey文件 │││└──ssl.crt#Nginx证书 ││├──handlers ││├──Meta ││├──tasks │││└──main.yml#dockeransible安装文件 ││├──templates │││├──docker#docker配置文件最新docker没配置文件 │││├──docker.conf.j2#dockerNginx配置 │││├──docker.repo#dockeryum安装源 │││└──docker.service#dockr启动服务最新的会要求必须使用https ││└──vars │├──Nginx ││├──defaults ││├──files │││├──Nginx-1.11.5.tar.gz#Nginx源码文件 │││└──Nginx_install.sh#Nginx安装脚本 ││├──handlers ││├──Meta ││├──tasks │││└──main.yml#Nginxansible安装文件 ││├──templates │││├──default.conf#Nginxweb默认配置 │││├──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#opensslansible安装文件 │├──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#Nginxhhtps证书存放位置 Fullchain:ssl.crt#Nginx证书名字 Privkey:domain.crt#Nginxkey文件名字 roles: -openssl#安装openssl -Nginx#安装Nginx -docker#安装docker及私有仓库 #roles不要搞混了,安装Nginx会去寻找openssl解压路径的
4、openssl main.yml 说明
-name:yumepel-release yum:name=epel-releasestate=present -name:InstallCompileenvironment#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:copytopcre copy:src={{item}}dest=/tmp/{{item}}owner=rootgroup=rootmode=755 with_items: -openssl-{{opensll_ver}}.tar.gz#上传文件到客户机 -openssl_install.sh -name:installopenssl_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:copytoNginx copy:src={{item}}dest=/tmp/{{item}}owner=rootgroup=rootmode=755 with_items: -Nginx-{{Nginx_ver}}.tar.gz#上次文件到Nginx -Nginx_install.sh when:Nginx_path_register.stat.exists==False#判断是否安装Nginx -name:installNginx_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:Nginxconftocl template:src=Nginx.confdest=/etc/Nginx/Nginx.conf#上传配置文件到客户机 -name:Nginxmkdir-pconf.d shell:mkdir-p/etc/Nginx/conf.d -name:Nginxdefault.conf template:src=default.confdest=/etc/Nginx/conf.d/default.conf#上传配置文件到客户机 -name:Nginxstartstoptoclient template:src=Nginxdest=/etc/init.d/Nginxowner=rootgroup=rootmode=755#上传启动文件到客户机 when:Nginxinit_path_register.stat.exists==False -name:Nginxservice shell:chkconfigNginxon&&serviceNginxstart#加入开机启动并启动Nginx when:Nginxinit_path_register.stat.exists==False
6、dockermain.yml 说明
-name:cpdocker.repoclient template:src=docker.repodest=/etc/yum.repos.d/docker.repo#上传yum源到客户机。 -name:cpdockerto/etc/sysconfig/docker template:src=dockerdest=/etc/sysconfig/docker#上传配置文件到客户机 -name:yuminstalldocker yum:name=docker-enginestate=present#安装docker -name:dockerUsingthespecifiedconfigurationfile template:src=docker.servicedest=/lib/systemd/system/docker.service#上传启动文件到客户机 -name:enabledservicedocker.service service:name=docker.serviceenabled=yes#打开docker开机启动 -name:systemctldaemon-reload shell:systemctldaemon-reload#刷新系统service服务器 -lineinfile:dest=/etc/sysconfig/dockerregexp=^OPTIONS=line=OPTIONS='--selinux-enabled--insecure-registry{{Domain_name}}--log-driver=journald'#修改docker本机能够http访问 -name:systemctldaemon-reload shell:systemctldaemon-reload#刷新系统service服务器 -name:startservicedocker.service#启动docker服务 service:name=dockerstate=started -name:create/{{dockerdata}}/registry#创建docker数据文件夹 shell:mkdir-p/{{dockerdata}}/registry -name:selinx/{{dockerdata}}/registry#selinx开启docker服务文件读写权限如果关闭selinx会报错可以不理会 shell:chcon-Rtsvirt_sandBox_file_t/{{dockerdata}} ignore_errors:True -name:yumepel-release#安装yumepel源如果安装就不会安装 yum:name=epel-releasestate=present -name:yumpython-pip#安装PIP支持 yum:name=python-pipstate=present -pip:name=docker-py#安装dockerapi -name:dockerregistry:2.4.1 docker: image:registry:2.4.1#dockerimages state:reloaded pull:always#每次都pull镜像 volumes: -"/{{dockerdata}}/registry:/var/lib/registry/"#docker文件加映射 ports: -"5000:5000"docker#端口映射 -name:mkdir-p/{{dockerkey}}#创建dockerNginx证书存放文件夹 shell:mkdir-p/{{dockerkey}} -name:selinux/{{dockerkey}}#selinx放行文件夹 shell:chcon-Rtsvirt_sandBox_file_t/{{dockerkey}} ignore_errors:True -name:upkeyfileclient copy:src=dockerkey/dest=/{{dockerkey}}/#上传证书文件到客户机 -name:upNginxfileclient template:src=docker.conf.j2dest=/etc/Nginx/conf.d/docker.conf#上次Nginxdocker代理配置到客户机 -name:/usr/sbin/Nginx-sreload#刷新Nginx配置 shell:/usr/sbin/Nginx-sreload
7、一些其它说明:
执行ansible-playbook-ihostssite.yml-verbose 由于附件要求小于2M不能上传源码请根据说2进行存放文件、文件名版本号请修改site.yml openssl源码下载地址:www.openssl.org/source Nginx源码下载地址:Nginx.org 数字证书存放到 ├──roles │├──docker ││├──defaults ││├──files │││└──dockerkey#证书文件加 │││├──domain.crt#Nginxkey文件 │││└──ssl.crt#Nginx证书 部署完成可以打开 如果Nginx证书也配置正确 dockertagcentos:latestdocker.test.com/centos#docker镜像标签 dockerpushdocker.test.com/centos上传镜像到私有仓库 dockerpulldocker.test.com/centos下载镜像到其它服务器 脚本放到附件