diff --git a/ansible/Jenkinsfile b/ansible/Jenkinsfile index 7b33426..9d3b0d9 100644 --- a/ansible/Jenkinsfile +++ b/ansible/Jenkinsfile @@ -7,10 +7,20 @@ pipeline { } parameters { - string(name: 'ADDITIONAL_CONTENT_SITEA_H2', defaultValue: 'Новое сообщение для SiteA', description: 'Additional

content for SiteA') - string(name: 'ADDITIONAL_CONTENT_SITEA_P', defaultValue: 'Дополнительный параграф для SiteA', description: 'Additional

content for SiteA') - string(name: 'ADDITIONAL_CONTENT_SITEB_H2', defaultValue: 'Новое сообщение для SiteB', description: 'Additional

content for SiteB') - string(name: 'ADDITIONAL_CONTENT_SITEB_P', defaultValue: 'Дополнительный параграф для SiteB', description: 'Additional

content for SiteB') + choice( + name: 'DEPLOY_TARGET', + choices: ['SiteA', 'SiteB', 'All'], + description: 'Выберите сайты для развертывания' + ) + + string(name: 'ADDITIONAL_CONTENT_SITEA_H2', defaultValue: 'Новое сообщение для SiteA', description: 'Дополнительный

контент для SiteA') + string(name: 'ADDITIONAL_CONTENT_SITEA_P', defaultValue: 'Дополнительный параграф для SiteA', description: 'Дополнительный

контент для SiteA') + + string(name: 'ADDITIONAL_CONTENT_SITEB_H2', defaultValue: 'Новое сообщение для SiteB', description: 'Дополнительный

контент для SiteB') + string(name: 'ADDITIONAL_CONTENT_SITEB_P', defaultValue: 'Дополнительный параграф для SiteB', description: 'Дополнительный

контент для SiteB') + + string(name: 'ADDITIONAL_CONTENT_ALL_H2', defaultValue: 'Новое сообщение для всех сайтов', description: 'Дополнительный

контент для всех сайтов') + string(name: 'ADDITIONAL_CONTENT_ALL_P', defaultValue: 'Дополнительный параграф для всех сайтов', description: 'Дополнительный

контент для всех сайтов') } stages { @@ -38,19 +48,46 @@ pipeline { stage('Deploy Site') { steps { script { + def selectedHosts + switch(params.DEPLOY_TARGET) { + case 'SiteA': + selectedHosts = 'SiteA,proxy' + break + case 'SiteB': + selectedHosts = 'SiteB,proxy' + break + case 'All': + selectedHosts = 'SiteA,SiteB,proxy' + break + default: + error "Неизвестный DEPLOY_TARGET: ${params.DEPLOY_TARGET}" + } + def extraVars = [ - siteA_h2: params.ADDITIONAL_CONTENT_SITEA_H2, - siteA_p: params.ADDITIONAL_CONTENT_SITEA_P, - siteB_h2: params.ADDITIONAL_CONTENT_SITEB_H2, - siteB_p: params.ADDITIONAL_CONTENT_SITEB_P, ansible_ssh_private_key_file: env.DECYPTED_KEY_FILE ] + if (params.DEPLOY_TARGET == 'All') { + extraVars.siteA_h2 = params.ADDITIONAL_CONTENT_ALL_H2 + extraVars.siteA_p = params.ADDITIONAL_CONTENT_ALL_P + extraVars.siteB_h2 = params.ADDITIONAL_CONTENT_ALL_H2 + extraVars.siteB_p = params.ADDITIONAL_CONTENT_ALL_P + } else { + if (params.DEPLOY_TARGET == 'SiteA' || params.DEPLOY_TARGET == 'All') { + extraVars.siteA_h2 = params.ADDITIONAL_CONTENT_SITEA_H2 + extraVars.siteA_p = params.ADDITIONAL_CONTENT_SITEA_P + } + if (params.DEPLOY_TARGET == 'SiteB' || params.DEPLOY_TARGET == 'All') { + extraVars.siteB_h2 = params.ADDITIONAL_CONTENT_SITEB_H2 + extraVars.siteB_p = params.ADDITIONAL_CONTENT_SITEB_P + } + } + ansiblePlaybook( playbook: 'ansible/playbook.yml', inventory: "ansible/inventory.yml", extraVars: extraVars, - limit: 'SiteA,SiteB,proxy' + limit: selectedHosts ) } } diff --git a/ansible/roles/nginx_site/tasks/main.yml b/ansible/roles/nginx_site/tasks/main.yml index ef9f480..7d60153 100644 --- a/ansible/roles/nginx_site/tasks/main.yml +++ b/ansible/roles/nginx_site/tasks/main.yml @@ -16,7 +16,7 @@ owner: nginx group: nginx mode: '0755' - when: inventory_hostname in groups['SiteA'] + when: "'SiteA' in group_names" - name: Create web root for SiteB file: @@ -25,19 +25,19 @@ owner: nginx group: nginx mode: '0755' - when: inventory_hostname in groups['SiteB'] + when: "'SiteB' in group_names" - name: Deploy SiteA Configuration template: src: siteA.conf.j2 dest: /etc/nginx/conf.d/siteA.conf - when: inventory_hostname in groups['SiteA'] + when: "'SiteA' in group_names" - name: Deploy SiteB Configuration template: src: siteB.conf.j2 dest: /etc/nginx/conf.d/siteB.conf - when: inventory_hostname in groups['SiteB'] + when: "'SiteB' in group_names" - name: Deploy SiteA HTML template: @@ -48,7 +48,7 @@ site_h1: "{{ siteA.site_h1 }}" site_h2: "{{ siteA.site_h2 }}" site_p: "{{ siteA.site_p }}" - when: inventory_hostname in groups['SiteA'] + when: "'SiteA' in group_names" - name: Deploy SiteB HTML template: @@ -59,7 +59,7 @@ site_h1: "{{ siteB.site_h1 }}" site_h2: "{{ siteB.site_h2 }}" site_p: "{{ siteB.site_p }}" - when: inventory_hostname in groups['SiteB'] + when: "'SiteB' in group_names" - name: Reload Nginx systemd: