How to Install Tripleo(Openstack on Openstack) UnderCloud on CentOS 7

22 Responses

  1. Sampath says:

    Good one. And also please provide overcloud install and configuration the next tutorial.

  2. Ranjeet says:

    nice article. Please publish article for overcloud install and configuration .

  3. Krishna says:

    How to do the step “Two Interfaces are attached to VM (Provisioning & NAT)” in Centos virt-manager ?

    virt-manager gui -> New VM -> Network selection -> Host device enpls0:macvtap
    Source mode : Bridge

    Like this?

  4. Harpreet Singh says:

    Hello Pardeep, actually I’m having issue while some sort of issues while setting the Networking Block for VM like Provisioning and NAT. I’ve done every thing, Enabled Nested Virtualization, Configure IP Forwarding but I don’t have the Network Connectivity between my VM and Host. even I’ve used ‘tcpdump’ to capture the traffic and I’ve got the result regarding ‘ARP’. both systems are not able to resolve ARP Requests. so plz help me to solve this issue
    My Setup : RHEL 7.3 as Host as well Guest( for UnderCloud )

  5. Ranjeet says:

    Please explain network address details.
    local_ip =
    undercloud_public_vip =
    undercloud_admin_vip =
    local_interface = eth1
    masquerade_network =
    dhcp_start =
    dhcp_end =
    network_cidr =
    network_gateway =
    inspection_iprange =,
    generate_service_certificate = true
    certificate_generation_ca = local

  6. Jay says:

    Hello Pradeep, I have some confusion. Could you share about how to create Provisioning & NAT Network on KVM host ? Do physical interfaces need to be attached to the bridges belonged to Provisioning & NAT Network ? And do bridges need to be created with IPs ? Many thanks!

    • Pradeep Kumar says:

      Hi Jay,

      You need to create two networks i.e Provisioning and NAT using ‘virsh net-define’ on your KVM hypervisor, Specify the IP address range in the networks xml file,

      virsh net-define /tmp/provisioning.xml

      After creating the networks, attach these network to undercloud Interfaces via Bridges.

      • Jay says:

        hi Pradeep, I have successfully completed undercloud & overcloud installation. Thank you very much! !
        And I have other confusions. Thanks in advance.
        (1) Would it be OK if Provisiong Network not created using virsh net-define and I just create a bridge assigning IP address and then make undercloud & overcloud interfaces attached to the bridge ? if not, why ?
        (2) When configuring neutron, you know, which overcloud compute node interface should be attached to the bridge that will be configured in ”bridge_mappings = :” in openvswitch_agent.ini ? That means which interface is used to openstack VM network ?

  7. Ranjeet says:

    Hi Pradeep ,

    Please help me in tackling this error.

    [email protected] network-scripts]$ cat /home/stack/.instack/install-undercloud.log | less
    [[email protected] network-scripts]$ vi /home/stack/undercloud.conf
    [[email protected] network-scripts]$ cat /home/stack/.instack/install-undercloud.log | less
    [[email protected] network-scripts]$ vi /home/stack/undercloud.conf
    [[email protected] network-scripts]$ cat /home/stack/.instack/install-undercloud.log | less
    2018-04-12 21:00:16,199 INFO: Version:
    2018-04-12 21:00:16,199 INFO: Config: 1523580033
    2018-04-12 21:00:16,228 INFO: Puppet: 4.8.2
    2018-04-12 21:00:36,916 INFO: + rc=1
    2018-04-12 21:00:36,931 INFO: + set -e
    2018-04-12 21:00:36,956 INFO: + echo ‘puppet apply exited with exit code 1’
    2018-04-12 21:00:36,957 INFO: puppet apply exited with exit code 1
    2018-04-12 21:00:36,957 INFO: + ‘[‘ 1 ‘!=’ 2 -a 1 ‘!=’ 0 ‘]’
    2018-04-12 21:00:36,958 INFO: + exit 1
    2018-04-12 21:00:37,172 INFO: [2018-04-12 21:00:37,156] (os-refresh-config) [ERROR] during configure phase. [Command ‘[‘dib-run-parts’, ‘/usr/libexec/os-refresh-config/configure.d’]’ returned non-zero exit status 1]
    2018-04-12 21:00:37,178 INFO:
    2018-04-12 21:00:37,189 INFO: [2018-04-12 21:00:37,182] (os-refresh-config) [ERROR] Aborting…
    2018-04-12 21:00:37,726 DEBUG: An exception occurred
    Traceback (most recent call last):
    File “/usr/lib/python2.7/site-packages/instack_undercloud/”, line 2285, in install
    File “/usr/lib/python2.7/site-packages/instack_undercloud/”, line 1592, in _run_orc
    _run_live_command(args, instack_env, ‘os-refresh-config’)
    File “/usr/lib/python2.7/site-packages/instack_undercloud/”, line 671, in _run_live_command
    raise RuntimeError(‘%s failed. See log for details.’ % name)
    RuntimeError: os-refresh-config failed. See log for details.
    2018-04-12 21:00:37,937 ERROR:

    • Ranjeet says:

      I was able to resolve this error by adding more memory to VM. I could figure out this on carefully inspecting log which was indicated that its not able to fork the process.

  8. Melborn De Chavez says:

    Kindly update. It seems to have a problem with repository

    failure: repodata/repomd.xml from delorean-current: [Errno 256] No more mirrors to try.$/repodat a/repomd.xml: [Errno 14] HTTPS Error 404 – Not Found

      • Wilson says:

        I have checked network settings, these added br-ctlplane and docker0 interface, and then original eth cannot have IP address, so can’t connect to internet, please help.

      • vikasreddy says:

        Hi Pradeep,

        Seems there is a problem with repository, i have encountered the below.

        failure: repodata/repomd.xml from delorean-current: [Errno 256] No more mirrors to try.
        ‘’: [Errno 14] HTTPS Error 404 – Not Found

        also with the


        both are not working. Please do needful.

        • Ashish Rawat says:

          Looks like you need to follow ‘’ this link each time if you face this issue, as this one contains the latest info.
          e.g. for now the repo link is ‘’

          Also on step5 path has been changed. New path is
          cp /usr/share/python-tripleoclient/undercloud.conf.sample ~/undercloud.conf


  9. Wilson says:

    Hi Chris,

    I have modified the delorean-deps.repo or delorean.repo with your repo, but still cannot fix this issue.


    • Christopher says:

      Hi Wilson,

      I just modified the name and base_url line of the file from this article with the lines from the file I linked too.


  10. Robert Wang says:

    I stuck at this stage, anyone can help?

    TASK [Run tripleo-container-image-prepare] **************************************************************************************************************************************************
    [WARNING]: Consider using ‘become’, ‘become_method’, and ‘become_user’ rather than running sudo
    fatal: [undercloud]: FAILED! => {“changed”: true, “cmd”: “sudo /usr/bin/tripleo-container-image-prepare –roles-file /tmp/ansible.3LG7JQ-role-data –environment-file /tmp/ansible.R937V3-prepare-param –cleanup partial 2> ../install-undercloud.log”, “delta”: “0:05:04.372270”, “end”: “2018-10-08 14:45:26.273667”, “msg”: “non-zero return code”, “rc”: 1, “start”: “2018-10-08 14:40:21.901397”, “stderr”: “”, “stderr_lines”: [], “stdout”: “”, “stdout_lines”: []}

    NO MORE HOSTS LEFT **************************************************************************************************************************************************************************

    PLAY RECAP **********************************************************************************************************************************************************************************
    undercloud : ok=188 changed=101 unreachable=0 failed=1

    ** Found ansible errors for undercloud deployment! **
    “Run tripleo-container-image-prepare”,
    “_ansible_parsed”: true,
    “stderr_lines”: [],
    “cmd”: “sudo /usr/bin/tripleo-container-image-prepare –roles-file /tmp/ansible.3LG7JQ-role-data –environment-file /tmp/ansible.R937V3-prepare-param –cleanup partial 2> ../install-undercloud.log”,
    “end”: “2018-10-08 14:45:26.273667”,
    “_ansible_no_log”: false,
    “stdout”: “”,
    “changed”: true,
    “rc”: 1,
    “start”: “2018-10-08 14:40:21.901397”,
    “warnings”: [
    “Consider using ‘become’, ‘become_method’, and ‘become_user’ rather than running sudo”
    “delta”: “0:05:04.372270”,
    “invocation”: {
    “module_args”: {
    “warn”: true,
    “executable”: null,
    “_uses_shell”: true,
    “_raw_params”: “sudo /usr/bin/tripleo-container-image-prepare –roles-file /tmp/ansible.3LG7JQ-role-data –environment-file /tmp/ansible.R937V3-prepare-param –cleanup partial 2> ../install-undercloud.log”,
    “removes”: null,
    “argv”: null,
    “creates”: null,
    “chdir”: null,
    “stdin”: null
    “stdout_lines”: [],
    “stderr”: “”,
    “msg”: “non-zero return code”
    Install artifact is located at /home/stack/undercloud-install-20181008144526.tar.bzip2


    Deployment Failed!

  11. Muhammad Yunus says:

    For Step Number 3 :
    Change name and baseURL for the repository with the following :

    It worked for me ! thanks

  12. txaz2012 says:

    Hi Pradeep,
    I run into this issue
    [[email protected] ~]$ sudo -E tripleo-repos -b rocky current
    WARNING: –centos-mirror was deprecated in favour of –mirror
    Loaded plugins: fastestmirror, langpacks, priorities
    Loading mirror speeds from cached hostfile
    * base:
    * extras:
    * updates:
    Package yum-plugin-priorities-1.1.31-50.el7.noarch already installed and latest version
    Nothing to do
    Traceback (most recent call last):
    File “/bin/tripleo-repos”, line 10, in
    File “/usr/lib/python2.7/site-packages/tripleo_repos/”, line 349, in main
    _install_repos(args, base_path)
    File “/usr/lib/python2.7/site-packages/tripleo_repos/”, line 287, in _install_repos
    content = _get_repo(base_path + ‘current/delorean.repo’, args)
    File “/usr/lib/python2.7/site-packages/tripleo_repos/”, line 143, in _get_repo
    r = requests.get(path)
    File “/usr/lib/python2.7/site-packages/requests/”, line 68, in get
    return request(‘get’, url, **kwargs)
    File “/usr/lib/python2.7/site-packages/requests/”, line 50, in request
    response = session.request(method=method, url=url, **kwargs)
    File “/usr/lib/python2.7/site-packages/requests/”, line 464, in request
    resp = self.send(prep, **send_kwargs)
    File “/usr/lib/python2.7/site-packages/requests/”, line 576, in send
    r = adapter.send(request, **kwargs)
    File “/usr/lib/python2.7/site-packages/requests/”, line 431, in send
    raise SSLError(e, request=request)
    requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:618)

    Since this is just a Lab test to install openstack undercloud/overcloud process, Is there anyway I can make the SSL verify =False to bypass this error? Please advise. Thanks

    • Pradeep Kumar says:

      Hi , I would suggest you to update your system first(Director/Undercloud), using yum update command and reboot it and then give a try of above command

  13. Dipak Kumar says:

    Hi Pradeep,

    I am facing issue in the last step. Can you please help

    #openstack undercloud install
    Exception: Error inspecting image: docker://
    time=”2019-05-29T16:59:22+05:30″ level=fatal msg=”pinging docker registry returned: Get x509: certificate is valid for *,, not”

    Traceback (most recent call last):
    File “/usr/lib/python2.7/site-packages/tripleoclient/v1/”, line 1159, in _standalone_deploy
    File “/usr/lib/python2.7/site-packages/tripleoclient/v1/”, line 759, in _deploy_tripleo_heat_templates
    self._prepare_container_images(env, roles_data)
    File “/usr/lib/python2.7/site-packages/tripleoclient/v1/”, line 706, in _prepare_container_images
    env, roles_data, dry_run=True)
    File “/usr/lib/python2.7/site-packages/tripleo_common/image/”, line 178, in container_images_prepare_multi
    File “/usr/lib/python2.7/site-packages/tripleo_common/image/”, line 273, in container_images_prepare
    images, tag_from_label)
    File “/usr/lib/python2.7/site-packages/tripleo_common/image/”, line 452, in discover_image_tags
    File “/usr/lib/python2.7/site-packages/concurrent/futures/”, line 605, in result_iterator
    yield future.result()
    File “/usr/lib/python2.7/site-packages/concurrent/futures/”, line 429, in result
    return self.__get_result()
    File “/usr/lib/python2.7/site-packages/concurrent/futures/”, line 62, in run
    result = self.fn(*self.args, **self.kwargs)
    File “/usr/lib/python2.7/site-packages/tripleo_common/image/”, line 556, in discover_tag_from_inspect
    i = DockerImageUploader._inspect(image_url.geturl(), insecure)
    File “/usr/lib/python2.7/site-packages/tenacity/”, line 241, in wrapped_f
    return, *args, **kw)
    File “/usr/lib/python2.7/site-packages/tenacity/”, line 330, in call
    File “/usr/lib/python2.7/site-packages/tenacity/”, line 297, in iter
    raise retry_exc.reraise()
    File “/usr/lib/python2.7/site-packages/tenacity/”, line 136, in reraise
    raise self.last_attempt.result()
    File “/usr/lib/python2.7/site-packages/concurrent/futures/”, line 422, in result
    return self.__get_result()
    File “/usr/lib/python2.7/site-packages/tenacity/”, line 333, in call
    result = fn(*args, **kwargs)
    File “/usr/lib/python2.7/site-packages/tripleo_common/image/”, line 383, in _inspect
    (image, err))
    ImageUploaderException: Error inspecting image: docker://
    time=”2019-05-29T16:59:22+05:30″ level=fatal msg=”pinging docker registry returned: Get x509: certificate is valid for *,, not”

Leave a Reply

Your email address will not be published. Required fields are marked *