CloudDeploy
view release on metacpan or search on metacpan
lib/CCfnX/VagrantDeployer.pm view on Meta::CPAN
after deploy => sub {
my $self = shift;
my @lines = @{ $self->origin->Resource('Instance')->Properties->UserData->process_with_context($self->origin) };
@lines = @{ $self->origin->Resource('Instance')->Properties->UserData->process_with_context($self->origin, \@lines) };
my $content = join '', @lines;
$content =~ s/\\/\\\\/;
warn "I'm extending a 900 second (15 min) token with you're actual credentials to vagrant";
my $creds = Paws::Credential::ProviderChain->new();
my $aws_access_key = $creds->access_key;
my $aws_secret_key = $creds->secret_key;
my $aws_token = $creds->session_token;
my $vag_file = '
VAGRANTFILE_API_VERSION = "2"
$script = <<SCRIPT
#!/bin/bash
# Create temporary credentials
export AWS_ACCESS_KEY_ID=' . $aws_access_key . '
export AWS_SECRET_ACCESS_KEY=' . $aws_secret_key . '
export AWS_SESSION_TOKEN=' . $aws_token . '
cat > /etc/skel/.aws_creds <<ALIASES
export AWS_ACCESS_KEY_ID=' . $aws_access_key . '
export AWS_SECRET_ACCESS_KEY=' . $aws_secret_key . '
export AWS_SESSION_TOKEN=' . $aws_token . '
ALIASES
' . $content . '
# Clean temporary credentials
rm -f /etc/skel/.aws_creds
find /home -type f -name ".aws_creds" -delete
SCRIPT
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "' . $self->params->{ami} . '"
config.vm.synced_folder ".", "/vagrant", disabled: true
config.vm.network "private_network", type: "dhcp"
config.vm.provider :virtualbox do |vb|
vb.gui = true
( run in 0.230 second using v1.01-cache-2.11-cpan-4d50c553e7e )