怅然|基于Ansible和Devops的一键测试环境部署实践
wait_for模块主要用来判断端口监听、文件内容等条件是否满足条件 。 在实际部署中可以通过端口去判断服务是否启动 , 或者通过文件中是否包含指定内容去判断是否继续下一步操作 。
-name:waitserverstartwhen:have_app_server_portwait_for:state:startedport:"{{app_server_port}}"timeout:60-name:waitinstallsuccesswait_for:path:"{{user_dir}}/logs/install.log"search_regex:"esb.*installedsuccessfully"有了ansible丰富的模块支持 , 合理的对部署过程进行设计 , 就可以实现多种产品多组合环境的部署 。 为了尽可能的减少后期脚本维护、新产品支持带来的工作量 , 增加脚本的复用性 , 我们将产品的部署过程分为了以下几个步骤
部署依赖主要进行产品部署前的准备工作 , 包括JDK的安装、tomcat端口配置等 。 通过参数定义 , 进行指定版本JDK , 应用服务器等依赖的安装 , 并可对不同产品进行自定义配置 。 对于JDK安装、应用服务配置等操作都封装为单独的role以便复用 。
-include_role:name=jdk-when:need_app_server|boolinclude_role:name=deployappserver5.部署
部署主要为执行产品部署操作 , 主要进行安装包的获取 , 配置文件的修改、部署等操作 。 在执行过程中根据product_type参数选择对应的产品role , 同一产品不同产品版本在同一role下定义不同的task执行不同的操作 。
-include_role:name=setfactor-when:revert_state|boolinclude_role:name=revertsnapshot-include_role:name=cleanenv-include_role:name=getpackage-include_role:name=jdk-when:need_app_server|boolinclude_role:name=deployappserver-include_role:name={{product_type}}-when:start_server|boolinclude_role:name=startserver【怅然|基于Ansible和Devops的一键测试环境部署实践】具体的部署过程根据product_type定义不同的操作 , 其中一个产品部署操作如下所示:
-include_vars:"common_vars.yml"-include_vars:"{{product_module|lower}}.yml"-name:modifyinstall.propertieslineinfile:path:"{{user_dir}}/config/install.properties"regexp:"{{re_item.original}}"line:"{{re_item.replace}}"with_items:"{{deploy_var}}"loop_control:loop_var:re_item-name:update"install.sh"lineinfile:dest:"{{user_dir}}/install.sh"regexp:"{{item.line}}"line:"{{item.insertafter}}"with_items:-{line:"^exportP_I_JAVA_HOME=",insertafter:"exportP_I_JAVA_HOME={{local_java_home}}
- 手机圈小胖|Plus获得基于安卓7.0的Flyme8稳定版推送,魅族15
- 怅然|造一颗芯片有多难,难倒了亿万国人?,为什么造不出国产高端芯片
- 怅然|拥有25天超长续航,荣耀首款运动手表亮相德国IFA
- AI小智君|中国科学家研制!我国首台基于自主知识产权类脑芯片的类脑计算机
- 怅然|“云手机”开始公测,未来光刻机或成废铁!华为正式宣布
- 忘川彼岸|基于机器学习的新能源汽车电池状态预测方法
- 三好先森|RC 发布,基于AntV的权限管理系统,CatchAdmin
- 怅然|你会办吗?三大运营商均推出百元以下套餐,5G套餐纷纷降价
- 知了|蝉这种生物基于自身存在于自然有何意义?
- 华为|华为新系统9月登场,基于Android11打造,主要特征被确认