diff --git a/awx/main/utils/external_logging.py b/awx/main/utils/external_logging.py index 8444b1cfbb..743e0f45ab 100644 --- a/awx/main/utils/external_logging.py +++ b/awx/main/utils/external_logging.py @@ -1,5 +1,6 @@ import os - +import shutil +import tempfile import urllib.parse as urlparse from django.conf import settings @@ -112,6 +113,10 @@ def construct_rsyslog_conf_template(settings=settings): def reconfigure_rsyslog(): tmpl = construct_rsyslog_conf_template() - with open('/var/lib/awx/rsyslog/rsyslog.conf', 'w') as f: - f.write(tmpl + '\n') + # Write config to a temp file then move it to preserve atomicity + with tempfile.TemporaryDirectory(prefix='rsyslog-conf-') as temp_dir: + path = temp_dir + '/rsyslog.conf.temp' + with open(path, 'w') as f: + f.write(tmpl + '\n') + shutil.move(path, '/var/lib/awx/rsyslog/rsyslog.conf') supervisor_service_command(command='restart', service='awx-rsyslogd')