OpenVPN自动化部署(java+chef+rhel)

tip:蓝色部分为在rhle7上运行的runlist

1 部署vpn-server,并生成client配置和证书

1.1 编写并上传cookbook

# knife upload <cookbook_name>

1.2 客户在draas平台配置参数

proto: udp

port: 1194

subnet: 10.0.11.0    //桥接网络

shared: False        // or True

1.3 形成environmentAttributes

{

"openvpn": {

"port": "1194",

"proto": "udp",

"shared": "False",

"netmask": "255.255.255.0",  //用户定义的subnet的子网掩码

"lowaddr": "10.0.11.3",      //用户定义的subnet的主机号范围

"highaddr": "10.0.11.253",

"ip": "",                    //虚机内网ip地址,暂时为空

"broadcast": "10.0.1.255",   //subnet的广播地址

"gateway": "",               //虚机公网ip地址,暂时为空

"routes": ["route 10.0.1.0 255.255.255.0","route 10.0.2.0 255.255.255.0"],                   //列入该租户所有子网信息

"client": ["client4","client5","client6"],   //client证书名

}

}

1.4 创建虚机,返回内网ip地址填入"ip"字段,floating ip填入"gateway"字段

1.5 把虚机纳入管理(bootstrap)

# knife bootstrap -N <node_name> <node_ip> -p <port> -x <username> -P <password>

// bootStrapByPassWord(nodeName vm-vpn,nodeIp 10.0.11.111,nodeRootName root,nodePassWord Passw0rd)

// bootStrapByKey

1.6 编辑runlist,创建environment

设置runlist为openvpn cookbook中recipes中的stop.rb,default.rb和users.rb:

# knife node run_list set vpnserver "recipe[openvpn::stop]" "recipe[openvpn]" "recipe[openvpn::users]"

# knife node run_list set vpnserver "recipe[openvpn::stop_7]" "recipe[openvpn::default_7]" "recipe[openvpn::users]"

# knife environment create <env_name> -d

# knife environment from file vpn.json -d

# knife node environment_set <node_name> <env_name>

// CreateNodeAndRun(nodeName vm-vpn,runList ["recipe[openvpn::stop]","recipe[openvpn]","recipe[openvpn::users]"],environmentAttributes)

// CreateNodeAndRun(nodeName vm-vpn,runList ["recipe[openvpn::stop_7]","recipe[openvpn::default_7]","recipe[openvpn::users]"],environmentAttributes)

1.7 执行chef-client:

# knife ssh 172.21.0.41 ‘sudo chef-client‘ -p 12345 -u root -P 000000 -m

// autoRunByPassword(nodeName vm-vpn)

2 修改vpn-server

2.1 编写并上传cookbook

2.2 形成environmentAttributes

{

"openvpn": {

"port": "1194",

"proto": "udp",

"shared": "False",

"type": "server-bridge",     //默认桥接

"netmask": "255.255.255.0",  //用户定义的subnet的子网掩码

"lowaddr": "10.0.11.3",      //用户定义的subnet的主机号范围

"highaddr": "10.0.11.253",

"ip": "10.0.11.126",

"broadcast": "10.0.1.255",   //subnet的广播地址

"gateway": "10.0.11.126",    //虚机浮动ip地址

"routes": ["route 10.0.1.0 255.255.255.0","route 10.0.2.0 255.255.255.0"],                   //列入该租户所有子网信息

}

}

2.3 编辑runlist,更新environment

设置runlist为openvpn cookbook中recipes中的stop.rb和default.rb

# knife node run_list set vpnserver "recipe[openvpn::stop]" "recipe[openvpn]"

# knife node run_list set vpnserver "recipe[openvpn::stop_7]" "recipe[openvpn::default_7]"

// CreateNodeAndRun(nodeName vm-vpn,runList ["recipe[openvpn::stop]","recipe[openvpn]","recipe[openvpn::users]"],environmentAttributes)

// CreateNodeAndRun(nodeName vm-vpn,runList ["recipe[openvpn::stop_7]","recipe[openvpn::default_7]","recipe[openvpn::users]"],environmentAttributes)

2.4 执行chef-client

3 删除vpn-server

关闭vpn服务,吊销所有证书,包括根证书,服务器证书以及所有客户端证书

3.1 编写并上传cookbook

3.2 编辑runlist,更新environment:

设置runlist为openvpn cookbook中recipes中的delete.rb:

# knife node run_list set vpnserver "recipe[openvpn::delete]"

3.3 执行chef-client

4 新增vpn-client

4.1 编写并上传cookbook

4.2 形成environmentAttributes:

{

"openvpn": {

"client": ["client7","client8","client9"]   //客户证书信息

}

}

4.3 编辑runlist,更新environment:

设置runlist为openvpn cookbook中recipes中的users.rb:

# knife node run_list set vpnserver "recipe[openvpn::users]"

// CreateNodeAndRun(nodeName vm-vpn,runList ["recipe[openvpn::users]",environmentAttributes)

4.4 执行chef-client

5 吊销vpn-client

5.1 编写并上传cookbook

5.2 形成environmentAttributes:

{

"openvpn": {

"revoke": ["client8","client9"]             //要吊销的证书名

}

}

5.3 编辑runlist,更新environment:

设置runlist为openvpn cookbook中recipes中的revoke.rb:

# knife node run_list set vpnserver "recipe[openvpn::revoke]"

# knife node run_list set vpnserver "recipe[openvpn::revoke_7]"

// CreateNodeAndRun(nodeName vm-vpn,runList ["recipe[openvpn::revoke]",environmentAttributes)

