Skip to content

Commit

Permalink
Fixes #37741 - Fix save_to_file to be indentation independent
Browse files Browse the repository at this point in the history
  • Loading branch information
ShimShtein committed Aug 27, 2024
1 parent 44160c0 commit 18101e9
Show file tree
Hide file tree
Showing 17 changed files with 249 additions and 166 deletions.
20 changes: 16 additions & 4 deletions app/services/foreman/renderer/scope/macros/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 2 additions & 0 deletions test/static_fixtures/interpolated_text.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
foo: bar
baz: $INTERPOLATED
5 changes: 5 additions & 0 deletions test/static_fixtures/script.txt
Original file line number Diff line number Diff line change
@@ -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"
5 changes: 4 additions & 1 deletion test/unit/foreman/renderer/renderers_shared_tests.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
87 changes: 80 additions & 7 deletions test/unit/foreman/renderer/scope/macros/base_test.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
require 'test_helper'
require 'tempfile'

class BaseMacrosTest < ActiveSupport::TestCase
setup do
Expand Down Expand Up @@ -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

Check failure on line 281 in test/unit/foreman/renderer/scope/macros/base_test.rb

View workflow job for this annotation

GitHub Actions / test:units - Ruby 2.7 and Node 14 on PostgreSQL 13

Failure: test_0004_should encode content as base64 --- expected +++ actual @@ -1,3 +1 @@ -"foo: bar -baz: $INTERPOLATED -" +""

Check failure on line 281 in test/unit/foreman/renderer/scope/macros/base_test.rb

View workflow job for this annotation

GitHub Actions / test:units - Ruby 2.7 and Node 18 on PostgreSQL 13

Failure: test_0004_should encode content as base64 --- expected +++ actual @@ -1,3 +1 @@ -"foo: bar -baz: $INTERPOLATED -" +""

Check failure on line 281 in test/unit/foreman/renderer/scope/macros/base_test.rb

View workflow job for this annotation

GitHub Actions / test:units - Ruby 3.0 and Node 14 on PostgreSQL 13

Failure: test_0004_should encode content as base64 --- expected +++ actual @@ -1,3 +1 @@ -"foo: bar -baz: $INTERPOLATED -" +""

Check failure on line 281 in test/unit/foreman/renderer/scope/macros/base_test.rb

View workflow job for this annotation

GitHub Actions / test:units - Ruby 3.0 and Node 18 on PostgreSQL 13

Failure: test_0004_should encode content as base64 --- expected +++ actual @@ -1,3 +1 @@ -"foo: bar -baz: $INTERPOLATED -" +""
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

Check failure on line 298 in test/unit/foreman/renderer/scope/macros/base_test.rb

View workflow job for this annotation

GitHub Actions / test:units - Ruby 2.7 and Node 14 on PostgreSQL 13

Failure: test_0005_should encode long content as base64 --- expected +++ actual @@ -1,3 +1 @@ -# encoding: US-ASCII -# valid: true -"12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612

Check failure on line 298 in test/unit/foreman/renderer/scope/macros/base_test.rb

View workflow job for this annotation

GitHub Actions / test:units - Ruby 2.7 and Node 18 on PostgreSQL 13

Failure: test_0005_should encode long content as base64 --- expected +++ actual @@ -1,3 +1 @@ -# encoding: US-ASCII -# valid: true -"12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612

Check failure on line 298 in test/unit/foreman/renderer/scope/macros/base_test.rb

View workflow job for this annotation

GitHub Actions / test:units - Ruby 3.0 and Node 14 on PostgreSQL 13

Failure: test_0005_should encode long content as base64 --- expected +++ actual @@ -1,3 +1 @@ -# encoding: US-ASCII -# valid: true -"12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612

Check failure on line 298 in test/unit/foreman/renderer/scope/macros/base_test.rb

View workflow job for this annotation

GitHub Actions / test:units - Ruby 3.0 and Node 18 on PostgreSQL 13

Failure: test_0005_should encode long content as base64 --- expected +++ actual @@ -1,3 +1 @@ -# encoding: US-ASCII -# valid: true -"12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612
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
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Loading

0 comments on commit 18101e9

Please sign in to comment.