How to base64 encode and upload userdata for EC2 Launch Template

Rafal Lukawiecki raf at rafal.net
Wed Mar 13 16:43:46 UTC 2019


Colin, Philip,

Thank you both for your suggestions. My set of scripts is a nice 5kB when compressed, but tar without any compression is 20kB, which means it does not get accepted as UserData by aws. Since I already use EFS for distribution of some config data (mainly rc.init scripts), I will simplify the configinit stage, repurpose the logic of it that processes files in a loop seeing if they are >, >> or #!, but run it against the mounted EFS, rather than from data that was passed in UserData.

Philip: my current set-up already caters for different versions of configs, as in, older but in production, current testing, and future. I like your idea of colours. :)

In end end, I will combine the best of both of your advice, for which I would like to thank you. I wish, however, that AWS LT and LC worked with encoded data correctly, and preferably, in the same way. Colin: have you managed to pass any userdata to your cloudconfig in a compressed tar format in a Launch Template? I have never succeeded with that, yet.

Regards from Ireland,
Rafal

> On 11 Mar 2019, at 19:37, Colin Percival <cperciva at freebsd.org> wrote:
> 
> Try it without the 'y' flag.  It's possible that this will produce something
> too big to pass as a user-data file; but if it's small enough this would be
> a useful indication of where the problem lies.
> 
> Colin Percival
> 
> On 3/11/19 12:24 PM, Rafal Lukawiecki wrote:
>> I have been using “tar cvyf fff ddd”, which I think is a compressed tarball using bzip. Should I use something else?
>> 
>> I have also noticed odd behaviour in the Console for LCs, but different behaviour in the Console for LCs, and yet different for CLI…
>> 
>> Thank you, Colin.
>> Rafal
>> 
>>> On 11 Mar 2019, at 19:21, Colin Percival <cperciva at freebsd.org> wrote:
>>> 
>>> On 3/11/19 2:42 AM, Rafal Lukawiecki wrote:
>>>> I hope someone can explain, as I have been lost in this for over a week. I would like to pass a small (4-5kB) tarball of files for the built-in cloud init script of the official FreeBSD 12.0 EC2 AMI to get untarred and processed (>, >>, or #!) upon instance launch. I have successfully done it for over 2 years using Launch Configurations but I cannot make it work using the new Launch Templates.
>>> 
>>> Is this a tarball, or a compressed tarball?
>>> 
>>> There's a longstanding bug (which I'm told is going to get fixed eventually!)
>>> in the AWS Console whereby any non-7-bit-clean user-data files get mangled
>>> and come out with each byte UTF-8 encoded.  I was only aware of this as an
>>> issue with the Console but it's entirely possible that someone at Amazon wrote
>>> the same bug in multiple places.
>>> 
>>> -- 
>>> Colin Percival
>>> Security Officer Emeritus, FreeBSD | The power to serve
>>> Founder, Tarsnap | www.tarsnap.com | Online backups for the truly paranoid
>> 
>> 
>> 
> 
> -- 
> Colin Percival
> Security Officer Emeritus, FreeBSD | The power to serve
> Founder, Tarsnap | www.tarsnap.com | Online backups for the truly paranoid



More information about the freebsd-cloud mailing list