commit 06f4bf327ae39cc5574ae084c8a2efbbe748701c Author: colben Date: Sat Aug 28 23:54:41 2021 +0800 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..409129b --- /dev/null +++ b/README.md @@ -0,0 +1,121 @@ +# ansible 常用 roles + +## nignx +- disable_ip.yml 注释 upstream 中的一个 ip,停止对该地址的反代 +- enable_ip.yml 取消注释 upstream 中的一个 ip,开启对该地址的反代 +- start_service.yml 启动 nginx 服务 +- stop_service.yml 停止 nginx 服务 +- restart_service.yml 重启 nginx 服务 +- update_web.yml 更新一个 web 目录 +- revert_web.yml 回滚一次 web 目录 +- 常用操作 + - 更新 nginx 的 web 包 + ```bash + ansible-playbook nginx.yml -e " + host=$nginx_host + task_name=update_zip + app_name=$web_name + " + ``` + - 回滚 nginx 的 web 包 + ```bash + ansible-playbook nginx.yml -e " + host=$nginx_host + task_name=revert_zip + app_name=$web_name + " + ``` + +## tomcat +- start_service.yml 启动 tomcat 服务 +- stop_service.yml 关闭 tomcat 服务 +- restart_service.yml 重启 tomcat 服务 +- revert_war.yml 回滚一个 war 包格式的 webapp +- update_war.yml 更新一个 war 包格式的 webapp +- revert_zip.yml 回滚一个 zip 包格式的 webapp +- update_zip.yml 更新一个 zip 包格式的 webapp +- 常用操作 + - 重启 tomcat + ```bash + ansible-playbook tomcat.yml -e " + host=$tomcat_host + task_name=restart_service + " + ``` + - 更新 zip 包 + ```bash + ansible-playbook tomcat.yml -e " + host=$tomcat_host + task_name=update_zip + app_name=$app_name + " + ``` + - 回滚 zip 包 + ```bash + ansible-playbook tomcat.yml -e " + host=$tomcat_host + task_name=revert_zip + app_name=$app_name + " + ``` + - 更新 war 包 + ```bash + ansible-playbook tomcat.yml -e " + host=$tomcat_host + task_name=update_war + app_name=$app_name + " + ``` + - 回滚 war 包 + ```bash + ansible-playbook tomcat.yml -e " + host=$tomcat_host + task_name=revert_war + app_name=$app_name + " + ``` + +## jar +- revert_jar.yml 回滚 jar 包 +- update_jar.yml 更新 jar 包 +- start_service.yml 启动 jar 包 +- stop_service.yml 停止 jar 包 +- 常用操作 + - 更新 jar 包 + ```bash + ansible-playbook jar.yml -e " + host=$jar_host + task_name=update_jar + jar_name=$jar_name + " + ``` + - 回滚 jar 包 + ```bash + ansible-playbook jar.yml -e " + host=$jar_host + task_name=revert_jar + jar_name=$jar_name + " + ``` + +## apk +- revert_apk.yml 回滚 apk 包 +- update_apk.yml 更新 apk 包 +- 重用操作 + - 更新 apk 包 + ```bash + ansible-playbook apk.yml -e " + host=$apk_host + task_name=update_apk + apk_name=$apk_name + " + ``` + - 回滚 apk 包 + ```bash + ansible-playbook apk.yml -e " + host=$apk_host + task_name=revert_apk + apk_name=$apk_name + " + ``` + diff --git a/playbooks/apk.yml b/playbooks/apk.yml new file mode 100644 index 0000000..698083a --- /dev/null +++ b/playbooks/apk.yml @@ -0,0 +1,11 @@ +--- +- hosts: "{{host}}" + gather_facts: false + tasks: + - import_role: + name: apk + when: task_name is match('^(update|revert)_apk$') + vars: + task: "{{task_name}}" + apk: "{{apk_name}}" + diff --git a/playbooks/jar-revert.yml b/playbooks/jar-revert.yml new file mode 100644 index 0000000..214281c --- /dev/null +++ b/playbooks/jar-revert.yml @@ -0,0 +1,23 @@ +- hosts: "{{host}}" + gather_facts: false + vars: + repo: "repo_name" + remote_dir: "/path/to/deploy_dir" + tasks: + - import_role: + name: jar + vars: + task: stop_service + - name: clean {{repo}} logs + shell: cd {{remote_dir}}/../logs/ && rm -rf {{repo}} + - import_role: + name: jar + vars: + task: revert_jar + - import_role: + name: jar + vars: + task: start_service + - name: wait for {{repo}} to start completely + shell: while sleep 2; do grep -m 1 '(JVM running for [0-9\.]\+)$' {{remote_dir}}/../logs/{{repo}}/{{repo}}.log && break; done + diff --git a/playbooks/jar-update.yml b/playbooks/jar-update.yml new file mode 100644 index 0000000..eae6308 --- /dev/null +++ b/playbooks/jar-update.yml @@ -0,0 +1,44 @@ +--- +- hosts: localhost + gather_facts: true + vars: + svn_url: "svn://svn_server/path/to/repo_name" + f_make: true + tasks: + - import_role: + name: jar + vars: + task: svn + - block: + - debug: + msg: "Up_to_date, unnecessary to continue." + - meta: end_play + when: repo_exists.stdout != '' and update_result.stdout == '' and not f_make + - import_role: + name: jar + vars: + task: mvn + +- hosts: "{{host}}" + gather_facts: false + vars: + repo: "repo_name" + remote_dir: "/path/to/deploy_dir" + tasks: + - import_role: + name: jar + vars: + task: stop_service + - name: clean {{repo}} logs + shell: cd {{remote_dir}}/../logs/ && rm -rf {{repo}} + - import_role: + name: jar + vars: + task: update_jar + - import_role: + name: jar + vars: + task: start_service + - name: wait for {{repo}} to start completely + shell: while sleep 2; do grep -m 1 '(JVM running for [0-9\.]\+)$' {{remote_dir}}/../logs/{{repo}}/{{repo}}.log && break; done + diff --git a/playbooks/python.yml b/playbooks/python.yml new file mode 100644 index 0000000..5f68d6b --- /dev/null +++ b/playbooks/python.yml @@ -0,0 +1,22 @@ +--- +- hosts: "{{host}}" + gather_facts: true + vars: + svn_url: "svn://xxxx/xxxx" + remote_path: "/path/to/deploy_dir" + tasks: + - import_role: + name: python + vars: + task: svn + - import_role: + name: python + vars: + task: stop_service + - name: wait 4s before starting service + shell: sleep 4 + - import_role: + name: python + vars: + task: start_service + diff --git a/playbooks/tomcat.yml b/playbooks/tomcat.yml new file mode 100644 index 0000000..3954214 --- /dev/null +++ b/playbooks/tomcat.yml @@ -0,0 +1,42 @@ +--- +- hosts: nginx1:nginx2 + gather_facts: false + tasks: + # 取消 nginx 对该 tomcat 服务器的反代 + - import_role: + name: nginx + vars: + task: disable_ip + ip: "{{hostvars[host]['ansible_ssh_host']}}" + +- hosts: "{{host}}" + gather_facts: false + tasks: + # 停止 tomcat 服务 + - import_role: + name: tomcat + vars: + task: stop_service + # 更新 webapp + - import_role: + name: tomcat + when: task_name|lower != "restart_service" + vars: + task: "{{task_name}}" + app: "{{app_name}}" + # 启动 tomcat 服务 + - import_role: + name: tomcat + vars: + task: start_service + +- hosts: nginx1:nginx2 + gather_facts: false + tasks: + # 启用 nginx 对 tomcat 服务器的反代 + - import_role: + name: nginx + vars: + task: enable_ip + ip: "{{hostvars[host]['ansible_ssh_host']}}" + diff --git a/playbooks/web-revert.yml b/playbooks/web-revert.yml new file mode 100644 index 0000000..3bb447d --- /dev/null +++ b/playbooks/web-revert.yml @@ -0,0 +1,18 @@ +- hosts: "{{host}}" + gather_facts: false + vars: + repo: "repo_name" + remote_dir: "/path/to/deploy_dir" + tasks: + - name: check whether {{repo}}.bak exists + shell: ls {{repo}}.bak || true + args: + chdir: "{{remote_dir}}" + register: repo_bak_exists + - name: restore old {{repo}} + shell: cd {{remote_dir}} && rm -rf {{repo}} && mv {{repo}}.bak {{repo}} + when: repo_bak_exists.stdout != '' + - debug: + msg: "Not found {{repo}}.bak, quit" + when: repo_bak_exists.stdout == '' + diff --git a/playbooks/web-update.yml b/playbooks/web-update.yml new file mode 100644 index 0000000..bb1e92f --- /dev/null +++ b/playbooks/web-update.yml @@ -0,0 +1,30 @@ +--- +- hosts: localhost + gather_facts: true + vars: + repo: "repo_name" + root_dir: "/path/to/svn_repo_dir" + tasks: + - name: update {{repo}} from svn + shell: cd {{root_dir}}/{{repo}} && svn update {{repo}}.zip &>> {{ansible_env.SSH_TTY}} + +- hosts: "{{host}}" + gather_facts: false + vars: + repo: "repo_name" + root_dir: "/path/to/svn_repo_dir" + remote_dir: "/path/to/deploy_dir" + tasks: + - name: upload {{repo}}.zip + copy: src={{root_dir}}/{{repo}}/{{repo}}.zip dest={{remote_dir}}/{{repo}}.zip + - name: check whether {{repo}} exists + shell: ls -d {{repo}} || true + args: + chdir: "{{remote_dir}}" + register: repo_exists + - name: create bakup + shell: cd {{remote_dir}} && rm -rf {{repo}}.bak && mv {{repo}} {{repo}}.bak + when: repo_exists.stdout != '' + - name: create new {{repo}} + shell: cd {{remote_dir}} && unzip {{repo}}.zip && rm -f {{repo}}.zip + diff --git a/roles/apk/defaults/main.yml b/roles/apk/defaults/main.yml new file mode 100644 index 0000000..821c9b1 --- /dev/null +++ b/roles/apk/defaults/main.yml @@ -0,0 +1,5 @@ +--- +task: none +root_dir: /attachment +apk: none + diff --git a/roles/apk/tasks/main.yml b/roles/apk/tasks/main.yml new file mode 100644 index 0000000..03900c6 --- /dev/null +++ b/roles/apk/tasks/main.yml @@ -0,0 +1,3 @@ +--- +- import_tasks: "{{task|lower}}.yml" + diff --git a/roles/apk/tasks/revert_apk.yml b/roles/apk/tasks/revert_apk.yml new file mode 100644 index 0000000..93ef7ca --- /dev/null +++ b/roles/apk/tasks/revert_apk.yml @@ -0,0 +1,9 @@ +--- +- name: check whether {{apk}}.apk.bak exists + shell: cd {{root_dir}} && [ -f {{apk}}.apk.bak ] + ignore_errors: true + register: result +- name: revert {{apk}}.apk.bak + when: result is succeeded + shell: cd {{root_dir}} && rm -f {{apk}}.apk && mv {{apk}}.apk.bak {{apk}}.apk + diff --git a/roles/apk/tasks/update_apk.yml b/roles/apk/tasks/update_apk.yml new file mode 100644 index 0000000..446dc1d --- /dev/null +++ b/roles/apk/tasks/update_apk.yml @@ -0,0 +1,15 @@ +--- +- name: upload {{apk}}.apk.zip + copy: src=/gxfp/transfer/{{apk}}.apk.zip dest={{root_dir}}/{{apk}}.zip +- name: check whether {{apk}}.apk exists + shell: cd {{root_dir}} && [ -f {{apk}}.apk ] + ignore_errors: true + register: result +- name: remove old {{apk}}.apk.bak + shell: cd {{root_dir}} && rm -f {{apk}}.apk.bak +- name: create current {{apk}}.apk.bak + shell: cd {{root_dir}} && mv {{apk}}.apk {{apk}}.apk.bak + when: result is succeeded +- name: unzip new {{apk}}.zip + shell: cd {{root_dir}} && unzip -o -qq {{apk}}.zip && rm -f {{apk}}.zip + diff --git a/roles/jar/defaults/main.yml b/roles/jar/defaults/main.yml new file mode 100644 index 0000000..da5dc5a --- /dev/null +++ b/roles/jar/defaults/main.yml @@ -0,0 +1,10 @@ +--- +root_dir: "/home/repos" +svn_opt: "--username xxxx --password xxxx --non-interactive" +target_dir: "{{root_dir}}/{{repo}}/target" +svn_url: "svn://xxx.xxx.xxx.xxx/xx/xx" +svn_opt: "" +repo: "{{svn_url|basename}}" +remote_dir: "/path/to/deploy/remote" +f_make: false + diff --git a/roles/jar/tasks/main.yml b/roles/jar/tasks/main.yml new file mode 100644 index 0000000..03900c6 --- /dev/null +++ b/roles/jar/tasks/main.yml @@ -0,0 +1,3 @@ +--- +- import_tasks: "{{task|lower}}.yml" + diff --git a/roles/jar/tasks/mvn.yml b/roles/jar/tasks/mvn.yml new file mode 100644 index 0000000..329d687 --- /dev/null +++ b/roles/jar/tasks/mvn.yml @@ -0,0 +1,4 @@ +--- +- name: build with mvn + shell: cd {{root_dir}}/{{repo}} && mvn clean package &>> {{ansible_env.SSH_TTY}} + diff --git a/roles/jar/tasks/revert_jar.yml b/roles/jar/tasks/revert_jar.yml new file mode 100644 index 0000000..4bde159 --- /dev/null +++ b/roles/jar/tasks/revert_jar.yml @@ -0,0 +1,9 @@ +--- +- name: check whether {{repo}}.jar.bak exists + shell: cd {{remote_dir}} && [ -f {{repo}}.jar.bak ] + ignore_errors: true + register: result +- name: revert {{repo}}.jar.bak + when: result is succeeded + shell: cd {{remote_dir}} && rm -f {{repo}}.jar && mv {{repo}}.jar.bak {{repo}}.jar + diff --git a/roles/jar/tasks/start_service.yml b/roles/jar/tasks/start_service.yml new file mode 100644 index 0000000..8572c36 --- /dev/null +++ b/roles/jar/tasks/start_service.yml @@ -0,0 +1,6 @@ +--- +- name: start {{repo}} + service: name={{repo}} state=started +#- name: wait for {{repo}} to start completely + #shell: while sleep 2; do grep -m 1 '(JVM running for [0-9\.]\+)$' {{remote_dir}}/../logs/{{repo}}.log && break; done + diff --git a/roles/jar/tasks/stop_service.yml b/roles/jar/tasks/stop_service.yml new file mode 100644 index 0000000..bd218da --- /dev/null +++ b/roles/jar/tasks/stop_service.yml @@ -0,0 +1,8 @@ +--- +- name: wait 2s to free connections + shell: sleep 2 +- name: stop {{repo}} + service: name={{repo}} state=stopped +#- name: clean {{repo}} logs + #shell: cd {{remote_dir}}/../logs/{{repo}} && rm -f * + diff --git a/roles/jar/tasks/svn.yml b/roles/jar/tasks/svn.yml new file mode 100644 index 0000000..9cd4577 --- /dev/null +++ b/roles/jar/tasks/svn.yml @@ -0,0 +1,16 @@ +--- +- name: check whether {{repo}} exists + shell: ls {{repo}}/.svn || true + args: + chdir: "{{root_dir}}" + register: repo_exists + +- name: checkout {{repo}} from svn + shell: cd {{root_dir}} && rm -rf {{repo}} && svn checkout {{svn_opt}} {{svn_url}} {{repo}} &>> {{ansible_env.SSH_TTY}} + when: repo_exists.stdout == '' + +- name: update {{repo}} from svn + shell: cd {{root_dir}}/{{repo}} && svn update {{svn_opt}} &>> {{ansible_env.SSH_TTY}} + register: update_result + when: repo_exists.stdout != '' + diff --git a/roles/jar/tasks/update_jar.yml b/roles/jar/tasks/update_jar.yml new file mode 100644 index 0000000..6bf11fc --- /dev/null +++ b/roles/jar/tasks/update_jar.yml @@ -0,0 +1,18 @@ +--- +- name: upload {{repo}}.jar + copy: src={{target_dir}}/{{repo}}.jar dest={{remote_dir}}/{{repo}}.jar.new + +- name: remove old {{repo}}.jar.bak + shell: cd {{remote_dir}} && rm -f {{repo}}.jar.bak + +- name: check whether {{repo}}.jar exists + shell: cd {{remote_dir}} && ls {{repo}}.jar || true + register: jar_exists + +- name: create current {{repo}}.jar.bak + shell: cd {{remote_dir}} && mv {{repo}}.jar {{repo}}.jar.bak + when: jar_exists.stdout != '' + +- name: create new {{repo}}.jar + shell: cd {{remote_dir}} && mv {{repo}}.jar.new {{repo}}.jar + diff --git a/roles/nginx/defaults/main.yml b/roles/nginx/defaults/main.yml new file mode 100644 index 0000000..c5835e5 --- /dev/null +++ b/roles/nginx/defaults/main.yml @@ -0,0 +1,6 @@ +--- +task: none +ip: none +root_dir: /html +web: none + diff --git a/roles/nginx/tasks/disable_ip.yml b/roles/nginx/tasks/disable_ip.yml new file mode 100644 index 0000000..1540164 --- /dev/null +++ b/roles/nginx/tasks/disable_ip.yml @@ -0,0 +1,4 @@ +--- +- name: comment {{ip}} in upstream.conf + shell: cd /etc/nginx/conf.d && sed -i "/^ *server {{ip}}/s/^/#/" upstream.conf && nginx -s reload + diff --git a/roles/nginx/tasks/enable_ip.yml b/roles/nginx/tasks/enable_ip.yml new file mode 100644 index 0000000..600cb9a --- /dev/null +++ b/roles/nginx/tasks/enable_ip.yml @@ -0,0 +1,4 @@ +--- +- name: uncomment {{ip}} in upstream.conf + shell: cd /etc/nginx/conf.d && sed -i "/^# *server {{ip}}/s/^#//" upstream.conf && nginx -s reload + diff --git a/roles/nginx/tasks/main.yml b/roles/nginx/tasks/main.yml new file mode 100644 index 0000000..03900c6 --- /dev/null +++ b/roles/nginx/tasks/main.yml @@ -0,0 +1,3 @@ +--- +- import_tasks: "{{task|lower}}.yml" + diff --git a/roles/nginx/tasks/restart_service.yml b/roles/nginx/tasks/restart_service.yml new file mode 100644 index 0000000..f6d3b44 --- /dev/null +++ b/roles/nginx/tasks/restart_service.yml @@ -0,0 +1,4 @@ +--- +- name: restart nginx + service: name=nginx state=restarted + diff --git a/roles/nginx/tasks/start_service.yml b/roles/nginx/tasks/start_service.yml new file mode 100644 index 0000000..55a472b --- /dev/null +++ b/roles/nginx/tasks/start_service.yml @@ -0,0 +1,4 @@ +--- +- name: start nginx + service: name=nginx state=started + diff --git a/roles/nginx/tasks/stop_service.yml b/roles/nginx/tasks/stop_service.yml new file mode 100644 index 0000000..5727b33 --- /dev/null +++ b/roles/nginx/tasks/stop_service.yml @@ -0,0 +1,4 @@ +--- +- name: stop nginx + service: name=nginx state=stopped + diff --git a/roles/python/defaults/main.yml b/roles/python/defaults/main.yml new file mode 100644 index 0000000..842c972 --- /dev/null +++ b/roles/python/defaults/main.yml @@ -0,0 +1,6 @@ +--- +svn_url: "svn://xxx.xxx.xxx.xxx/xx/xx" +svn_opt: "--username xxxx --password xxxx --non-interactive" +repo: "{{svn_url|basename}}" +remote_dir: "/path/to/deploy/remote" + diff --git a/roles/python/tasks/main.yml b/roles/python/tasks/main.yml new file mode 100644 index 0000000..03900c6 --- /dev/null +++ b/roles/python/tasks/main.yml @@ -0,0 +1,3 @@ +--- +- import_tasks: "{{task|lower}}.yml" + diff --git a/roles/python/tasks/start_service.yml b/roles/python/tasks/start_service.yml new file mode 100644 index 0000000..8572c36 --- /dev/null +++ b/roles/python/tasks/start_service.yml @@ -0,0 +1,6 @@ +--- +- name: start {{repo}} + service: name={{repo}} state=started +#- name: wait for {{repo}} to start completely + #shell: while sleep 2; do grep -m 1 '(JVM running for [0-9\.]\+)$' {{remote_dir}}/../logs/{{repo}}.log && break; done + diff --git a/roles/python/tasks/stop_service.yml b/roles/python/tasks/stop_service.yml new file mode 100644 index 0000000..bd218da --- /dev/null +++ b/roles/python/tasks/stop_service.yml @@ -0,0 +1,8 @@ +--- +- name: wait 2s to free connections + shell: sleep 2 +- name: stop {{repo}} + service: name={{repo}} state=stopped +#- name: clean {{repo}} logs + #shell: cd {{remote_dir}}/../logs/{{repo}} && rm -f * + diff --git a/roles/python/tasks/svn.yml b/roles/python/tasks/svn.yml new file mode 100644 index 0000000..dba1fb0 --- /dev/null +++ b/roles/python/tasks/svn.yml @@ -0,0 +1,16 @@ +--- +- name: check whether {{repo}} exists + shell: ls {{repo}}/.svn || true + args: + chdir: "{{remote_dir}}" + register: repo_exists + +- name: checkout {{repo}} from svn + shell: cd {{remote_dir}} && rm -rf {{repo}} && svn checkout {{svn_opt}} {{svn_url}} {{repo}} &>> {{ansible_env.SSH_TTY}} + when: repo_exists.stdout == '' + +- name: update {{repo}} from svn + shell: cd {{remote_dir}}/{{repo}} && svn update {{svn_opt}} &>> {{ansible_env.SSH_TTY}} + register: update_result + when: repo_exists.stdout != '' + diff --git a/roles/tomcat/defaults/main.yml b/roles/tomcat/defaults/main.yml new file mode 100644 index 0000000..2712ff5 --- /dev/null +++ b/roles/tomcat/defaults/main.yml @@ -0,0 +1,5 @@ +--- +task: none +app: none +root_dir: /tomcat + diff --git a/roles/tomcat/tasks/main.yml b/roles/tomcat/tasks/main.yml new file mode 100644 index 0000000..03900c6 --- /dev/null +++ b/roles/tomcat/tasks/main.yml @@ -0,0 +1,3 @@ +--- +- import_tasks: "{{task|lower}}.yml" + diff --git a/roles/tomcat/tasks/restart_service.yml b/roles/tomcat/tasks/restart_service.yml new file mode 100644 index 0000000..6658a14 --- /dev/null +++ b/roles/tomcat/tasks/restart_service.yml @@ -0,0 +1,4 @@ +--- +- debug: + msg: "nothing to do ..." + diff --git a/roles/tomcat/tasks/revert_war.yml b/roles/tomcat/tasks/revert_war.yml new file mode 100644 index 0000000..0f76a09 --- /dev/null +++ b/roles/tomcat/tasks/revert_war.yml @@ -0,0 +1,9 @@ +--- +- name: check whether {{app}}.war.bak exists + shell: cd {{root_dir}}/webapps/ && [ -f {{app}}.war.bak ] + ignore_errors: true + register: result +- name: revert {{app}}.war.bak + when: result is succeeded + shell: cd {{root_dir}}/webapps/ && rm -rf {{app}}.war {{app}} && mv {{app}}.war.bak {{app}}.war + diff --git a/roles/tomcat/tasks/revert_zip.yml b/roles/tomcat/tasks/revert_zip.yml new file mode 100644 index 0000000..3e3f264 --- /dev/null +++ b/roles/tomcat/tasks/revert_zip.yml @@ -0,0 +1,9 @@ +--- +- name: check whether {{app}}_backup.tgz exists + shell: cd {{root_dir}}/webapps/ && [ -f {{app}}_backup.tgz ] + ignore_errors: true + register: result +- name: revert {{app}}_backup.tgz + when: result is succeeded + shell: cd {{root_dir}}/webapps/ && rm -rf {{app}} && tar zxf {{app}}_backup.tgz && rm -f {{app}}_backup.tgz + diff --git a/roles/tomcat/tasks/start_service.yml b/roles/tomcat/tasks/start_service.yml new file mode 100644 index 0000000..5ec4aaa --- /dev/null +++ b/roles/tomcat/tasks/start_service.yml @@ -0,0 +1,8 @@ +--- +- name: start tomcat + service: name=tomcat state=started +- name: wait for tomcat to start completely + shell: while sleep 2; do grep -m 1 'Server startup in [0-9]\+ ms$' {{root_dir}}/logs/catalina.out && break; done +- name: link /dev/null to catalina.out + shell: cd {{root_dir}}/logs/ && rm -f catalina.out && ln -sf /dev/null catalina.out + diff --git a/roles/tomcat/tasks/stop_service.yml b/roles/tomcat/tasks/stop_service.yml new file mode 100644 index 0000000..497579e --- /dev/null +++ b/roles/tomcat/tasks/stop_service.yml @@ -0,0 +1,8 @@ +--- +- name: wait 4s to free tomcat connections + shell: sleep 4 +- name: stop tomcat + service: name=tomcat state=stopped +- name: clean catalina.out + shell: cd {{root_dir}}/logs/ && rm -f catalina.out && touch catalina.out + diff --git a/roles/tomcat/tasks/update_war.yml b/roles/tomcat/tasks/update_war.yml new file mode 100644 index 0000000..d0d9f77 --- /dev/null +++ b/roles/tomcat/tasks/update_war.yml @@ -0,0 +1,15 @@ +--- +- name: upload {{app}}.zip + copy: src=/var/transfer/{{app}}.zip dest={{root_dir}}/webapps/{{app}}.zip +- name: check whether {{app}}.war exists + shell: cd {{root_dir}}/webapps/ && [ -f {{app}}.war ] + ignore_errors: true + register: result +- name: remove old {{app}}.war.bak + shell: cd {{root_dir}}/webapps/ && rm -rf {{app}}.war.bak {{app}} +- name: create current {{app}}.war.bak + when: result is succeeded + shell: cd {{root_dir}}/webapps/ && mv {{app}}.war {{app}}.war.bak +- name: unzip new {{app}}.zip + shell: cd {{root_dir}}/webapps/ && unzip -o -qq {{app}}.zip && rm -f {{app}}.zip + diff --git a/roles/tomcat/tasks/update_zip.yml b/roles/tomcat/tasks/update_zip.yml new file mode 100644 index 0000000..e92195b --- /dev/null +++ b/roles/tomcat/tasks/update_zip.yml @@ -0,0 +1,15 @@ +--- +- name: upload {{app}}.zip + copy: src=/var/transfer/{{app}}.zip dest={{root_dir}}/webapps/{{app}}.zip +- name: check whether {{app}} exists + shell: cd {{root_dir}}/webapps/ && [ -d {{app}} ] + ignore_errors: true + register: result +- name: remove old {{app}}_backup.tgz + shell: cd {{root_dir}}/webapps/ && rm -rf {{app}}_backup.tgz +- name: create current {{app}}_backup.tgz + when: result is succeeded + shell: cd {{root_dir}}/webapps/ && tar zcf {{app}}_backup.tgz {{app}}/ +- name: unzip new {{app}}.zip + shell: cd {{root_dir}}/webapps/ && unzip -o -qq {{app}}.zip && rm -f {{app}}.zip + diff --git a/roles/web/defaults/main.yml b/roles/web/defaults/main.yml new file mode 100644 index 0000000..38fea6c --- /dev/null +++ b/roles/web/defaults/main.yml @@ -0,0 +1,8 @@ +--- +root_dir: "/home/repos" +svn_opt: "--username xxxx --password xxxx --non-interactive" +svn_url: "svn://xxx.xxx.xxx.xxx/xx/xx" +repo: "{{svn_url|basename}}" +remote_dir: "/path/to/deploy/remote" +f_make: false + diff --git a/roles/web/tasks/main.yml b/roles/web/tasks/main.yml new file mode 100644 index 0000000..03900c6 --- /dev/null +++ b/roles/web/tasks/main.yml @@ -0,0 +1,3 @@ +--- +- import_tasks: "{{task|lower}}.yml" + diff --git a/roles/web/tasks/node.yml b/roles/web/tasks/node.yml new file mode 100644 index 0000000..bfd6983 --- /dev/null +++ b/roles/web/tasks/node.yml @@ -0,0 +1,4 @@ +--- +- name: build with node + shell: cd {{root_dir}}/{{repo}} && mvn clean package &>> {{ansible_env.SSH_TTY}} + diff --git a/roles/web/tasks/revert_jar.yml b/roles/web/tasks/revert_jar.yml new file mode 100644 index 0000000..4bde159 --- /dev/null +++ b/roles/web/tasks/revert_jar.yml @@ -0,0 +1,9 @@ +--- +- name: check whether {{repo}}.jar.bak exists + shell: cd {{remote_dir}} && [ -f {{repo}}.jar.bak ] + ignore_errors: true + register: result +- name: revert {{repo}}.jar.bak + when: result is succeeded + shell: cd {{remote_dir}} && rm -f {{repo}}.jar && mv {{repo}}.jar.bak {{repo}}.jar + diff --git a/roles/web/tasks/start_service.yml b/roles/web/tasks/start_service.yml new file mode 100644 index 0000000..8572c36 --- /dev/null +++ b/roles/web/tasks/start_service.yml @@ -0,0 +1,6 @@ +--- +- name: start {{repo}} + service: name={{repo}} state=started +#- name: wait for {{repo}} to start completely + #shell: while sleep 2; do grep -m 1 '(JVM running for [0-9\.]\+)$' {{remote_dir}}/../logs/{{repo}}.log && break; done + diff --git a/roles/web/tasks/stop_service.yml b/roles/web/tasks/stop_service.yml new file mode 100644 index 0000000..bd218da --- /dev/null +++ b/roles/web/tasks/stop_service.yml @@ -0,0 +1,8 @@ +--- +- name: wait 2s to free connections + shell: sleep 2 +- name: stop {{repo}} + service: name={{repo}} state=stopped +#- name: clean {{repo}} logs + #shell: cd {{remote_dir}}/../logs/{{repo}} && rm -f * + diff --git a/roles/web/tasks/svn.yml b/roles/web/tasks/svn.yml new file mode 100644 index 0000000..e05549e --- /dev/null +++ b/roles/web/tasks/svn.yml @@ -0,0 +1,15 @@ +--- +- name: check whether {{repo}} exists + shell: cd {{root_dir}} && [ -d {{repo}}/.svn ] + ignore_errors: true + register: repo_exists + +- name: checkout {{repo}} from svn + shell: cd {{root_dir}} && rm -rf {{repo}} && svn checkout {{svn_opt}} {{svn_url}} {{repo}} &>> {{ansible_env.SSH_TTY}} + when: repo_exists is failed + +- name: update {{repo}} from svn + shell: cd {{root_dir}}/{{repo}} && svn update {{svn_opt}} &>> {{ansible_env.SSH_TTY}} + register: update_result + when: repo_exists is succeeded + diff --git a/roles/web/tasks/update_jar.yml b/roles/web/tasks/update_jar.yml new file mode 100644 index 0000000..1b15b10 --- /dev/null +++ b/roles/web/tasks/update_jar.yml @@ -0,0 +1,10 @@ +--- +- name: upload {{repo}}.jar + copy: src={{root_dir}}/{{repo}}/target/{{repo}}.jar dest={{remote_dir}}/{{repo}}.jar.new +- name: remove old {{repo}}.jar.bak + shell: cd {{remote_dir}} && rm -f {{repo}}.jar.bak +- name: create current {{repo}}.jar.bak + shell: cd {{remote_dir}} && mv {{repo}}.jar {{repo}}.jar.bak +- name: create new {{repo}}.jar + shell: cd {{remote_dir}} && mv {{repo}}.jar.new {{repo}}.jar + diff --git a/roles/zookeeper/defaults/main.yml b/roles/zookeeper/defaults/main.yml new file mode 100644 index 0000000..686c100 --- /dev/null +++ b/roles/zookeeper/defaults/main.yml @@ -0,0 +1,3 @@ +--- +task: none + diff --git a/roles/zookeeper/tasks/cat_myid.yml b/roles/zookeeper/tasks/cat_myid.yml new file mode 100644 index 0000000..16e1285 --- /dev/null +++ b/roles/zookeeper/tasks/cat_myid.yml @@ -0,0 +1,8 @@ +--- +- name: cat zookeeper id + shell: cat /data/zookeeper/data/myid + register: output +- name: print zookeeper id + debug: + msg: "zookeeper id: {{ output.stdout }}" + diff --git a/roles/zookeeper/tasks/main.yml b/roles/zookeeper/tasks/main.yml new file mode 100644 index 0000000..03900c6 --- /dev/null +++ b/roles/zookeeper/tasks/main.yml @@ -0,0 +1,3 @@ +--- +- import_tasks: "{{task|lower}}.yml" + diff --git a/roles/zookeeper/tasks/restart_service.yml b/roles/zookeeper/tasks/restart_service.yml new file mode 100644 index 0000000..d4116e9 --- /dev/null +++ b/roles/zookeeper/tasks/restart_service.yml @@ -0,0 +1,4 @@ +--- +- name: restart zookeeper + service: name=zookeeper state=restarted + diff --git a/roles/zookeeper/tasks/start_service.yml b/roles/zookeeper/tasks/start_service.yml new file mode 100644 index 0000000..119a284 --- /dev/null +++ b/roles/zookeeper/tasks/start_service.yml @@ -0,0 +1,4 @@ +--- +- name: start zookeeper + service: name=zookeeper state=started + diff --git a/roles/zookeeper/tasks/stop_service.yml b/roles/zookeeper/tasks/stop_service.yml new file mode 100644 index 0000000..b2a6cf6 --- /dev/null +++ b/roles/zookeeper/tasks/stop_service.yml @@ -0,0 +1,4 @@ +--- +- name: stop zookeeper + service: name=zookeeper state=stopped +