<font size=2 face="sans-serif">Hi Team,</font><br><br><font size=2 face="sans-serif">I tried to do the following:</font><br><font size=2 face="sans-serif">1) build an image for devstack node</font><br><font size=2 face="sans-serif">2) upload it to glance.</font><br><font size=2 face="sans-serif">3) use that image it in nodepool, by
running nodepool image-update</font><br><br><br><font size=2 face="sans-serif">To build the image I execute the following:</font><br><br><font size=2 color=#2f2f2f face="Liberation Mono">DISTRO="ubuntu"
bash tools/build-image.sh</font><br><font size=2 face="sans-serif">(As documented in [1])</font><br><br><font size=2 face="sans-serif">When the image is created I uploaded
it to glance and tried to run "nodepool image-update"</font><br><font size=2 face="sans-serif">My nodepool.yaml file is very simple:</font><br><br><tt><font size=2>script-dir: /etc/nodepool/scripts</font></tt><br><tt><font size=2>elements-dir: /etc/nodepool/elements</font></tt><br><tt><font size=2>images-dir: /opt/nodepool_dib</font></tt><br><br><tt><font size=2>cron:</font></tt><br><tt><font size=2>  cleanup: '*/1 * * * *'</font></tt><br><tt><font size=2>  check: '*/15 * * * *'</font></tt><br><tt><font size=2>  image-update: '14 14 * * *'</font></tt><br><br><tt><font size=2>zmq-publishers:</font></tt><br><tt><font size=2>  - tcp://ci-jenkins-master.openstacklocal:8888</font></tt><br><br><tt><font size=2>gearman-servers:</font></tt><br><tt><font size=2>  - host: ci-zuul.openstacklocal</font></tt><br><br><tt><font size=2>labels:</font></tt><br><tt><font size=2>  - name: ubuntu-trusty-devstack</font></tt><br><tt><font size=2>    image: ubuntu-trusty-devstack</font></tt><br><tt><font size=2>    min-ready: 1</font></tt><br><tt><font size=2>    providers:</font></tt><br><tt><font size=2>      - name: ibm-ci</font></tt><br><br><tt><font size=2>providers:</font></tt><br><tt><font size=2>  - name: ibm-ci</font></tt><br><tt><font size=2>    cloud: osic-cloud2</font></tt><br><tt><font size=2>    max-servers: 1</font></tt><br><tt><font size=2>    images:</font></tt><br><tt><font size=2>      - name: ubuntu-trusty-devstack</font></tt><br><tt><font size=2>        base-image: 'devstack-gate-new'
        <----- This is the image name in the cloud
(glance)</font></tt><br><tt><font size=2>        min-ram: 4096</font></tt><br><tt><font size=2>        setup: prepare_node_devstack.sh</font></tt><br><tt><font size=2>        username: jenkins</font></tt><br><tt><font size=2>        private-key: /home/nodepool/.ssh/id_rsa</font></tt><br><tt><font size=2>        config-drive: true</font></tt><br><br><tt><font size=2>targets:</font></tt><br><tt><font size=2>  - name: ci-jenkins-master.openstacklocal</font></tt><br><br><tt><font size=2>diskimages:</font></tt><br><tt><font size=2>  - name: ubuntu-trusty-devstac</font></tt><font size=2 face="DejaVu Sans Mono">k</font><br><br><br><br><font size=2 face="sans-serif">The problem is that nodepool's image-update
command exits with timeout while trying to ssh connect:</font><br><br><font size=2 face="sans-serif">2016-04-03 16:33:37,167 INFO nodepool.utils:
Auth exception for root@9.xxx.xxx.xxx. Try number 4...</font><br><br><br><font size=2 face="sans-serif">I looked in nodepool.py [2]</font><br><font size=2 face="sans-serif">And found the following code:</font><br><br><tt><font size=2>    def bootstrapServer(self, server, key,
use_password=False):<br>        log = logging.getLogger("nodepool.image.build.%s.%s"
%<br>                     
          (self.provider.name, self.image.name))</font></tt><font size=3><br></font><tt><font size=2><br>        ssh_kwargs = dict(log=log)<br>        if not use_password:<br>            ssh_kwargs['pkey'] = key<br>        else:<br>            ssh_kwargs['password'] = server['admin_pass']</font></tt><font size=3><br></font><tt><font size=2><br>        host = utils.ssh_connect(server['public_ip'],
'root', ssh_kwargs,       <br>                     
           timeout=CONNECT_TIMEOUT)</font></tt><font size=3><br></font><tt><font size=2>    def bootstrapServer(self, server,
key, use_password=False):<br>        log = logging.getLogger("nodepool.image.build.%s.%s"
%<br>                     
          (self.provider.name, self.image.name))</font></tt><font size=3><br></font><tt><font size=2><br>        ssh_kwargs = dict(log=log)<br>        if not use_password:<br>            ssh_kwargs['pkey'] = key<br>        else:<br>            ssh_kwargs['password'] = server['admin_pass']</font></tt><font size=3><br></font><tt><font size=2><br>        host = utils.ssh_connect(server['public_ip'],
'root', ssh_kwargs,<br>                     
           timeout=CONNECT_TIMEOUT)</font></tt><font size=3><br></font><tt><font size=2><br>        if not host:<br>            # We have connected to the node
