<div dir="ltr"><div>Alan, </div><div><br></div>> <span style="color:rgb(31,73,125)">MaaS behaves as an IPAM service – for the most part all it does is enforce the static assignments we declare within Drydock BaremetalNode documents as in here:</span><p class="MsoNormal"><span style="color:rgb(31,73,125)"><a href="https://github.com/airshipit/treasuremap/blob/master/site/seaworthy/baremetal/nodes.yaml#L48-L86" target="_blank">https://github.com/airshipit/treasuremap/blob/master/site/seaworthy/baremetal/nodes.yaml#L48-L86</a><br>I've missed this part :(</span></p><p class="MsoNormal"><span style="color:rgb(31,73,125)"><br></span></p><p class="MsoNormal"><span style="color:rgb(31,73,125)">> I missed the latest bootstrap-sig call, however when we were initially discussing this one very simple way to get </span><i style="color:rgb(31,73,125)">started</i><span style="color:rgb(31,73,125)"> with this is to represent the network configuration </span><i style="color:rgb(31,73,125)">as </i><span style="color:rgb(31,73,125)">cloud-init data in the BareMetalHost (BMH) CRD. There is support for that now without introducing any additional CRDs or fields.</span><span style="color:rgb(31,73,125)"><br></span></p><p class="MsoNormal">Unfortunately BareMetalHost does not have all information. Here is what is supported <a href="https://github.com/metal3-io/baremetal-operator/blob/master/pkg/apis/metal3/v1alpha1/baremetalhost_types.go#L249">https://github.com/metal3-io/baremetal-operator/blob/master/pkg/apis/metal3/v1alpha1/baremetalhost_types.go#L249</a>. NIC structure is assigned as a property of HardwareDetails structure which is associated to Status property of BareMetalHost. AFAIK Status property is not supposed to be a source of data for CR defined in operator, it's filled in after reconcile event checks resource status. So technically we can not use this property for data. Moreover there is not Default gw and dns server setting. </p><p class="MsoNormal"><br></p><p class="MsoNormal">As an alternative temporary solution (until we decide what to do with IPAM) we can put DNS server in a cluster config (i.e. airshipctl config) or supply it as CLI flag for isogen and calculate default gateway as a first address of a network</p><p class="MsoNormal"><br></p><p class="MsoNormal"><span style="color:rgb(31,73,125)"><br></span></p></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Sep 20, 2019 at 8:14 PM MEADOWS, ALAN <<a href="mailto:am240k@att.com">am240k@att.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div lang="EN-US">
<div class="gmail-m_1970129368794602924WordSection1">
<p class="MsoNormal"><span style="color:rgb(31,73,125)">I think we may intertwining two separate needs.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:rgb(31,73,125)">The first and most urgent need is to understand how we will declare the static IP assignments for each baremetal host up front, much like we do within Airship 1.0. I disagree that MaaS behaves as an IPAM service
– for the most part all it does is enforce the static assignments we declare within Drydock BaremetalNode documents as in here:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:rgb(31,73,125)"><a href="https://github.com/airshipit/treasuremap/blob/master/site/seaworthy/baremetal/nodes.yaml#L48-L86" target="_blank">https://github.com/airshipit/treasuremap/blob/master/site/seaworthy/baremetal/nodes.yaml#L48-L86</a><u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:rgb(31,73,125)">I missed the latest bootstrap-sig call, however when we were initially discussing this one very simple way to get
<i>started</i> with this is to represent the network configuration <i>as </i>cloud-init data in the BareMetalHost (BMH) CRD. There is support for that now without introducing any additional CRDs or fields.
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:rgb(31,73,125)">The second need you are addressing, where files/CRs like “common-addresses” become more important and have definitions for all the various subnets--abstracted from specific machines, is supporting a more liberal
IP assignment mechanism in Airship 2.0, where users need only define subnets, and we can support allocating addresses automatically. This is where IPAM truly becomes a requirement but I think it is premature to look at this and feel this may be a subsequent
step to delivering static functionality.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:rgb(31,73,125)">Alan Meadows<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:rgb(31,73,125)"><u></u> <u></u></span></p>
<div>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0in 0in">
<p class="MsoNormal"><b>From:</b> PACHECO, RODOLFO J <br>
<b>Sent:</b> Friday, September 20, 2019 9:07 AM<br>
<b>To:</b> Dmitry Ukov <<a href="mailto:dukov@mirantis.com" target="_blank">dukov@mirantis.com</a>><br>
<b>Cc:</b> <a href="mailto:airship-discuss@lists.airshipit.org" target="_blank">airship-discuss@lists.airshipit.org</a><br>
<b>Subject:</b> Re: [Airship-discuss] IPAM for Airship<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal">Agree, we expect the document that defines this information to be generic.
<u></u><u></u></p>
<p class="MsoNormal">Meaning it will be used by both ephemeral and target clusters.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:Didot;color:rgb(148,17,0)">Regards</span><span style="font-size:10.5pt;color:black"><u></u><u></u></span></p>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;color:black"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><b><span style="font-size:13.5pt;font-family:"Bradley Hand";color:rgb(4,51,255)">Rodolfo Pacheco</span></b><span style="font-size:10.5pt;color:black"><u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;color:black"><u></u> <u></u></span></p>
</div>
</div>
<p class="MsoNormal"><b><span style="font-size:10.5pt;color:black">Home/Office</span></b><span style="font-size:10.5pt;color:black"> 732 5337671</span><u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(181,196,223);padding:3pt 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12pt;color:black">From: </span></b><span style="font-size:12pt;color:black">Dmitry Ukov <<a href="mailto:dukov@mirantis.com" target="_blank">dukov@mirantis.com</a>><br>
<b>Date: </b>Friday, September 20, 2019 at 11:49 AM<br>
<b>To: </b>"PACHECO, RODOLFO J" <<a href="mailto:rp2723@att.com" target="_blank">rp2723@att.com</a>><br>
<b>Cc: </b>"<a href="mailto:airship-discuss@lists.airshipit.org" target="_blank">airship-discuss@lists.airshipit.org</a>" <<a href="mailto:airship-discuss@lists.airshipit.org" target="_blank">airship-discuss@lists.airshipit.org</a>><br>
<b>Subject: </b>Re: [Airship-discuss] IPAM for Airship<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Rodolfo, <u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks for the links. This is what is needed for ephemeral node!<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">What is about target cluster nodes? We need to manage their network configuration some how (assign IPs, set up bonding etc). MAAS is used as IPAM service in Airship 1.0 but it will be replaced in favor of Metal3. So we may want to have
the same mechanism of ip allocation for ephemeral cluster and for target cluster.<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Fri, Sep 20, 2019 at 7:47 PM PACHECO, RODOLFO J <<a href="mailto:rp2723@att.com" target="_blank">rp2723@att.com</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin:5pt 0in 5pt 4.8pt">
<div>
<div>
<p class="MsoNormal">Forgot to add, Jerome’s POC has an example that looks closer to a CR expectations
<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_keleustes_treasuremap_blob_kustomize_site_seaworthy_networks_common-2Daddresses.yaml&d=DwMFaQ&c=LFYZ-o9_HUMeMTSQicvjIg&r=Bjzj_RciGLj21LnNXoD5dw&m=eSPJlb86ECKHCgBeXNfbCrcBGq7doKl90sZz1JU-HJM&s=5hGWlv6RN10N-cPbl_8lnzrGFZRmONETR55X1GdKN7g&e=" target="_blank">
https://github.com/keleustes/treasuremap/blob/kustomize/site/seaworthy/networks/common-addresses.yaml</a><u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:Didot;color:rgb(148,17,0)">Regards</span><u></u><u></u></p>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;color:black"> </span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><b><span style="font-size:13.5pt;font-family:"Bradley Hand";color:rgb(4,51,255)">Rodolfo Pacheco</span></b><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;color:black"> </span><u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"><b><span style="font-size:10.5pt;color:black">Home/Office</span></b><span style="font-size:10.5pt;color:black"> 732 5337671</span><u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(181,196,223);padding:3pt 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12pt;color:black">From:
</span></b><span style="font-size:12pt;color:black">"PACHECO, RODOLFO J" <<a href="mailto:rp2723@att.com" target="_blank">rp2723@att.com</a>><br>
<b>Date: </b>Friday, September 20, 2019 at 11:40 AM<br>
<b>To: </b>Dmitry Ukov <<a href="mailto:dukov@mirantis.com" target="_blank">dukov@mirantis.com</a>>, "<a href="mailto:airship-discuss@lists.airshipit.org" target="_blank">airship-discuss@lists.airshipit.org</a>" <<a href="mailto:airship-discuss@lists.airshipit.org" target="_blank">airship-discuss@lists.airshipit.org</a>><br>
<b>Subject: </b>Re: [Airship-discuss] IPAM for Airship</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<p class="MsoNormal">Dmitry<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">In Airship 1.0 we had such a document . I expect for 2.0 we need an equivalent CR for this type of information<u></u><u></u></p>
<p class="MsoNormal">Is what we have been calling Catalog or DB like Document’s<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">Here is an example from treasuremap<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__opendev.org_airship_treasuremap_src_branch_master_site_seaworthy_networks_common-2Daddresses.yaml&d=DwMFaQ&c=LFYZ-o9_HUMeMTSQicvjIg&r=Bjzj_RciGLj21LnNXoD5dw&m=eSPJlb86ECKHCgBeXNfbCrcBGq7doKl90sZz1JU-HJM&s=wvOJ_Dykh2xTn3clmits97RK3Pk5sSKbS6JAdw8eE1s&e=" target="_blank">https://opendev.org/airship/treasuremap/src/branch/master/site/seaworthy/networks/common-addresses.yaml</a><u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">I think that is what you are thinking about.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:Didot;color:rgb(148,17,0)">Regards</span><u></u><u></u></p>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;color:black"> </span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><b><span style="font-size:13.5pt;font-family:"Bradley Hand";color:rgb(4,51,255)">Rodolfo Pacheco</span></b><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;color:black"> </span><u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"><b><span style="font-size:10.5pt;color:black">Home/Office</span></b><span style="font-size:10.5pt;color:black"> 732 5337671</span><u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(181,196,223);padding:3pt 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12pt;color:black">From:
</span></b><span style="font-size:12pt;color:black">Dmitry Ukov <<a href="mailto:dukov@mirantis.com" target="_blank">dukov@mirantis.com</a>><br>
<b>Date: </b>Friday, September 20, 2019 at 11:37 AM<br>
<b>To: </b>"<a href="mailto:airship-discuss@lists.airshipit.org" target="_blank">airship-discuss@lists.airshipit.org</a>" <<a href="mailto:airship-discuss@lists.airshipit.org" target="_blank">airship-discuss@lists.airshipit.org</a>><br>
<b>Subject: </b>[Airship-discuss] IPAM for Airship</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Hello,
<u></u><u></u></p>
<div>
<p class="MsoNormal">I'm working on cloud-init generator as a part of airshipctl bootstrap isogen command.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">This cloud init will be used to deploy K8s on ephemeral node.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Following information is needed to set up ephemeral node:<u></u><u></u></p>
</div>
<div>
<ul type="disc">
<li class="MsoNormal">
IP address<u></u><u></u></li><li class="MsoNormal">
Net mask <u></u><u></u></li><li class="MsoNormal">
Default Gateway<u></u><u></u></li><li class="MsoNormal">
DNS server address<u></u><u></u></li></ul>
<div>
<p class="MsoNormal">There is no CRD/CR that actually has this information. For example BareMetalHost resource has IP and Netmask as a part of Status field (and determined dynamically by beremetal operator)
and there is no info about Default GW and DNS.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">This actually leads us to the situation where we need to have IPAM (ip address management) operator and appropriate CRs/CRDs.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Unfortunately there is not much IPAM services that can act as K8s operator (I've found only one actually <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_inwinstack_ipam&d=DwMFaQ&c=LFYZ-o9_HUMeMTSQicvjIg&r=Bjzj_RciGLj21LnNXoD5dw&m=c8c5DfwYKVyHfFy7VcpEn5JOI4G1u4qxCaCy9cDsgAI&s=d7costGUiy-0u1vBkTFbV8Gf4-BIyHE3PGYKZ49NK7k&e=" target="_blank">https://github.com/inwinstack/ipam</a> and
it has limitations I guess). <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">As an alternative we have to implement IPAM as a part of Airship 2.0.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">What do you think?<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<p class="MsoNormal">--
<u></u><u></u></p>
<div>
<div>
<div>
<p class="MsoNormal">Kind regards
<u></u><u></u></p>
<div>
<p class="MsoNormal">Dmitry Ukov<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Principal Deployment Engineer<u></u><u></u></p>
</div>
<div>
<div>
<p class="MsoNormal">Mirantis, Inc.<u></u><u></u></p>
</div>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><br clear="all">
<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<p class="MsoNormal">-- <u></u><u></u></p>
<div>
<div>
<div>
<p class="MsoNormal">Kind regards <u></u><u></u></p>
<div>
<p class="MsoNormal">Dmitry Ukov<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Principal Deployment Engineer<u></u><u></u></p>
</div>
<div>
<div>
<p class="MsoNormal">Mirantis, Inc.<u></u><u></u></p>
</div>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>Kind regards<div>Dmitry Ukov</div><div>Principal Deployment Engineer</div><div><div>Mirantis, Inc.</div></div><div><br></div></div></div></div>