<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 13/04/2016 09:49, Nicolas Charles
      wrote:<br>
    </div>
    <blockquote cite="mid:570DFA08.3070503@normation.com" type="cite">
      <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
      <div class="moz-cite-prefix">Hello Francois, <br>
        <br>
        Thank you for the nice sum-up. My answers in the text<br>
        <br>
        Le 07/04/2016 15:33, Francois Armand a écrit :<br>
      </div>
      <blockquote cite="mid:570661A5.2040701@normation.com" type="cite">
        <meta content="text/html; charset=utf-8"
          http-equiv="Content-Type">
        <div class="moz-cite-prefix">On 07/04/2016 15:08, Vincent Membré
          wrote:<br>
        </div>
        <blockquote cite="mid:57065BE9.5010303@normation.com"
          type="cite">
          <meta content="text/html; charset=utf-8"
            http-equiv="Content-Type">
          <div class="moz-cite-prefix">Le 31/03/2016 12:37, Francois
            Armand a écrit :<br>
          </div>
          <blockquote cite="mid:56FCFDE3.2050007@normation.com"
            type="cite">
            <meta http-equiv="content-type" content="text/html;
              charset=utf-8">
            Hello, <br>
            <br>
            So, here goes for a summary of <a moz-do-not-send="true"
              class="moz-txt-link-freetext"
              href="http://www.rudder-project.org/redmine/issues/8022">http://www.rudder-project.org/redmine/issues/8022</a>,
            "Node's FQDN-Resolution is sometimes invalid" and related
            tickets. <br>
            The problem cover up several sub-cases, which need to be
            addressed systematically to achieve some result.<br>
            They are: <br>
            <ul>
              <li>1/ the node FQDN is used for identifying a node, and
                then manage authentication and authorization to access
                its promises. If Rudder server, CFEngine promise server,
                and the node don't agree on it, the node can't get its
                promises. This is a hard problem because:</li>
              <ul>
                <li>FQDN is fragile. It needs a perfectly up to date and
                  shared DNS environment. But "it's always a DNS
                  problem", what gives an idea. <br>
                </li>
                <li>FQDN tools are notoriously broken, and don't always
                  agree about what is the FQDN of a host</li>
                <li>even in a perfectly working and up-to-date DNS env,
                  there may have voluntary decision not to have the same
                  FQDN from the host and the server, as explained in
                  #8022 ticket. <br>
                </li>
              </ul>
              <li>2/ if the node FQDN is not correct in the first sent
                inventory, the node configuration is delayed by one day,
                because from the node point of view, the inventory was
                correctly sent and so the standard frequency for sending
                inventories is applied. <br>
              </li>
            </ul>
            <br>
            The long-term solution for 1/ is to use something else that
            FQDN to identify the node - we have for example an UUID for
            that. The problem here is that it is a hard limitation of
            the protocol used by cf-serverd. So to use another
            identification scheme (and why not our own
            authentication/authorization), we need to either patch
            cf-serverd or use a different client-server protocol for
            promises transfer. Both solutions are open, but are out of
            scope.<br>
            <br>
            Meanwhile, we can address at best 1/ and 2/ <br>
            <br>
            <b>For 1/, </b>we need to prevent as much as we can to give
            bad FQDN and in all case, give the user a possibility to
            hook what he knows should be the correct value. <br>
            <b>- Prevent more bad FQDN:</b><b><br>
            </b>=> update perl version: <a moz-do-not-send="true"
              class="moz-txt-link-freetext"
              href="http://www.rudder-project.org/redmine/issues/8123">http://www.rudder-project.org/redmine/issues/8123</a><br>
            I didn't find anything else on that subject, compared to
            what we are doing now. <br>
            <br>
            <b>- Let the user hook the correct value: </b><b><br>
            </b>=> <a moz-do-not-send="true"
              class="moz-txt-link-freetext"
              href="http://www.rudder-project.org/redmine/issues/8022#note-20">http://www.rudder-project.org/redmine/issues/8022#note-20</a><br>
            Here, we still need to specify the path convention for
            command and file to look for the correct FDQN. <br>
          </blockquote>
          I have some remarks/questions here:<br>
          <br>
          * If I understand correctly the process will be: Inventory is
          ran on the Node, then inventory is modified to add data from
          commands / file ? or will this be used when runnig
          fusionInventory ? <br>
        </blockquote>
        <br>
        The idea is to patch fusion inventory plugin for Rudder to use
        that logic. <br>
      </blockquote>
      There are already a way to extend inventories: <br>
      <a moz-do-not-send="true" class="moz-txt-link-freetext"
