diff --git a/app/services/foreman/renderer/scope/macros/base.rb b/app/services/foreman/renderer/scope/macros/base.rb index b222c54595c..05948f19baf 100644 --- a/app/services/foreman/renderer/scope/macros/base.rb +++ b/app/services/foreman/renderer/scope/macros/base.rb @@ -117,15 +117,22 @@ 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}" + param_name = "CONTENT#{Digest::SHA512.hexdigest(filename)[0..7]}" + base64 = Base64.encode64(content) + content_assignments = base64.split("\n").map { |l| "#{param_name}+=#{Shellwords.shellescape(l)}" }.join("\n") + "#{content_assignments}\necho $#{param_name} | 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/interpolated_text.txt b/test/static_fixtures/interpolated_text.txt new file mode 100644 index 00000000000..22588249a54 --- /dev/null +++ b/test/static_fixtures/interpolated_text.txt @@ -0,0 +1,2 @@ +foo: bar +baz: $INTERPOLATED 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/renderers_shared_tests.rb b/test/unit/foreman/renderer/renderers_shared_tests.rb index 5bbce96fd54..42c7e84df41 100644 --- a/test/unit/foreman/renderer/renderers_shared_tests.rb +++ b/test/unit/foreman/renderer/renderers_shared_tests.rb @@ -138,7 +138,10 @@ module RenderersSharedTests test "should render a save_to_file macro" do source = OpenStruct.new(content: '<%= save_to_file("/etc/puppet/puppet.conf", "[main]\nserver=example.com\n") %>') assert_nothing_raised do - assert_equal("cat << EOF-728d4ec4 > /etc/puppet/puppet.conf\n[main]\nserver=example.com\nEOF-728d4ec4", renderer.render(source, @scope)) + actual = renderer.render(source, @scope) + assert_match /[main]/, actual + assert_match /server=example.com/, actual + assert_match /\/etc\/puppet\/puppet.conf/, actual end end diff --git a/test/unit/foreman/renderer/scope/macros/base_test.rb b/test/unit/foreman/renderer/scope/macros/base_test.rb index 8dee5f6ebdc..447a005aaa6 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 @@ -249,21 +250,76 @@ class BaseMacrosTest < ActiveSupport::TestCase end test "should add a missing newline" do - delimiter = 'EOF-e6fb375b' - command = @scope.save_to_file('/tmp/test', 'echo hello') - assert_equal command, "cat << #{delimiter} > /tmp/test\necho hello\n#{delimiter}" + tmp_file = Tempfile.new('save_to_file') + tmp_file.close + + file_content = 'echo hello' + + command = @scope.save_to_file(tmp_file.path, file_content) + + system({'INTERPOLATED' => 'test_value_123'}, command) + + actual = `cat #{tmp_file.path}` + + assert_equal "#{file_content}\n", actual + ensure + tmp_file.unlink end - test "should encode content as base64" do - delimiter = 'EOF-e6fb375b' - base64 = Base64.encode64('echo hello') - command = @scope.save_to_file('/tmp/test', 'echo hello', verbatim: true) - assert_equal command, "cat << #{delimiter} | base64 -d > /tmp/test\n#{base64}#{delimiter}" + test "should not interpolate content with verbatim on" do + tmp_file = Tempfile.new('save_to_file') + tmp_file.close + + file_content = File.read(Rails.root.join('test', 'static_fixtures', 'interpolated_text.txt')) + + command = @scope.save_to_file(tmp_file.path, file_content, verbatim: true) + + system({'INTERPOLATED' => 'test_value_123'}, command) + + actual = `cat #{tmp_file.path}` + + assert_equal file_content, actual + ensure + tmp_file.unlink end test "should ignore escaping of filename by default" do 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) } + + system(command) + + actual = `cat #{tmp_file.path}` + + assert_equal file_content, actual + ensure + tmp_file.unlink + end + + test "Should interpolate ENV values to the script" do + tmp_file = Tempfile.new('save_to_file') + tmp_file.close + + file_content = File.read(Rails.root.join('test', 'static_fixtures', 'interpolated_text.txt')) + + command = @scope.indent(2) { @scope.save_to_file(tmp_file.path, file_content) } + + system({'INTERPOLATED' => 'test_value_123'}, command) + + actual = `cat #{tmp_file.path}` + + assert_match /test_value_123/, 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 7592e5ea370..454f9c9970a 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 8b511c929d9..588f25e442b 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 fdf2808d0ac..7613860f31b 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 720c952f6d2..8946ee9b567 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 c3e906956fe..e6c2328a918 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 4d61e2b7117..cd784f232f8 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 6abb4425476..c7c8ee78985 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 33e6bc908dd..1c9ada0e650 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 dfc6a356553..ae76c1a97f8 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