but couldn't do anything as root<br>            # try distro specific users,
since we know ssh is up (a timeout<br>            # didn't occur), we can connect
with a very sort timeout.<br>            for username in ['ubuntu', 'fedora',
'cloud-user', 'centos',<br>                     
       'debian']:<br>                try:<br>                    host
= utils.ssh_connect(server['public_ip'], username,<br>                     
                     
 ssh_kwargs,<br>                     
                     
 timeout=10)<br>                    if
host:<br>                     
  break<br>                except:<br>                    continue</font></tt><font size=3><br></font><tt><font size=2><br>        if not host:<br>            raise Exception("Unable
to log in via SSH")</font></tt><font size=3> </font><tt><font size=2><br>        if not host:<br>            # We have connected to the node
but couldn't do anything as root<br>            # try distro specific users,
since we know ssh is up (a timeout<br>            # didn't occur), we can connect
with a very sort timeout.<br>            for username in ['ubuntu', 'fedora',
'cloud-user', 'centos',<br>                     
       'debian']:<br>                try:<br>                    host
= utils.ssh_connect(server['public_ip'], username,<br>                     
                     
 ssh_kwargs,<br>                     
                     
 timeout=10)<br>                    if
host:<br>                     
  break<br>                except:<br>                    continue</font></tt><font size=3><br></font><tt><font size=2><br>        if not host:<br>            raise Exception("Unable
to log in via SSH")</font></tt><font size=3> </font><br><br><br><font size=2 face="sans-serif">This code tries to use the key that
was generated earlier (by paramiko) in order to ssh_connect to root.</font><br><font size=2 face="sans-serif">The problem is that no one put that
ssh key into root's authorized_keys, and the connection fails.</font><br><br><font size=2 face="sans-serif">Is it a bug? </font><br><br><font size=2 face="sans-serif">[1] </font><a href="https://github.com/openstack-infra/project-config/tree/master/nodepool/elements"><font size=2 color=blue face="sans-serif">https://github.com/openstack-infra/project-config/tree/master/nodepool/elements</font></a><br><br><font size=2 face="sans-serif">[2] </font><a href="https://git.openstack.org/cgit/openstack-infra/nodepool/tree/nodepool/nodepool.py"><font size=2 color=blue face="sans-serif">https://git.openstack.org/cgit/openstack-infra/nodepool/tree/nodepool/nodepool.py</font></a><br><br><br><font size=2 face="sans-serif">Thanks,</font><br><font size=2 face="sans-serif">Isaac Beckman</font><br><font size=2 face="sans-serif"><br>Office: +972-3-6897874</font><br><font size=2 face="sans-serif">Fax: +972-3-6897755</font><br><font size=2 face="sans-serif">Mobile: +972-50-2680180<br>Email: isaacb@il.ibm.com</font><br><font size=2 face="sans-serif"><br>IBM XIV, Cloud Storage Solutions (previously HSG)</font><br><a href=www.ibm.com/storage/disk/xiv><font size=2 color=blue face="sans-serif">www.ibm.com/storage/disk/xiv</font></a><font size=2 face="sans-serif"><br></font><img src=cid:_1_D31E76B8D31E73E8004E2584C2257F8C width=152 height=68 style="border:0px solid;"><font size=2 face="sans-serif">  </font><BR>