diff --git a/app/services/foreman/renderer/scope/macros/base.rb b/app/services/foreman/renderer/scope/macros/base.rb index b222c54595c..05bbafe3dfd 100644 --- a/app/services/foreman/renderer/scope/macros/base.rb +++ b/app/services/foreman/renderer/scope/macros/base.rb @@ -117,15 +117,21 @@ def pxe_kernel_options example "save_to_file(shell_escape('/tmp/a file with spaces'), nil) # => 'cp /dev/null /tmp/a\ file\ with\ spaces'" end def save_to_file(filename, content, verbatim: false) - delimiter = 'EOF-' + Digest::SHA512.hexdigest(filename)[0..7] if content.empty? "cp /dev/null #{filename}" elsif verbatim content = Base64.encode64(content) - "cat << #{delimiter} | base64 -d > #{filename}\n#{content}#{delimiter}" + # since content is a base64 string we don't need to escape it + "echo #{content} | base64 -d > #{filename}" else - content += "\n" unless content.end_with?("\n") - "cat << #{delimiter} > #{filename}\n#{content}#{delimiter}" + content_echos = content.split("\n").map do |content_line| + # to make sure there the substitutions are working, have the bash script + # handle all special characters except double quotes. + "echo \"#{content_line.gsub('"', '\"')}\" >> #{filename}" + end.join("\n") + + # prefix the append commands with a cleanup command + "> #{filename}\n#{content_echos}" end end diff --git a/test/static_fixtures/script.txt b/test/static_fixtures/script.txt new file mode 100644 index 00000000000..3f45fe16295 --- /dev/null +++ b/test/static_fixtures/script.txt @@ -0,0 +1,5 @@ +#!/bin/sh + +echo "Calling Ansible AWX/Tower provisioning callback..." +/usr/bin/curl -v -k -s --data "host_config_key=" https:///api/v2/job_templates//callback/ +echo "DONE" diff --git a/test/unit/foreman/renderer/scope/macros/base_test.rb b/test/unit/foreman/renderer/scope/macros/base_test.rb index 8dee5f6ebdc..761b426a761 100644 --- a/test/unit/foreman/renderer/scope/macros/base_test.rb +++ b/test/unit/foreman/renderer/scope/macros/base_test.rb @@ -1,4 +1,5 @@ require 'test_helper' +require 'tempfile' class BaseMacrosTest < ActiveSupport::TestCase setup do @@ -265,5 +266,22 @@ class BaseMacrosTest < ActiveSupport::TestCase command = @scope.save_to_file('/tmp/ifcfg-$sanitized_real', nil) assert_equal command, 'cp /dev/null /tmp/ifcfg-$sanitized_real' end + + test "Should create a correct script even when indented" do + tmp_file = Tempfile.new('save_to_file') + tmp_file.close + + file_content = File.read(Rails.root.join('test', 'static_fixtures', 'script.txt')) + + command = @scope.indent(2) { @scope.save_to_file(tmp_file.path, file_content) } + + exec(command) + + actual = exec("cat #{tmp_file.path}") + + assert_equal file_content, actual + ensure + tmp_file.unlink + end end end diff --git a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/finish/Kickstart_default_finish.host4dhcp.snap.txt b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/finish/Kickstart_default_finish.host4dhcp.snap.txt index e3e62fd3d90..63b8202c912 100644 --- a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/finish/Kickstart_default_finish.host4dhcp.snap.txt +++ b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/finish/Kickstart_default_finish.host4dhcp.snap.txt @@ -186,13 +186,12 @@ echo "Performing initial puppet run for --tags no_such_tag" -cat << EOF-9f037ba1 > /root/ansible_provisioning_call.sh -#!/bin/sh - -echo "Calling Ansible AWX/Tower provisioning callback..." -/usr/bin/curl -v -k -s --data "host_config_key=" https:///api/v2/job_templates//callback/ -echo "DONE" -EOF-9f037ba1 +> /root/ansible_provisioning_call.sh +echo "#!/bin/sh" >> /root/ansible_provisioning_call.sh +echo "" >> /root/ansible_provisioning_call.sh +echo "echo \"Calling Ansible AWX/Tower provisioning callback...\"" >> /root/ansible_provisioning_call.sh +echo "/usr/bin/curl -v -k -s --data \"host_config_key=\" https:///api/v2/job_templates//callback/" >> /root/ansible_provisioning_call.sh +echo "echo \"DONE\"" >> /root/ansible_provisioning_call.sh chmod +x /root/ansible_provisioning_call.sh /root/ansible_provisioning_call.sh diff --git a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/finish/Preseed_default_finish.debian4dhcp.snap.txt b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/finish/Preseed_default_finish.debian4dhcp.snap.txt index 07f8ddfd55c..c257fa46966 100644 --- a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/finish/Preseed_default_finish.debian4dhcp.snap.txt +++ b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/finish/Preseed_default_finish.debian4dhcp.snap.txt @@ -56,20 +56,19 @@ allow-hotplug $real iface $real inet dhcp EOF -cat << EOF-2929810d > /etc/systemd/system/ansible-callback.service -[Unit] -Description=Provisioning callback to Ansible Tower -Wants=network-online.target -After=network-online.target - -[Service] -Type=oneshot -ExecStart=/usr/bin/curl -k -s --data "host_config_key=" https:///api/v2/job_templates//callback/ -ExecStartPost=/usr/bin/systemctl disable ansible-callback - -[Install] -WantedBy=multi-user.target -EOF-2929810d +> /etc/systemd/system/ansible-callback.service +echo "[Unit]" >> /etc/systemd/system/ansible-callback.service +echo "Description=Provisioning callback to Ansible Tower" >> /etc/systemd/system/ansible-callback.service +echo "Wants=network-online.target" >> /etc/systemd/system/ansible-callback.service +echo "After=network-online.target" >> /etc/systemd/system/ansible-callback.service +echo "" >> /etc/systemd/system/ansible-callback.service +echo "[Service]" >> /etc/systemd/system/ansible-callback.service +echo "Type=oneshot" >> /etc/systemd/system/ansible-callback.service +echo "ExecStart=/usr/bin/curl -k -s --data \"host_config_key=\" https:///api/v2/job_templates//callback/" >> /etc/systemd/system/ansible-callback.service +echo "ExecStartPost=/usr/bin/systemctl disable ansible-callback" >> /etc/systemd/system/ansible-callback.service +echo "" >> /etc/systemd/system/ansible-callback.service +echo "[Install]" >> /etc/systemd/system/ansible-callback.service +echo "WantedBy=multi-user.target" >> /etc/systemd/system/ansible-callback.service # Runs during first boot, removes itself systemctl enable ansible-callback if [ -x /usr/bin/curl ]; then diff --git a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/finish/Preseed_default_finish.ubuntu4dhcp.snap.txt b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/finish/Preseed_default_finish.ubuntu4dhcp.snap.txt index d5fe8049332..07345d06ab6 100644 --- a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/finish/Preseed_default_finish.ubuntu4dhcp.snap.txt +++ b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/finish/Preseed_default_finish.ubuntu4dhcp.snap.txt @@ -56,20 +56,19 @@ allow-hotplug $real iface $real inet dhcp EOF -cat << EOF-2929810d > /etc/systemd/system/ansible-callback.service -[Unit] -Description=Provisioning callback to Ansible Tower -Wants=network-online.target -After=network-online.target - -[Service] -Type=oneshot -ExecStart=/usr/bin/curl -k -s --data "host_config_key=" https:///api/v2/job_templates//callback/ -ExecStartPost=/usr/bin/systemctl disable ansible-callback - -[Install] -WantedBy=multi-user.target -EOF-2929810d +> /etc/systemd/system/ansible-callback.service +echo "[Unit]" >> /etc/systemd/system/ansible-callback.service +echo "Description=Provisioning callback to Ansible Tower" >> /etc/systemd/system/ansible-callback.service +echo "Wants=network-online.target" >> /etc/systemd/system/ansible-callback.service +echo "After=network-online.target" >> /etc/systemd/system/ansible-callback.service +echo "" >> /etc/systemd/system/ansible-callback.service +echo "[Service]" >> /etc/systemd/system/ansible-callback.service +echo "Type=oneshot" >> /etc/systemd/system/ansible-callback.service +echo "ExecStart=/usr/bin/curl -k -s --data \"host_config_key=\" https:///api/v2/job_templates//callback/" >> /etc/systemd/system/ansible-callback.service +echo "ExecStartPost=/usr/bin/systemctl disable ansible-callback" >> /etc/systemd/system/ansible-callback.service +echo "" >> /etc/systemd/system/ansible-callback.service +echo "[Install]" >> /etc/systemd/system/ansible-callback.service +echo "WantedBy=multi-user.target" >> /etc/systemd/system/ansible-callback.service # Runs during first boot, removes itself systemctl enable ansible-callback if [ -x /usr/bin/curl ]; then diff --git a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.host4and6dhcp.snap.txt b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.host4and6dhcp.snap.txt index 443977dad71..64f47571ef8 100644 --- a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.host4and6dhcp.snap.txt +++ b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.host4and6dhcp.snap.txt @@ -249,20 +249,19 @@ echo "Performing initial puppet run for --tags no_such_tag" -cat << EOF-2929810d > /etc/systemd/system/ansible-callback.service -[Unit] -Description=Provisioning callback to Ansible Tower -Wants=network-online.target -After=network-online.target - -[Service] -Type=oneshot -ExecStart=/usr/bin/curl -k -s --data "host_config_key=" https:///api/v2/job_templates//callback/ -ExecStartPost=/usr/bin/systemctl disable ansible-callback - -[Install] -WantedBy=multi-user.target -EOF-2929810d +> /etc/systemd/system/ansible-callback.service +echo "[Unit]" >> /etc/systemd/system/ansible-callback.service +echo "Description=Provisioning callback to Ansible Tower" >> /etc/systemd/system/ansible-callback.service +echo "Wants=network-online.target" >> /etc/systemd/system/ansible-callback.service +echo "After=network-online.target" >> /etc/systemd/system/ansible-callback.service +echo "" >> /etc/systemd/system/ansible-callback.service +echo "[Service]" >> /etc/systemd/system/ansible-callback.service +echo "Type=oneshot" >> /etc/systemd/system/ansible-callback.service +echo "ExecStart=/usr/bin/curl -k -s --data \"host_config_key=\" https:///api/v2/job_templates//callback/" >> /etc/systemd/system/ansible-callback.service +echo "ExecStartPost=/usr/bin/systemctl disable ansible-callback" >> /etc/systemd/system/ansible-callback.service +echo "" >> /etc/systemd/system/ansible-callback.service +echo "[Install]" >> /etc/systemd/system/ansible-callback.service +echo "WantedBy=multi-user.target" >> /etc/systemd/system/ansible-callback.service # Runs during first boot, removes itself systemctl enable ansible-callback diff --git a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.host4dhcp.snap.txt b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.host4dhcp.snap.txt index 04dd8799066..16344bb3fa5 100644 --- a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.host4dhcp.snap.txt +++ b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.host4dhcp.snap.txt @@ -249,20 +249,19 @@ echo "Performing initial puppet run for --tags no_such_tag" -cat << EOF-2929810d > /etc/systemd/system/ansible-callback.service -[Unit] -Description=Provisioning callback to Ansible Tower -Wants=network-online.target -After=network-online.target - -[Service] -Type=oneshot -ExecStart=/usr/bin/curl -k -s --data "host_config_key=" https:///api/v2/job_templates//callback/ -ExecStartPost=/usr/bin/systemctl disable ansible-callback - -[Install] -WantedBy=multi-user.target -EOF-2929810d +> /etc/systemd/system/ansible-callback.service +echo "[Unit]" >> /etc/systemd/system/ansible-callback.service +echo "Description=Provisioning callback to Ansible Tower" >> /etc/systemd/system/ansible-callback.service +echo "Wants=network-online.target" >> /etc/systemd/system/ansible-callback.service +echo "After=network-online.target" >> /etc/systemd/system/ansible-callback.service +echo "" >> /etc/systemd/system/ansible-callback.service +echo "[Service]" >> /etc/systemd/system/ansible-callback.service +echo "Type=oneshot" >> /etc/systemd/system/ansible-callback.service +echo "ExecStart=/usr/bin/curl -k -s --data \"host_config_key=\" https:///api/v2/job_templates//callback/" >> /etc/systemd/system/ansible-callback.service +echo "ExecStartPost=/usr/bin/systemctl disable ansible-callback" >> /etc/systemd/system/ansible-callback.service +echo "" >> /etc/systemd/system/ansible-callback.service +echo "[Install]" >> /etc/systemd/system/ansible-callback.service +echo "WantedBy=multi-user.target" >> /etc/systemd/system/ansible-callback.service # Runs during first boot, removes itself systemctl enable ansible-callback diff --git a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.host4static.snap.txt b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.host4static.snap.txt index ca2170151d7..7ea3735ad30 100644 --- a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.host4static.snap.txt +++ b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.host4static.snap.txt @@ -249,20 +249,19 @@ echo "Performing initial puppet run for --tags no_such_tag" -cat << EOF-2929810d > /etc/systemd/system/ansible-callback.service -[Unit] -Description=Provisioning callback to Ansible Tower -Wants=network-online.target -After=network-online.target - -[Service] -Type=oneshot -ExecStart=/usr/bin/curl -k -s --data "host_config_key=" https:///api/v2/job_templates//callback/ -ExecStartPost=/usr/bin/systemctl disable ansible-callback - -[Install] -WantedBy=multi-user.target -EOF-2929810d +> /etc/systemd/system/ansible-callback.service +echo "[Unit]" >> /etc/systemd/system/ansible-callback.service +echo "Description=Provisioning callback to Ansible Tower" >> /etc/systemd/system/ansible-callback.service +echo "Wants=network-online.target" >> /etc/systemd/system/ansible-callback.service +echo "After=network-online.target" >> /etc/systemd/system/ansible-callback.service +echo "" >> /etc/systemd/system/ansible-callback.service +echo "[Service]" >> /etc/systemd/system/ansible-callback.service +echo "Type=oneshot" >> /etc/systemd/system/ansible-callback.service +echo "ExecStart=/usr/bin/curl -k -s --data \"host_config_key=\" https:///api/v2/job_templates//callback/" >> /etc/systemd/system/ansible-callback.service +echo "ExecStartPost=/usr/bin/systemctl disable ansible-callback" >> /etc/systemd/system/ansible-callback.service +echo "" >> /etc/systemd/system/ansible-callback.service +echo "[Install]" >> /etc/systemd/system/ansible-callback.service +echo "WantedBy=multi-user.target" >> /etc/systemd/system/ansible-callback.service # Runs during first boot, removes itself systemctl enable ansible-callback diff --git a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.host6dhcp.snap.txt b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.host6dhcp.snap.txt index e2fbe253820..8edd228180a 100644 --- a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.host6dhcp.snap.txt +++ b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.host6dhcp.snap.txt @@ -249,20 +249,19 @@ echo "Performing initial puppet run for --tags no_such_tag" -cat << EOF-2929810d > /etc/systemd/system/ansible-callback.service -[Unit] -Description=Provisioning callback to Ansible Tower -Wants=network-online.target -After=network-online.target - -[Service] -Type=oneshot -ExecStart=/usr/bin/curl -k -s --data "host_config_key=" https:///api/v2/job_templates//callback/ -ExecStartPost=/usr/bin/systemctl disable ansible-callback - -[Install] -WantedBy=multi-user.target -EOF-2929810d +> /etc/systemd/system/ansible-callback.service +echo "[Unit]" >> /etc/systemd/system/ansible-callback.service +echo "Description=Provisioning callback to Ansible Tower" >> /etc/systemd/system/ansible-callback.service +echo "Wants=network-online.target" >> /etc/systemd/system/ansible-callback.service +echo "After=network-online.target" >> /etc/systemd/system/ansible-callback.service +echo "" >> /etc/systemd/system/ansible-callback.service +echo "[Service]" >> /etc/systemd/system/ansible-callback.service +echo "Type=oneshot" >> /etc/systemd/system/ansible-callback.service +echo "ExecStart=/usr/bin/curl -k -s --data \"host_config_key=\" https:///api/v2/job_templates//callback/" >> /etc/systemd/system/ansible-callback.service +echo "ExecStartPost=/usr/bin/systemctl disable ansible-callback" >> /etc/systemd/system/ansible-callback.service +echo "" >> /etc/systemd/system/ansible-callback.service +echo "[Install]" >> /etc/systemd/system/ansible-callback.service +echo "WantedBy=multi-user.target" >> /etc/systemd/system/ansible-callback.service # Runs during first boot, removes itself systemctl enable ansible-callback diff --git a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.host6static.snap.txt b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.host6static.snap.txt index b039fd1e02d..5130de758ec 100644 --- a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.host6static.snap.txt +++ b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.host6static.snap.txt @@ -249,20 +249,19 @@ echo "Performing initial puppet run for --tags no_such_tag" -cat << EOF-2929810d > /etc/systemd/system/ansible-callback.service -[Unit] -Description=Provisioning callback to Ansible Tower -Wants=network-online.target -After=network-online.target - -[Service] -Type=oneshot -ExecStart=/usr/bin/curl -k -s --data "host_config_key=" https:///api/v2/job_templates//callback/ -ExecStartPost=/usr/bin/systemctl disable ansible-callback - -[Install] -WantedBy=multi-user.target -EOF-2929810d +> /etc/systemd/system/ansible-callback.service +echo "[Unit]" >> /etc/systemd/system/ansible-callback.service +echo "Description=Provisioning callback to Ansible Tower" >> /etc/systemd/system/ansible-callback.service +echo "Wants=network-online.target" >> /etc/systemd/system/ansible-callback.service +echo "After=network-online.target" >> /etc/systemd/system/ansible-callback.service +echo "" >> /etc/systemd/system/ansible-callback.service +echo "[Service]" >> /etc/systemd/system/ansible-callback.service +echo "Type=oneshot" >> /etc/systemd/system/ansible-callback.service +echo "ExecStart=/usr/bin/curl -k -s --data \"host_config_key=\" https:///api/v2/job_templates//callback/" >> /etc/systemd/system/ansible-callback.service +echo "ExecStartPost=/usr/bin/systemctl disable ansible-callback" >> /etc/systemd/system/ansible-callback.service +echo "" >> /etc/systemd/system/ansible-callback.service +echo "[Install]" >> /etc/systemd/system/ansible-callback.service +echo "WantedBy=multi-user.target" >> /etc/systemd/system/ansible-callback.service # Runs during first boot, removes itself systemctl enable ansible-callback diff --git a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.rhel9_dhcp.snap.txt b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.rhel9_dhcp.snap.txt index 2de4d2fec65..884d1a895f5 100644 --- a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.rhel9_dhcp.snap.txt +++ b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.rhel9_dhcp.snap.txt @@ -130,20 +130,19 @@ echo "Performing initial puppet run for --tags no_such_tag" -cat << EOF-2929810d > /etc/systemd/system/ansible-callback.service -[Unit] -Description=Provisioning callback to Ansible Tower -Wants=network-online.target -After=network-online.target - -[Service] -Type=oneshot -ExecStart=/usr/bin/curl -k -s --data "host_config_key=" https:///api/v2/job_templates//callback/ -ExecStartPost=/usr/bin/systemctl disable ansible-callback - -[Install] -WantedBy=multi-user.target -EOF-2929810d +> /etc/systemd/system/ansible-callback.service +echo "[Unit]" >> /etc/systemd/system/ansible-callback.service +echo "Description=Provisioning callback to Ansible Tower" >> /etc/systemd/system/ansible-callback.service +echo "Wants=network-online.target" >> /etc/systemd/system/ansible-callback.service +echo "After=network-online.target" >> /etc/systemd/system/ansible-callback.service +echo "" >> /etc/systemd/system/ansible-callback.service +echo "[Service]" >> /etc/systemd/system/ansible-callback.service +echo "Type=oneshot" >> /etc/systemd/system/ansible-callback.service +echo "ExecStart=/usr/bin/curl -k -s --data \"host_config_key=\" https:///api/v2/job_templates//callback/" >> /etc/systemd/system/ansible-callback.service +echo "ExecStartPost=/usr/bin/systemctl disable ansible-callback" >> /etc/systemd/system/ansible-callback.service +echo "" >> /etc/systemd/system/ansible-callback.service +echo "[Install]" >> /etc/systemd/system/ansible-callback.service +echo "WantedBy=multi-user.target" >> /etc/systemd/system/ansible-callback.service # Runs during first boot, removes itself systemctl enable ansible-callback diff --git a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.rocky8_dhcp.snap.txt b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.rocky8_dhcp.snap.txt index 3bf0200252c..97b72f6c155 100644 --- a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.rocky8_dhcp.snap.txt +++ b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.rocky8_dhcp.snap.txt @@ -247,20 +247,19 @@ echo "Performing initial puppet run for --tags no_such_tag" -cat << EOF-2929810d > /etc/systemd/system/ansible-callback.service -[Unit] -Description=Provisioning callback to Ansible Tower -Wants=network-online.target -After=network-online.target - -[Service] -Type=oneshot -ExecStart=/usr/bin/curl -k -s --data "host_config_key=" https:///api/v2/job_templates//callback/ -ExecStartPost=/usr/bin/systemctl disable ansible-callback - -[Install] -WantedBy=multi-user.target -EOF-2929810d +> /etc/systemd/system/ansible-callback.service +echo "[Unit]" >> /etc/systemd/system/ansible-callback.service +echo "Description=Provisioning callback to Ansible Tower" >> /etc/systemd/system/ansible-callback.service +echo "Wants=network-online.target" >> /etc/systemd/system/ansible-callback.service +echo "After=network-online.target" >> /etc/systemd/system/ansible-callback.service +echo "" >> /etc/systemd/system/ansible-callback.service +echo "[Service]" >> /etc/systemd/system/ansible-callback.service +echo "Type=oneshot" >> /etc/systemd/system/ansible-callback.service +echo "ExecStart=/usr/bin/curl -k -s --data \"host_config_key=\" https:///api/v2/job_templates//callback/" >> /etc/systemd/system/ansible-callback.service +echo "ExecStartPost=/usr/bin/systemctl disable ansible-callback" >> /etc/systemd/system/ansible-callback.service +echo "" >> /etc/systemd/system/ansible-callback.service +echo "[Install]" >> /etc/systemd/system/ansible-callback.service +echo "WantedBy=multi-user.target" >> /etc/systemd/system/ansible-callback.service # Runs during first boot, removes itself systemctl enable ansible-callback diff --git a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.rocky9_dhcp.snap.txt b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.rocky9_dhcp.snap.txt index be8a37e8e50..5f1e7f6d9ae 100644 --- a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.rocky9_dhcp.snap.txt +++ b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/provision/Kickstart_default.rocky9_dhcp.snap.txt @@ -246,20 +246,19 @@ echo "Performing initial puppet run for --tags no_such_tag" -cat << EOF-2929810d > /etc/systemd/system/ansible-callback.service -[Unit] -Description=Provisioning callback to Ansible Tower -Wants=network-online.target -After=network-online.target - -[Service] -Type=oneshot -ExecStart=/usr/bin/curl -k -s --data "host_config_key=" https:///api/v2/job_templates//callback/ -ExecStartPost=/usr/bin/systemctl disable ansible-callback - -[Install] -WantedBy=multi-user.target -EOF-2929810d +> /etc/systemd/system/ansible-callback.service +echo "[Unit]" >> /etc/systemd/system/ansible-callback.service +echo "Description=Provisioning callback to Ansible Tower" >> /etc/systemd/system/ansible-callback.service +echo "Wants=network-online.target" >> /etc/systemd/system/ansible-callback.service +echo "After=network-online.target" >> /etc/systemd/system/ansible-callback.service +echo "" >> /etc/systemd/system/ansible-callback.service +echo "[Service]" >> /etc/systemd/system/ansible-callback.service +echo "Type=oneshot" >> /etc/systemd/system/ansible-callback.service +echo "ExecStart=/usr/bin/curl -k -s --data \"host_config_key=\" https:///api/v2/job_templates//callback/" >> /etc/systemd/system/ansible-callback.service +echo "ExecStartPost=/usr/bin/systemctl disable ansible-callback" >> /etc/systemd/system/ansible-callback.service +echo "" >> /etc/systemd/system/ansible-callback.service +echo "[Install]" >> /etc/systemd/system/ansible-callback.service +echo "WantedBy=multi-user.target" >> /etc/systemd/system/ansible-callback.service # Runs during first boot, removes itself systemctl enable ansible-callback diff --git a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/user_data/Kickstart_default_user_data.host4dhcp.snap.txt b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/user_data/Kickstart_default_user_data.host4dhcp.snap.txt index f8bf95e19ea..b3948f402e2 100644 --- a/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/user_data/Kickstart_default_user_data.host4dhcp.snap.txt +++ b/test/unit/foreman/renderer/snapshots/ProvisioningTemplate/user_data/Kickstart_default_user_data.host4dhcp.snap.txt @@ -199,13 +199,12 @@ echo "Performing initial puppet run for --tags no_such_tag" - cat << EOF-d592f4ed > /tmp/ansible_provisioning_call.sh -#!/bin/sh - -echo "Calling Ansible AWX/Tower provisioning callback..." -/usr/bin/curl -v -k -s --data "host_config_key=" https:///api/v2/job_templates//callback/ -echo "DONE" -EOF-d592f4ed + > /tmp/ansible_provisioning_call.sh +echo "#!/bin/sh" >> /tmp/ansible_provisioning_call.sh +echo "" >> /tmp/ansible_provisioning_call.sh +echo "echo \"Calling Ansible AWX/Tower provisioning callback...\"" >> /tmp/ansible_provisioning_call.sh +echo "/usr/bin/curl -v -k -s --data \"host_config_key=\" https:///api/v2/job_templates//callback/" >> /tmp/ansible_provisioning_call.sh +echo "echo \"DONE\"" >> /tmp/ansible_provisioning_call.sh /bin/sh /tmp/ansible_provisioning_call.sh # UserData still needs to mark the build as finished