怅然|基于Ansible和Devops的一键测试环境部署实践


怅然|基于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丰富的模块支持 , 合理的对部署过程进行设计 , 就可以实现多种产品多组合环境的部署 。 为了尽可能的减少后期脚本维护、新产品支持带来的工作量 , 增加脚本的复用性 , 我们将产品的部署过程分为了以下几个步骤
怅然|基于Ansible和Devops的一键测试环境部署实践 部署依赖主要进行产品部署前的准备工作 , 包括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}}


    推荐阅读