From 18101e9e042b6c0b967123dc22999905f33fa16d Mon Sep 17 00:00:00 2001 From: Shim Shtein Date: Tue, 20 Aug 2024 06:08:27 -0400 Subject: [PATCH] Fixes #37741 - Fix save_to_file to be indentation independent --- .../foreman/renderer/scope/macros/base.rb | 20 ++++- test/static_fixtures/interpolated_text.txt | 2 + test/static_fixtures/script.txt | 5 ++ .../renderer/renderers_shared_tests.rb | 5 +- .../renderer/scope/macros/base_test.rb | 87 +++++++++++++++++-- ...ickstart_default_finish.host4dhcp.snap.txt | 13 ++- ...reseed_default_finish.debian4dhcp.snap.txt | 27 +++--- ...reseed_default_finish.ubuntu4dhcp.snap.txt | 27 +++--- .../Kickstart_default.host4and6dhcp.snap.txt | 27 +++--- .../Kickstart_default.host4dhcp.snap.txt | 27 +++--- .../Kickstart_default.host4static.snap.txt | 27 +++--- .../Kickstart_default.host6dhcp.snap.txt | 27 +++--- .../Kickstart_default.host6static.snap.txt | 27 +++--- .../Kickstart_default.rhel9_dhcp.snap.txt | 27 +++--- .../Kickstart_default.rocky8_dhcp.snap.txt | 27 +++--- .../Kickstart_default.rocky9_dhcp.snap.txt | 27 +++--- ...start_default_user_data.host4dhcp.snap.txt | 13 ++- 17 files changed, 249 insertions(+), 166 deletions(-) create mode 100644 test/static_fixtures/interpolated_text.txt create mode 100644 test/static_fixtures/script.txt diff --git a/app/services/foreman/renderer/scope/macros/base.rb b/app/services/foreman/renderer/scope/macros/base.rb index b222c54595c..aa7af943cab 100644 --- a/app/services/foreman/renderer/scope/macros/base.rb +++ b/app/services/foreman/renderer/scope/macros/base.rb @@ -117,15 +117,27 @@ 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] + + # content is a set of 60 chars long strings separated by a newline character + content_assigns = content.split("\n").map do |content_line| + "#{param_name}=\"${#{param_name}}#{content_line}\"\n" + end.join("\n") + + "#{param_name}=""\n#{content_assigns}\necho -e \"$#{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..686a3253c5c 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,93 @@ 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}" + 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 encode long content as base64" do + tmp_file = Tempfile.new('save_to_file') + tmp_file.close + + file_content = (1..2000).map(&:to_s).join + + 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 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