ansible-playbook+jenkins實現自動新增域名

本示例自動新增域名功能支持自定義域名可指定域名前綴、後綴、所屬region、az、header等信息

playbook

- name: judge a nginx_dir is exits
shell: ls /export/servers/nginx/conf
ignore_errors: True
register: result
tags: add_domain

- name: mkdir nginx
file: dest=/export/servers/nginx/ state=directory
when: result|failed
tags: add_domain

- name: copy nginx
copy: src=nginx/nginx_jss_pure.tar.gz dest=/export/servers/
when: result|failed
tags: add_domain

- name: untag.gz nginx
unarchive: src=/export/servers/nginx_jss_pure.tar.gz dest=/export/servers/nginx copy=no
when: result|failed
tags: add_domain

- name: mkdir log_dir
file: dest=/export/servers/nginx/logs/{{ item }} state=directory
when: Generic is undefined
with_items:
- “{{ DN_Prefix }}.{{ DN_Suffix }}”
tags: add_domain

- name: mkdir log_dir
file: dest=/export/servers/nginx/logs/{{ item }} state=directory
when: Generic is defined and Generic == ‘bucket’
with_items:
- “bucket.{{ DN_Prefix }}.{{ DN_Suffix }}”
tags: add_domain

- name: add.bucket.domain.header
template: src=new_add_domain/add.bucket.domain.header dest=/export/servers/nginx/conf/domains/bucket.{{ DN_Prefix }}.{{ env_vars[env][idc][‘Availability_Zone’] }}.{{ DN_Suffix }}
when: Generic is defined and header is defined and header == ‘true’
tags: add_domain

- name: add.bucket.domain
template: src=new_add_domain/add.bucket.domainn dest=/export/servers/nginx/conf/domains/bucket.{{ DN_Prefix }}.{{ env_vars[env][idc][‘Availability_Zone’] }}.{{ DN_Suffix }}
when: Generic is defined and header is defined and header == ‘false’
tags: add_domain

- name: add.domain.header
template: src=new_add_domain/add.domain.header dest=/export/servers/nginx/conf/domains/{{ DN_Prefix }}.{{ env_vars[env][idc][‘Availability_Zone’] }}.{{ DN_Suffix }}
when: Generic is undefined and header is defined and header == ‘true’
tags: add_domain

- name: add.domain
template: src=new_add_domain/add.domain dest=/export/servers/nginx/conf/domains/{{ DN_Prefix }}.{{ env_vars[env][idc][‘Availability_Zone’] }}.{{ DN_Suffix }}
when: Generic is undefined and header is defined and header == ‘false’
tags: add_domain

- name: copy nginx lib
copy: src=lib_dir/nginx_71.lib.tar.gz dest=/usr/local/lib
tags: add_lib

- name: unarchive nginx_71.lib.tar.gz
unarchive: src=/usr/local/lib/nginx_71.lib.tar.gz dest=/usr/local/lib/ copy=no mode=0755
tags: add_lib

- name: add lddlib
lineinfile: dest=/etc/ld.so.conf line="/usr/local/lib" state=present
tags: add_lib

- name: lddlib
shell: ldconfig
tags: add_lib

- name: nginx status
shell: ps -ef | grep nginx | grep -v grep | grep master | wc -l
register: nginx_status
tags: add_domain

- name: nginx status
debug: msg=nginx_status
tags: add_domain

- name: start–nginx
raw: /export/servers/nginx/sbin/nginx -c /export/servers/nginx/conf/nginx.conf
when: nginx_status.stdout == “0”
tags: add_domain

- name: reload–nginx
raw: /export/servers/nginx/sbin/nginx -c /export/servers/nginx/conf/nginx.conf -s reload
when: nginx_status.stdout == “1”
tags: add_domain

jenkins配置

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

jenkins Build 代碼

#!/bin/bash
set -x
DIR="/export/yangfan/cloud-storage-playbooks"

echo "--------------------輸出IP_LIST---------"
echo $IP_LIST

echo "--------------------輸出IDC-------------"
echo "$IDC"

#格式化IP_LIST
if [[ $IP_LIST =~ "," || $IP_LIST =~ ";" || $IP_LIST =~ ":" ]];then IP=$(echo $IP_LIST | sed -r 's/,/ /g' | sed -r 's/;/ /g' | sed -r 's/:/ /g'); else IP=$IP_LIST ;fi

echo "--------------------打印IP---------------"
echo ${IP}

echo "-----------------生成隨機數HOST------------"
HOST=host_$(date +%s)

echo [run_initialize] >${DIR}/${HOST}

echo ${IP} | sed 's/[ ]\+/\n/g' >>${DIR}/${HOST}

echo [run_initialize:vars] >>${DIR}/${HOST}

echo env=${ENV} >>${DIR}/${HOST}

echo idc=${IDC} >>${DIR}/${HOST}

echo DN_Prefix=${DN_PREFIX} >>${DIR}/${HOST}

echo DN_Suffix=${DN_SUFFIX} >>${DIR}/${HOST}

echo Availability_Zone=${AVAILABILITY_ZONE} >>${DIR}/${HOST}

if [[ ${GENERIC} == 'bucket' ]];then echo Generic=${GENERIC} >>${DIR}/${HOST};fi

echo header=${HEADER} >>${DIR}/${HOST}

cd $DIR
ansible-playbook -i ${HOST} initialize.yml --tags=add_domain

jenkins job
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章