1440
This commit is contained in:
@@ -6,8 +6,8 @@
|
|||||||
|
|
||||||
vars:
|
vars:
|
||||||
# Wrapper mode:
|
# Wrapper mode:
|
||||||
# false (default): standalone behavior (may requeue + end_host)
|
# false (default): standalone behavior (may end_host)
|
||||||
# true: composable behavior for sot-updater-wrapper.yml (no requeue, no end_host)
|
# true: composable behavior for sot-updater-wrapper.yml (no end_host)
|
||||||
sot_wrapper_mode: false
|
sot_wrapper_mode: false
|
||||||
|
|
||||||
pathprefix: "PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH; "
|
pathprefix: "PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH; "
|
||||||
@@ -33,17 +33,6 @@
|
|||||||
-o NumberOfPasswordPrompts=1
|
-o NumberOfPasswordPrompts=1
|
||||||
-o ConnectTimeout=15
|
-o ConnectTimeout=15
|
||||||
|
|
||||||
rmq_host: "{{ lookup('env','RMQ_HOST') | default('10.210.12.2', true) }}"
|
|
||||||
rmq_port: "{{ lookup('env','RMQ_PORT') | default('15672', true) }}"
|
|
||||||
rmq_user: "{{ lookup('env','RMQ_USER') | default('admin', true) }}"
|
|
||||||
rmq_pass: "{{ lookup('env','RMQ_PASS') | default('change_me', true) }}"
|
|
||||||
rmq_vhost: "{{ lookup('env','RMQ_VHOST') | default('app', true) }}"
|
|
||||||
rmq_exchange: "{{ lookup('env','RMQ_EXCHANGE') | default('controls', true) }}"
|
|
||||||
control_queue: "{{ lookup('env','CONTROLQUEUE') | default('queue_controls', true) }}"
|
|
||||||
|
|
||||||
# --- Retry attempt tracking (default 0 if missing) ---
|
|
||||||
requeue_attempt: "{{ (lookup('env','REQUEUE_ATTEMPT') | default('0', true)) | int }}"
|
|
||||||
|
|
||||||
pre_tasks:
|
pre_tasks:
|
||||||
- name: "NB preflight | Verify script exists"
|
- name: "NB preflight | Verify script exists"
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
@@ -209,73 +198,6 @@
|
|||||||
- "IP changed: {{ nb_ip_changed|default(false) }}"
|
- "IP changed: {{ nb_ip_changed|default(false) }}"
|
||||||
- "Reason: {{ nb_change_reason|default('none') }}"
|
- "Reason: {{ nb_change_reason|default('none') }}"
|
||||||
|
|
||||||
- name: "NB preflight | Compute next_attempt"
|
|
||||||
delegate_to: localhost
|
|
||||||
set_fact:
|
|
||||||
next_attempt: "{{ (requeue_attempt | int) + 1 }}"
|
|
||||||
|
|
||||||
# --- Requeue control: only 3 attempts, 300s apart ---
|
|
||||||
- name: "NB preflight | Publish delayed requeue (300s (10s)) if needed"
|
|
||||||
when:
|
|
||||||
- not (sot_wrapper_mode | default(false))
|
|
||||||
- nb_script.stat.exists
|
|
||||||
- (nb_ip_changed | default(false)) or (
|
|
||||||
(cloud_bad | default(false)) and
|
|
||||||
(cloud_error_type | default('none')) != 'cloud_http_500'
|
|
||||||
)
|
|
||||||
- (requeue_attempt | int) < 3
|
|
||||||
delegate_to: localhost
|
|
||||||
uri:
|
|
||||||
url: "http://{{ rmq_host }}:{{ rmq_port }}/api/exchanges/app/deviceconfig.delayed/publish"
|
|
||||||
method: POST
|
|
||||||
user: "admin"
|
|
||||||
password: "change_me"
|
|
||||||
force_basic_auth: true
|
|
||||||
status_code: 200
|
|
||||||
return_content: yes
|
|
||||||
headers: { content-type: "application/json" }
|
|
||||||
body_format: json
|
|
||||||
body:
|
|
||||||
properties:
|
|
||||||
content_type: "application/json"
|
|
||||||
headers: { x-delay: 900000 }
|
|
||||||
routing_key: "deviceconfig"
|
|
||||||
payload: "{{ {
|
|
||||||
'inscope_device': (ansible_hostname | default(inventory_hostname)),
|
|
||||||
'task_name': 'sot-updater',
|
|
||||||
'attempt': next_attempt
|
|
||||||
} | to_json }}"
|
|
||||||
payload_encoding: "string"
|
|
||||||
register: rmq_requeue
|
|
||||||
changed_when: false
|
|
||||||
failed_when: false
|
|
||||||
|
|
||||||
- name: "NB preflight | Log requeue publish response"
|
|
||||||
when:
|
|
||||||
- not (sot_wrapper_mode | default(false))
|
|
||||||
- nb_script.stat.exists
|
|
||||||
- ((cloud_bad | default(false)) or (nb_ip_changed | default(false)))
|
|
||||||
- (requeue_attempt | int) < 3
|
|
||||||
delegate_to: localhost
|
|
||||||
debug:
|
|
||||||
msg:
|
|
||||||
- "Requeue published (attempt {{ (requeue_attempt | int) + 1 }})"
|
|
||||||
- "HTTP: {{ rmq_requeue.status|default('n/a') }}"
|
|
||||||
- "JSON: {{ rmq_requeue.json|default('<none>') }}"
|
|
||||||
|
|
||||||
- name: "NB preflight | Stop host after requeue"
|
|
||||||
when:
|
|
||||||
- not (sot_wrapper_mode | default(false))
|
|
||||||
- nb_script.stat.exists
|
|
||||||
- (
|
|
||||||
(nb_ip_changed | default(false)) or
|
|
||||||
(
|
|
||||||
(cloud_bad | default(false)) and
|
|
||||||
(cloud_error_type | default('none')) != 'cloud_http_500'
|
|
||||||
)
|
|
||||||
)
|
|
||||||
meta: end_host
|
|
||||||
|
|
||||||
- name: "NB preflight | Pause 1s if OK"
|
- name: "NB preflight | Pause 1s if OK"
|
||||||
when:
|
when:
|
||||||
- nb_script.stat.exists
|
- nb_script.stat.exists
|
||||||
|
|||||||
Reference in New Issue
Block a user