// CreateNodeAndRun(nodeName vm-vpn,runList ["recipe[openvpn::revoke_7]",environmentAttributes)

5.4 执行chef-client

时间: 2024-10-18 03:41:27

OpenVPN自动化部署(java+chef+rhel)的相关文章

自动化部署java maven项目到多个目标主机的Shell脚本

本篇是<Linux Shell脚本之远程自动化部署java maven项目>的姊妹篇,但包含了bug.issue修正和添加了更多的支持特性,可以从GitHub上获取最新脚本内容:https://github.com/DingGuodong/AutomaticDeployJavaMavenProject . 自动化部署java maven项目到多个主机的环境条件假设: 1.java maven项目至多有一个依赖项目 2.多个目标主机上的部署目录是相同的 支持特性: 1.在部署主机上将java m

大规模集群自动化部署工具--Chef的安装部署

Chef脚本管理工具部署 部署节点 节点类型 IP(虚拟假设的IP) Server 192.168.10.191 Workstation 192.168.10.36 Node 192.168.10.35 安装的版本 Chef-Server:chef-server-11.1.0-1.el6.x86_64.rpm Chef-Client:chef-11.10.0-1.el6.x86_64.rpm 安装前需要了解的 首先Chef的官网有许多的发布版本,首先按照操作系统类别来分主要有Red Hat和Ub

Maven插件wagon-maven-plugin自动化部署Java项目到Linux远程服务器

通常情况下,程序开发完成后部署到线上Linux服务器,可能需要经历打包.将包文件传到服务器.SSH连上服务器.敲命令启动程序等一系列繁琐的步骤.实际上这些步骤都可以通过Maven的一个插件wagon-maven-plugin来自动完成. 配置Linux服务器用户名和密码 为了让wagon-maven-plugin插件能SSH连上Linux服务器,首先需要在Maven的配置文件settings.xml中配置好server的用户名和密码. <servers> <server> <

利用Fabric+Capistrano实现Python自动化部署

Fabric是一个用于应用(批量)部署和系统(批量)管理的Python库和命令行工具,关于Fabric的介绍请参考:http://www.fabfile.org/. Capistrano是一个用Ruby语言编写的远程服务器自动化和部署工具,关于Capistrano的介绍请参考:http://capistranorb.com/. 本文仅使用Python语言和部分Linux或Windows系统命令,借助Fabric模块和Capistrano的部署思路,实现在Linux平台和Windows平台的自动化

开源Java自动化部署平台JDeploy

JDeploy是Java + Shell实现的基于Linux系统的自动化.可视化的项目部署平台,能部署Java服务.Java Web项目,可以简化项目部署操作,无需繁琐的黑窗口SSH指令及Jenkins复杂的配置. 传统部署方式:从SVN/GIT服务器检出代码->在IDE中打包->将包传到服务器->SSH连上服务器->敲指令启动/停止 JDeploy部署:创建项目->一键部署/启动/停止 * 检出代码.打包.启动.停止等操作通过Shell脚本自动执行. 下载:http://d

持续集成之“自动化部署”

在前文<依赖管理>中,我们讨论了如何在代码变得庞大,组件增多的情况下,做好外部库和内部组件依赖管理,从而提高构建效率.可以应用的实践包括:一次生成,多次复用:建立统一制品库,外部依赖库可以使用像Maven或Ivy这样的工具进行统一管理:对架构进行调整,使一个大的代码库分成多个组件:每个组件有自己的持续集成体系:对多个组件做持续集成.然而,解决一个问题后,总会有另一个问题等在那里,需要你来解决.这次Joe的团队遇到了部署问题. 星期一早上,Alice一进办公室,就看到一脸倦意的Joe坐在椅子上,

Django 1.6 最佳实践: django项目的服务器自动化部署(转)

原文:http://www.weiguda.com/blog/41/ 当我们设置服务器时, 不应该每次都使用ssh登录服务器, 再按照记忆一步一步的配置. 因为这样实在是太容易忘记某些步骤了. 服务器设置应当自动化, 并写成文档. 在django用户中, Ansible, SaltStack, Puppet和Chef是最流行的四款自动化部署工具. 这些工具似乎都需要长时间学习才能使用, 因为这些工具不是为一台服务器设置的, 而是针对多台服务器的. 以下是这些工具的基本功能: 远程通过apt-ge

通过shell脚本实现代码自动化部署

一.传统部署方式及优缺点 1.传统部署方式 (1)纯手工scp (2)纯手工登录git pull.svn update (3)纯手工xftp往上拉 (4)开发给打一个压缩包,rz上去:解压 2.缺点 (1)全程运维参与,占用大量时间 (2)上线速度慢 (3)人为失误多,管理混乱 (4)回滚慢,不及时 二.环境规划 1.开发环境--开发者本地有自己的环境. 运维需要设置的开发环境,大家共用的服务. 2.测试环境:功能测试环境和性能测试环境. 3.预生产环境:生产环境集群中的某一个节点. 4.生产环

基于Jenkins+Gitlab的自动化部署实战

故事背景 一个中小型企业,是典型的互联网公司,当初期的时候可能运维只能标配到2~3人,此时随着公司的发展,项目会逐渐增多.前期部署项目可能都是手动的, 俗称"人肉部署",这简直是无比的痛苦,不能忍受的.这样开发的时间也会耽误,运维的时间也会耽误,全都浪费在这些重复性的工作上面,毫无价值可言, 这时候运维终于忍受不了,上了脚本.但是慢慢的发现项目依旧在增长,脚本每次还要更改给开发,效率低下,后来测试环境以及开发环境直接上了jeknins, 每台开发机器是jeknins agent端,自此