基于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}}
推荐阅读
- 脑梗死|脑梗死和喝酒有没有关系呢?爱喝酒的朋友,应该看看
- 教你自制岩烧乳酪
- 红豆和玉米面是绝配,一个做皮一个做馅,包好入锅一蒸,特香
- 大脑|你的大脑和心理究竟是什么关系?
- 猪血和此菜才是绝配,5块钱炒一盘,补铁助消化,我家一周吃2次
- 春天,要多吃这肉,比猪肉便宜比羊肉温和,营养滋补更解馋
- 烙饼时,别再用凉水和开水了,用它,又软又香还出层,放凉也不硬
- 乙肝|和乙肝患者一起吃饭到底会不会被传染?
- 海带和什么炖是绝配?
- 冬天|“我今年23岁,不敢和人牵手拥抱,都是因为这个恼人的玩意儿”
