class Formatron::CloudFormation::Template::VPC::Subnet::Instance::Setup
Adds setup scripts to an instance rubocop:disable Metrics/ClassLength
Public Class Methods
new( setup:, sub_domain:, hosted_zone_name:, os:, wait_condition_handle: )
click to toggle source
rubocop:disable Metrics/MethodLength
# File lib/formatron/cloud_formation/template/vpc/subnet/instance/setup.rb, line 13 def initialize( setup:, sub_domain:, hosted_zone_name:, os:, wait_condition_handle: ) @setup = setup @wait_condition_handle = wait_condition_handle @sub_domain = sub_domain @hosted_zone_name = hosted_zone_name @scripts = @setup.script unless @setup.nil? @variables = @setup.variable unless @setup.nil? @os = os end
Public Instance Methods
merge(instance:)
click to toggle source
rubocop:disable Metrics/MethodLength rubocop:disable Metrics/AbcSize
# File lib/formatron/cloud_formation/template/vpc/subnet/instance/setup.rb, line 32 def merge(instance:) env = {} @variables.each do |key, value| env[key] = value.value end unless @variables.nil? if @os.eql? 'windows' script_key = 'script-0' script = "C:\\formatron\\#{script_key}.bat" files = {} commands = {} @scripts.each_index do |index| script_key = "script-#{index}" script = "C:\\formatron\\#{script_key}.bat" files[script] = { content: @scripts[index] } commands[script_key] = { command: script, env: env } end unless @scripts.nil? setup_script_index = @scripts.nil? ? 0 : @scripts.length signal_script_index = setup_script_index + 1 script_key = "script-#{setup_script_index}" script = "C:\\formatron\\#{script_key}.bat" files[script] = { content: Scripts.windows_common( sub_domain: @sub_domain, hosted_zone_name: @hosted_zone_name ) } commands[script_key] = { command: script, env: env, waitAfterCompletion: 'forever' } script_key = "script-#{signal_script_index}" script = "C:\\formatron\\#{script_key}.bat" files[script] = { content: Scripts.windows_signal( wait_condition_handle: @wait_condition_handle ) } commands[script_key] = { command: script, env: env } else script_key = 'script-0' script = "/tmp/formatron/#{script_key}.sh" files = { "#{script}" => { content: Scripts.linux_common( sub_domain: @sub_domain, hosted_zone_name: @hosted_zone_name ), mode: '000755', owner: 'root', group: 'root' } } commands = { "#{script_key}" => { command: script, env: env } } @scripts.each_index do |index| script_key = "script-#{index + 1}" script = "/tmp/formatron/#{script_key}.sh" files[script] = { content: @scripts[index], mode: '000755', owner: 'root', group: 'root' } commands[script_key] = { command: script, env: env } end unless @scripts.nil? end instance[:Metadata] = { Comment1: 'Create setup scripts', 'AWS::CloudFormation::Init' => { config: { files: files, commands: commands } } } end