href="http://fusioninventory.org/documentation/agent/additional_content.html">http://fusioninventory.org/documentation/agent/additional_content.html</a><br>
      I think it will be much easier and future proof to use the
      FusionInventory way rather than reimplementing it ourselves<br>
      <br>
      We could use this principle to create our own task that would read
      data or run external script - but maybe that's what you were
      implying ?<br>
    </blockquote>
    <br>
    No, I meant that we should evolve the logic to fill
    <RUDDER><HOSTNAME>, contribute the evolution to rudder
    plugin, and patch our own until then. <br>
    I'm not about using the what you linked to for that, it's really not
    an extension, but the actual "business" logic we want to implement
    for Rudder <HOSTNAME>. <br>
    <br>
    On the other hand, what you propose seems really nice for 4670, I
    updated the ticket accordingly. <br>
    <br>
    <blockquote cite="mid:570DFA08.3070503@normation.com" type="cite"> <br>
      <blockquote cite="mid:570661A5.2040701@normation.com" type="cite">
        <br>
        <blockquote cite="mid:57065BE9.5010303@normation.com"
          type="cite"> <br>
          * In Which entry will they be stored ? RUDDER/HOSTAME? another
          one</blockquote>
        <br>
        Yes, RUDDER/HOSTNAME<br>
        <br>
        <blockquote cite="mid:57065BE9.5010303@normation.com"
          type="cite"> <br>
          * Do we want to define Hostname only ? Would it not be better
          if the solution was much more adaptable and can modify any
          entry from the inventory ? <br>
        </blockquote>
        <br>
        It's an other ticket, #4670, linked in #8022. HOSTNAME (FQDN,
        really) is different from the general use case (at least adding
        information into inventory) because of the special importance of
        FQDN in CFengine server/agent identification protocol. So it is
        kind of ok to see #8022 as a bug in the existing versions, and
        #4670 (or an extension of it) as a new feature going to next
        versions. <br>
      </blockquote>
      Yes, let start with HOSTNAME in released version<br>
      <blockquote cite="mid:570661A5.2040701@normation.com" type="cite">
        <br>
        <blockquote cite="mid:57065BE9.5010303@normation.com"
          type="cite"> <br>
          <br>
          About the path, I suggest we should put them under
          /var/rudder/inventories :<br>
          <br>
          <ul>
            <li>If we modify only hostname (RUDDER/HOSTNAME):</li>
            <ul>
              <li>/var/rudder/inventories/hostname-command: Command to
                execute the get the correct hostname</li>
              <li>/var/rudder/inventories/hostname-file: File containing
                the path the file containing the correct hostname</li>
            </ul>
          </ul>
        </blockquote>
        <br>
        No specific feeling on that... Any idea, other ? <br>
      </blockquote>
      I'm not sure it should be in /var - if these are scripts to run to
      get data, or data user should put, I feel they would live in other
      folder. Plus, if we want user to preseed the system with these
      scripts/data, before installing agent, /var/rudder will not exist<br>
    </blockquote>
    <br>
    OK, good points. Other ideas ?<br>
    <br>
    <blockquote cite="mid:570DFA08.3070503@normation.com" type="cite">
      <blockquote cite="mid:570661A5.2040701@normation.com" type="cite">
        <br>
        <blockquote cite="mid:57065BE9.5010303@normation.com"
          type="cite">
          <ul>
            <ul>
            </ul>
          </ul>
          <ul>
            <li>If we want something more general:</li>
            <ul>
              <li>/var/rudder/inventories/commands or
                /var/rudder/inventories/hooks.d : to put all
                commands/hooks</li>
              <li>/var/rudder/inventories/mapping: a file mapping a Key
                in inventory to an action to do, ie:</li>
              <ul>
                <li>RUDDER/HOSTNAME => get_fqdn.sh # Will run
                  get_fqdn.sh  (from hooks directory!) and put output
                  into the correct tag<br>
                </li>
                <li>OPERATINGSYSTEM/OSVERSION => /some/path/to/file #
                  Will read that file to fill the tag<br>
                </li>
              </ul>
            </ul>
          </ul>
          I hope I'm not going too far from the original idea ...<br>
        </blockquote>
        <br>
        Let's had that in #4670 :)<br>
        <br>
        Thanks, <br>
        <br>
        <blockquote cite="mid:57065BE9.5010303@normation.com"
          type="cite"> <br>
          <br>
          <blockquote cite="mid:56FCFDE3.2050007@normation.com"
            type="cite"> <br>
            <b>For 2/, </b>we need to prevent the sending of inventory
            that will be rejected by the server for sure. <b><br>
            </b>=> <a moz-do-not-send="true"
              class="moz-txt-link-freetext"
              href="http://www.rudder-project.org/redmine/issues/8127">http://www.rudder-project.org/redmine/issues/8127</a><br>
            <br>
            Hope it helps sum up the whole solution. <br>
            <br>
            Cheers,<br>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <br>
    <div class="moz-signature">-- <br>
      Francois</div>
  </body>
</html>