<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">That makes sense to me.<br class=""><div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class="Apple-interchange-newline">Best Regards,<br class="Apple-interchange-newline"><br class="Apple-interchange-newline">Zach Lanich</div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><b class=""><i class="">Owner/CTO</i></b></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">weCreate LLC</div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="http://www.wecreate.com" class="">www.WeCreate.com</a></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">814.580.6636</div></div>
</div>
<br class=""><div><blockquote type="cite" class=""><div class="">On Aug 23, 2016, at 2:41 PM, Umberto Nicoletti <<a href="mailto:umberto.nicoletti@gmail.com" class="">umberto.nicoletti@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">P. Lowe asked:<div class=""><br class=""></div><div class=""><i class="">Would people recommend creating a new container from a base image, modifying rc.local to pull the cookbook from git and launch it upon initial bootup, after which rc.local is reset to be empty and the server is restarted?</i></div><div class=""><br class=""></div><div class="">this is exactly a cloud-init use case: cloud-init with a bootstrap script in user-data (like EC2 does).</div><div class=""><br class=""></div><div class="">You could of course swap cloud-init out for a custom salt-bootstrap, clone, state.highstate flow and still get the job done.</div><div class=""><br class=""></div><div class="">But as far as I am concerned I find the additional abstraction layer and flexibility provided by cloud-init to be convenient enough.</div><div class=""><br class=""></div><div class="">So my suggestion for P. Lowe is:</div><div class=""><br class=""></div><div class="">use cloud-init to drive the bootstrap process: early init, cloning cookbook, installing chef and whatnot</div><div class=""><br class=""></div><div class="">then let chef take over and complete the configuration phase.</div><div class=""><div class="gmail_extra"><br class=""><div class="gmail_quote">On Tue, Aug 23, 2016 at 7:44 PM, Zach Lanich <span dir="ltr" class=""><<a href="mailto:zach@wecreate.com" target="_blank" class="">zach@wecreate.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word" class="">Umberto, I’m not 100% sure of what SaltStack uses under the hood lib wise, but it’s written in Python an already does everything that Lib does. We’re talking more of how the creation of the LXD </div></blockquote><div class=""><br class=""></div><div class="">I think the provisioning phase or how you manage containers (creation, move, destroy, etc) is beyond (actually it is before :-)) P. Lowe's question scope but you could certainly do that with SaltStack or through the container mgmt API directly.</div><div class=""> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word" class="">containers themselves, including setting Mounts, Static IP, etc. SaltStack & Chef handle everything else from there once the provisioned container is connected to the master. CloudInit would certainly be an option as the 2nd part of the equation if we weren’t already using a configuration management tool. <div class=""><br class=""></div><div class="">Does that make sense, or am I’m misinterpreting your point?<br class=""></div></div></blockquote><div class=""><br class=""></div><div class="">Hope this clarify by previously hurried email :-)</div><div class=""> </div><div class="">BR,</div><div class="">Umberto</div><div class=""><br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word" class=""><div class=""><div class="">
<div style="letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; word-wrap: break-word;" class=""><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class=""><br class="">Best Regards,<br class=""><br class="">Zach Lanich</div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class=""><b class=""><i class="">Owner/CTO</i></b></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class="">weCreate LLC</div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class=""><a href="http://www.wecreate.com/" target="_blank" class="">www.WeCreate.com</a></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class=""><a href="tel:814.580.6636" value="+18145806636" target="_blank" class="">814.580.6636</a></div></div>
</div><div class=""><div class="h5">
<br class=""><div class=""><blockquote type="cite" class=""><div class="">On Aug 23, 2016, at 1:26 PM, Umberto Nicoletti <<a href="mailto:umberto.nicoletti@gmail.com" target="_blank" class="">umberto.nicoletti@gmail.com</a>> wrote:</div><br class=""><div class="">Why not use <a href="https://cloudinit.readthedocs.io/en/latest/" target="_blank" class="">https://cloudinit.<wbr class="">readthedocs.io/en/latest/</a> ?<br class=""><br class="">On Tuesday, August 23, 2016, Zach Lanich <<a href="mailto:zach@zachlanich.com" target="_blank" class="">zach@zachlanich.com</a>> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word" class="">I’m not sure of the best way to pass LXD/Container specific parameters is yet (so anyone, please chime in if you have advice), but I’m using SaltStack at the moment and doing something similar. I’m currently running w/e necessary commands to provision the container itself, setting the container’s IP via a custom dnsmasq conf file, then using lxc exec to download the latest salt bootstrap and run it, then I just trigger a key-accept on the master for the container so the container acts just like any other minion and I can run State/Scripts, etc on it from there on.<div class=""><br class=""></div><div class="">Hopefully that helps in some way lol. Still awaiting best practice advice for passing container params for provision!<br class=""><div class=""><div class="">
<div style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word" class=""><div style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word" class=""><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class=""><br class="">Best Regards,</div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class=""><br class=""></div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class="">Zach Lanich</div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class=""><i class="">Business Owner, Entrepreneur, Creative</i></div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class=""><b class=""><i class="">Owner/CTO</i></b></div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class="">weCreate LLC</div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class=""><div class=""><i class=""><a href="http://www.wecreate.com/" target="_blank" class="">www.WeCreate.com</a></i></div></div></div></div>
</div>
<br class=""><div class=""><blockquote type="cite" class=""><div class="">On Aug 23, 2016, at 1:05 PM, P. Lowe <<a class="">plowe@zitovault.com</a>> wrote:</div><br class=""><div class=""><div class="">Hi Zach,<br class=""><br class="">No, I still haven't received an answer on this.<br class=""><br class="">I'm still trying to determine if there is a best practice for passing provisioning parameters to an lxd container (hostname, block device mounts, secrets, monitoring server name for pub/sub, etc.)<br class=""><br class="">I'm currently using a technique where I launch a new image, start it, and then do a:<br class=""><br class="">"lxd file push ./provision.sh /container1/etc/rc.local"<br class=""><br class="">Then I restart the container and it runs the provisioning in /etc/rc.local (pull and execute chef cookbook from git), and then reset rc.local to empty, so that future restarts won't re-run the provisioning.<br class=""><br class="">Still trying to determine best way to pass provisioning parameters to the container...<br class=""><br class="">-P. Lowe<br class=""><br class=""><br class="">Quoting Zach Lanich <<a class="">zach@zachlanich.com</a>>:<br class=""><br class=""><blockquote type="cite" class="">P.Lowe, did you ever get an answer on this. I’m doing something very similar with SaltStack.<br class=""><br class="">Best Regards,<br class=""><br class="">Zach Lanich<br class="">Business Owner, Entrepreneur, Creative<br class="">Owner/CTO<br class="">weCreate LLC<br class=""><a href="http://www.wecreate.com/" target="_blank" class="">www.WeCreate.com</a><br class=""><br class=""><blockquote type="cite" class="">On Aug 17, 2016, at 4:48 PM, P. Lowe <<a class="">plowe@zitovault.com</a>> wrote:<br class=""><br class=""><br class="">Hi,<br class=""><br class="">I am investigating the use of lxd to dynamically spin up server instances.<br class=""><br class="">I'm thinking about using a code-as-infrastructure approach using a chef-solo cookbook that is pulled out of git upon the container's initial boot and does all the provisioning upon initial boot.<br class=""><br class="">Would people recommend creating a new container from a base image, modifying rc.local to pull the cookbook from git and launch it upon initial bootup, after which rc.local is reset to be empty and the server is restarted?<br class=""><br class="">After rc.local is modified, the new container would be published to the local image store, so that whenever a new container is launched, it will boot up, run rc.local, pull the cookbook from git, run the cookbook and apply all the local provisioning operations, empty out rc.local, and then reboot the machine, after which it will boot with the customized provisioning parameters for normal operation.<br class=""><br class="">What is the recommended way to send provisioning parameters (e.g. ip address, gateway, hostname, block device mounts, secrets (certs / keys)) to the container? Would people just drop a config file into the container using the lxc push command, or any other better techniques?<br class=""><br class="">Thanks,<br class=""><br class="">P.Lowe<br class=""><br class=""><br class="">______________________________<wbr class="">_________________<br class="">lxc-users mailing list<br class=""><a class="">lxc-users@lists.linuxcontainer<wbr class="">s.org</a><br class=""><a href="http://lists.linuxcontainers.org/listinfo/lxc-users" target="_blank" class="">http://lists.linuxcontainers.o<wbr class="">rg/listinfo/lxc-users</a><br class=""></blockquote></blockquote><br class=""><br class=""><br class=""><br class=""></div></div></blockquote></div><br class=""></div></div></div></blockquote>
______________________________<wbr class="">_________________<br class="">lxc-users mailing list<br class=""><a href="mailto:lxc-users@lists.linuxcontainers.org" target="_blank" class="">lxc-users@lists.<wbr class="">linuxcontainers.org</a><br class=""><a href="http://lists.linuxcontainers.org/listinfo/lxc-users" target="_blank" class="">http://lists.linuxcontainers.<wbr class="">org/listinfo/lxc-users</a></div></blockquote></div><br class=""></div></div></div></div></blockquote></div><br class=""></div></div></div>
</div></blockquote></div><br class=""></body></html>