diff options
author | Samuli Silvius <s.silvius@partner.samsung.com> | 2019-02-13 11:00:39 +0200 |
---|---|---|
committer | Samuli Silvius <s.silvius@partner.samsung.com> | 2019-03-04 19:09:57 +0200 |
commit | f6f5fc4fdba4cb36f600d9f13c65ca27ec003b89 (patch) | |
tree | 554350f081f30dc5fe32abe4ab4ae34f7c7a669c /ansible/roles | |
parent | 3313c854585836ec97b72e2ff82d9ed4bf4ed710 (diff) |
Re-factor nexus role to streamline playbook
Move nexus functionality into nexus role from
infrastructure playbook.
This will make role easier to test and make
it easier to implement other OS support later.
Issue-ID: OOM-1653
Change-Id: I1af2bfef5aa4d6c7b819f5fc40f95c6e8303598c
Signed-off-by: Samuli Silvius <s.silvius@partner.samsung.com>
Diffstat (limited to 'ansible/roles')
-rw-r--r-- | ansible/roles/nexus/defaults/main.yml | 8 | ||||
-rw-r--r-- | ansible/roles/nexus/tasks/configure.yml | 6 | ||||
-rw-r--r-- | ansible/roles/nexus/tasks/insert-images.yml | 3 | ||||
-rw-r--r-- | ansible/roles/nexus/tasks/install.yml | 14 | ||||
-rw-r--r-- | ansible/roles/nexus/tasks/main.yml | 9 | ||||
-rw-r--r-- | ansible/roles/nexus/tasks/runtime-populate.yml | 1 | ||||
-rw-r--r-- | ansible/roles/nexus/vars/main.yml | 1 | ||||
-rw-r--r-- | ansible/roles/nginx/templates/nginx.conf.j2 | 15 |
8 files changed, 38 insertions, 19 deletions
diff --git a/ansible/roles/nexus/defaults/main.yml b/ansible/roles/nexus/defaults/main.yml index 57a79f95..3776f44e 100644 --- a/ansible/roles/nexus/defaults/main.yml +++ b/ansible/roles/nexus/defaults/main.yml @@ -1,2 +1,6 @@ -#Defaults to install, can be set to configure. -phase: install +--- +# By default prepopulated nexus binary blob used. +populate_nexus: false +# By dafault no additional docker images pushed to nexus at runtime +# but all images are pre-populated either at buildtime or at install time (populate_nexus). +runtime_images: {} diff --git a/ansible/roles/nexus/tasks/configure.yml b/ansible/roles/nexus/tasks/configure.yml index 66712d8f..7e6c20e0 100644 --- a/ansible/roles/nexus/tasks/configure.yml +++ b/ansible/roles/nexus/tasks/configure.yml @@ -3,7 +3,7 @@ uri: url: "{{ nexus_url }}/service/rest/v1/script/configure" method: GET - force_basic_auth: yes + force_basic_auth: true user: admin password: admin123 status_code: [200, 404] @@ -13,7 +13,7 @@ uri: url: "{{ nexus_url }}/service/rest/v1/script" method: POST - force_basic_auth: yes + force_basic_auth: true user: admin password: admin123 body_format: json @@ -26,7 +26,7 @@ uri: url: "{{ nexus_url }}/service/rest/v1/script/configure/run" method: POST - force_basic_auth: yes + force_basic_auth: true user: admin password: admin123 body_format: raw diff --git a/ansible/roles/nexus/tasks/insert-images.yml b/ansible/roles/nexus/tasks/insert-images.yml index fb8d7d82..f71d6990 100644 --- a/ansible/roles/nexus/tasks/insert-images.yml +++ b/ansible/roles/nexus/tasks/insert-images.yml @@ -14,6 +14,7 @@ docker_image: name: "{{ runtime_images[component].registry }}{{ runtime_images[component].path }}" tag: "{{ runtime_images[component].tag }}" - push: yes + push: true load_path: "{{ item.path }}" timeout: 120 + changed_when: false # for idenpotence diff --git a/ansible/roles/nexus/tasks/install.yml b/ansible/roles/nexus/tasks/install.yml index 1756b708..99d73dce 100644 --- a/ansible/roles/nexus/tasks/install.yml +++ b/ansible/roles/nexus/tasks/install.yml @@ -4,7 +4,7 @@ path: "{{ app_data_path }}/nexus_data" owner: 200 group: 200 - recurse: yes + recurse: true - name: Load nexus image docker_image: @@ -28,3 +28,15 @@ - "{{ app_data_path }}/nexus_data:/nexus-data:rw" state: started restart_policy: unless-stopped + +- name: Wait for nexus to come up + uri: + url: "{{ nexus_url }}/service/metrics/healthcheck" + user: admin + password: admin123 + force_basic_auth: true + method: GET + retries: 30 + delay: 10 + register: nexus_wait + until: not nexus_wait.failed diff --git a/ansible/roles/nexus/tasks/main.yml b/ansible/roles/nexus/tasks/main.yml index c5905b13..c1d83515 100644 --- a/ansible/roles/nexus/tasks/main.yml +++ b/ansible/roles/nexus/tasks/main.yml @@ -1,2 +1,9 @@ --- -- include_tasks: "{{ phase }}.yml" +- include_tasks: install.yml +- include_tasks: configure.yml + when: populate_nexus | bool +- include_tasks: runtime-populate.yml + when: + - runtime_images is defined + - runtime_images is not none + - runtime_images.keys() | length > 0 diff --git a/ansible/roles/nexus/tasks/runtime-populate.yml b/ansible/roles/nexus/tasks/runtime-populate.yml index e22b650e..ac947ec7 100644 --- a/ansible/roles/nexus/tasks/runtime-populate.yml +++ b/ansible/roles/nexus/tasks/runtime-populate.yml @@ -9,4 +9,3 @@ # need to iterate over those tasks in include - include: "insert-images.yml" with_items: "{{ tar_images.files }}" - diff --git a/ansible/roles/nexus/vars/main.yml b/ansible/roles/nexus/vars/main.yml index 63944161..5ec51869 100644 --- a/ansible/roles/nexus/vars/main.yml +++ b/ansible/roles/nexus/vars/main.yml @@ -1 +1,2 @@ +--- nexus_url: "https://nexus.{{ hostvars[groups.infrastructure[0]].ansible_nodename }}" diff --git a/ansible/roles/nginx/templates/nginx.conf.j2 b/ansible/roles/nginx/templates/nginx.conf.j2 index fb48565f..ff9d2a9c 100644 --- a/ansible/roles/nginx/templates/nginx.conf.j2 +++ b/ansible/roles/nginx/templates/nginx.conf.j2 @@ -12,14 +12,6 @@ http { proxy_send_timeout 120; proxy_read_timeout 300; - upstream nexus { - server nexus:8081; - } - - upstream registry { - server nexus:8082; - } - # http simulations server { listen 80; @@ -38,6 +30,7 @@ http { # nexus simulations server { + resolver 127.0.0.11 valid=30s; listen 80; listen 443 ssl; server_name {% for host in simulated_hosts.nexus -%} @@ -53,11 +46,13 @@ http { client_max_body_size 3G; location / { + set $upstream_nexus nexus:8081; + set $upstream_registry nexus:8082; # redirect to docker registry if ($http_user_agent ~ docker ) { - proxy_pass http://registry; + proxy_pass http://$upstream_registry; } - proxy_pass http://nexus; + proxy_pass http://$upstream_nexus; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |