Почему контейнеры управления не получают IP-адреса при установке с OpenStack-Ansible?

В целях тестирования я хочу установить OpenStack на двух экземплярах VirtualBox с помощью Ansible. Как сказано в документации, я предварительно настроить локальную сеть с четырьмя VLAN-ами. И создаем мостовые интерфейсы. После этого с сетевым подключением все в порядке.

Я также настраиваю файл openstack_user_config.yml.

---
cidr_networks:
  container: 172.29.236.0/22
  tunnel: 172.29.240.0/22
  storage: 172.29.244.0/22
used_ips:
  - "172.29.236.1,172.29.236.255"
  - "172.29.240.1,172.29.240.255"
  - "172.29.244.1,172.29.244.255"

global_overrides:
  internal_lb_vip_address: 192.168.33.22
  external_lb_vip_address: dev-ows.hive
  tunnel_bridge: "br-vxlan"
  management_bridge: "br-mgmt"
  provider_networks:
    - network:
      container_bridge: "br-mgmt"
      container_type: "veth"
      container_interface: "eth1"
      ip_from_q: "container"
      type: "raw"
      group_binds:
        - all_containers
        - hosts
      is_container_address: true
    - network:
      container_bridge: "br-vxlan"
      container_type: "veth"
      container_interface: "eth10"
      ip_from_q: "tunnel"
      type: "vxlan"
      range: "1:1000"
      net_name: "vxlan"
      group_binds:
        - neutron_linuxbridge_agent
    - network:
      container_bridge: "br-vlan"
      container_type: "veth"
      container_interface: "eth11"
      type: "flat"
      net_name: "flat"
      group_binds:
        - neutron_linuxbridge_agent
    - network:
      container_bridge: "br-storage"
      container_type: "veth"
      container_interface: "eth2"
      ip_from_q: "storage"
      type: "raw"
      group_binds:
        - glance_api
        - cinder_api
        - cinder_volume
        - nova_compute
...

Но после запуска плейбука я получаю сообщение об ошибке:

# openstack-ansible setup-hosts.yml
...
TASK [lxc_container_create : Gather container facts] *********************************************************************************************************************************************************************************************************
fatal: [controller01_horizon_container-6da3ab23]: UNREACHABLE! => {"changed": false, "msg": "SSH Error: data could not be sent to remote host \"controller01_horizon_container-6da3ab23\". Make sure this host can be reached over ssh", "unreachable": true}
fatal: [controller01_utility_container-3d6724b2]: UNREACHABLE! => {"changed": false, "msg": "SSH Error: data could not be sent to remote host \"controller01_utility_container-3d6724b2\". Make sure this host can be reached over ssh", "unreachable": true}
fatal: [controller01_keystone_container-01c915b6]: UNREACHABLE! => {"changed": false, "msg": "SSH Error: data could not be sent to remote host \"controller01_keystone_container-01c915b6\". Make sure this host can be reached over ssh", "unreachable": true}
...

Я выяснил, что контейнеры LXC, созданные с помощью плейбуков Ansible, не имеют интерфейсов и, следовательно, IP-адреса. Вот почему, когда Ansible подключается по ssh к этим контейнерам, я получаю ошибку «Хост недоступен».

# lxc-ls -f
NAME                                           STATE   AUTOSTART GROUPS            IPV4 IPV6 UNPRIVILEGED
controller01_cinder_api_container-e80b0c98     RUNNING 1         onboot, openstack -    -    false
controller01_galera_container-2f58aec8         RUNNING 1         onboot, openstack -    -    false
controller01_glance_container-a2607024         RUNNING 1         onboot, openstack -    -    false
controller01_heat_api_container-d82fd06a       RUNNING 1         onboot, openstack -    -    false
controller01_horizon_container-6da3ab23        RUNNING 1         onboot, openstack -    -    false
controller01_keystone_container-01c915b6       RUNNING 1         onboot, openstack -    -    false
controller01_memcached_container-352c2b47      RUNNING 1         onboot, openstack -    -    false
controller01_neutron_server_container-60ce9d02 RUNNING 1         onboot, openstack -    -    false
controller01_nova_api_container-af09cbb9       RUNNING 1         onboot, openstack -    -    false
controller01_rabbit_mq_container-154e35fe      RUNNING 1         onboot, openstack -    -    false
controller01_repo_container-bb1ebb24           RUNNING 1         onboot, openstack -    -    false
controller01_rsyslog_container-07902098        RUNNING 1         onboot, openstack -    -    false
controller01_utility_container-3d6724b2        RUNNING 1         onboot, openstack -    -    false

Пожалуйста, дайте мне совет, что я делаю не так.


person Roman    schedule 06.11.2018    source источник


Ответы (1)


Как вы заметили, контейнеры не получают IP-адрес управления.

Удостоверились ли вы, что мост br-mgmt на ваших двух виртуальных боксах работает должным образом? Проверьте связь между этими двумя хостами через br-mgmt. Например. ping с IP-адресом br-mgmt между двумя хостами.

Если вы правильно настроили vlan и мосты, вы сможете установить соединение, используя между хостами через определенные мосты.

$ ansible -vi inventory/myos all -m shell -a "ip route" --limit infra,compute
Using /etc/ansible/ansible.cfg as config file
infra2 | SUCCESS | rc=0 >>
default via 10.255.0.1 dev eno1 onlink 
10.0.3.0/24 dev lxcbr0  proto kernel  scope link  src 10.0.3.1 
10.255.0.0/24 dev eno1  proto kernel  scope link  src 10.255.0.12 
172.29.236.0/22 dev br-mgmt  proto kernel  scope link  src 172.29.236.12 
172.29.240.0/22 dev br-vxlan  proto kernel  scope link  src 172.29.240.12 
172.29.244.0/22 dev br-storage  proto kernel  scope link  src 172.29.244.12 

infra1 | SUCCESS | rc=0 >>
default via 10.255.0.1 dev eno1 onlink 
10.0.3.0/24 dev lxcbr0  proto kernel  scope link  src 10.0.3.1 
10.255.0.0/24 dev eno1  proto kernel  scope link  src 10.255.0.11 
172.29.236.0/22 dev br-mgmt  proto kernel  scope link  src 172.29.236.11 
172.29.240.0/22 dev br-vxlan  proto kernel  scope link  src 172.29.240.11 
172.29.244.0/22 dev br-storage  proto kernel  scope link  src 172.29.244.11 

infra3 | SUCCESS | rc=0 >>
default via 10.255.0.1 dev eno1 onlink 
10.0.3.0/24 dev lxcbr0  proto kernel  scope link  src 10.0.3.1 
10.255.0.0/24 dev eno1  proto kernel  scope link  src 10.255.0.13 
172.29.236.0/22 dev br-mgmt  proto kernel  scope link  src 172.29.236.13 
172.29.240.0/22 dev br-vxlan  proto kernel  scope link  src 172.29.240.13 
172.29.244.0/22 dev br-storage  proto kernel  scope link  src 172.29.244.13

compute1 | SUCCESS | rc=0 >>
default via 10.255.0.1 dev eno1 onlink 
10.255.0.0/24 dev eno1  proto kernel  scope link  src 10.255.0.16 
172.29.236.0/22 dev br-mgmt  proto kernel  scope link  src 172.29.236.16 
172.29.240.0/22 dev br-vxlan  proto kernel  scope link  src 172.29.240.16 
172.29.244.0/22 dev br-storage  proto kernel  scope link  src 172.29.244.16 

compute2 | SUCCESS | rc=0 >>
default via 10.255.0.1 dev eno1 onlink 
10.255.0.0/24 dev eno1  proto kernel  scope link  src 10.255.0.17 
172.29.236.0/22 dev br-mgmt  proto kernel  scope link  src 172.29.236.17 
172.29.240.0/22 dev br-vxlan  proto kernel  scope link  src 172.29.240.17 
172.29.244.0/22 dev br-storage  proto kernel  scope link  src 172.29.244.17 

Таким образом, используя IP-адрес br-mgmt (172.29.236.x) с любого из вышеперечисленных хостов, я должен иметь доступ к одноранговым узлам с той же подсетью br-mgmt.

person mino    schedule 07.11.2018
comment
Хосты могут связываться друг с другом через любой интерфейс моста. - person Roman; 07.11.2018
comment
Я предполагаю, что один из двух VBox также является узлом развертывания. Может ли узел развертывания подключиться к другому узлу по SSH (снова через br-mgmt)? Вы можете показать нам полную конфигурацию openstack_user вместе с конфигурацией вашей сети хостов, чтобы мы могли получить больше информации. - person mino; 08.11.2018
comment
Я запускаю доступные playbooks, а не из виртуальной среды. ** Моя конфигурация openstack_user ** ** Моя конфигурация сети ** - person Roman; 08.11.2018
comment
Результаты для ip route comand есть здесь - person Roman; 08.11.2018
comment
Из вашей настройки я вижу две вещи, которые могут или не могут способствовать вашей проблеме: ваш узел развертывания также должен находиться в той же сети br-mgmt в соответствии с guide Ваша конфигурация openstack_user должна использовать IP-адрес br-mgmt для идентификации ваших хостов. Например. shared-infra_hosts: controller01: ip: ‹IP-адрес br-mgmt› - person mino; 09.11.2018
comment
Мне очень не хватало этой конфигурации. Спасибо. Теперь я попытался настроить узел развертывания (на котором выполняется Ansible) в той же сети уровня 2. Но контейнеры lxc по-прежнему не имеют IP-адресов. Может у вас есть другие идеи? - person Roman; 09.11.2018
comment
На выходе ip r вашего инфроузла lxcbr0 отсутствует. Я предлагаю вам проверить доступный журнал из / openstack / log /, чтобы узнать, с чем связана ошибка. - person mino; 09.11.2018
comment
В моем файле журнала я не могу найти никаких ошибок это связано с моей проблемой. - person Roman; 12.11.2018
comment
Я думаю, что подсказка в этих выводах . Это указывает на то, что сетевой интерфейс контейнеров не настроен в соответствии с ... Пожалуйста, проверьте документацию, нет ли пропущенного шага, или, в лучшем случае, обратитесь к группе проекта верхнего уровня на # openstack-ansible, чтобы получить дополнительную помощь. - person mino; 14.11.2018
comment
Спасибо, но проблема не в этом. Пробовал указать эту переменную lxc_user_defined_container: "ubuntu-18.04.yml" Но это не помогает. - person Roman; 15.11.2018