Merge "Reduce dependencies on the dest nodes"
This commit is contained in:
commit
97be8d1214
@ -1,38 +1,45 @@
|
||||
---
|
||||
- name: Creating database
|
||||
mysql_db:
|
||||
login_host: "{{ database_address }}"
|
||||
login_user: "{{ database_user }}"
|
||||
login_password: "{{ database_password }}"
|
||||
name: "{{ service_database_name }}"
|
||||
command: docker exec -t kolla_ansible /usr/bin/ansible localhost
|
||||
-m mysql_db
|
||||
-a "login_host='{{ database_address }}'
|
||||
login_user='{{ database_user }}'
|
||||
login_password='{{ database_password }}'
|
||||
name='{{ service_database_name }}'"
|
||||
register: database
|
||||
changed_when: "{{ database.stdout.find('localhost | SUCCESS => ') != -1 and (database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
|
||||
failed_when: database.stdout.split()[2] != 'SUCCESS'
|
||||
run_once: True
|
||||
|
||||
- name: Creating database user and setting permissions
|
||||
mysql_user:
|
||||
login_host: "{{ database_address }}"
|
||||
login_user: "{{ database_user }}"
|
||||
login_password: "{{ database_password }}"
|
||||
name: "{{ service_database_name }}"
|
||||
password: "{{ service_database_password }}"
|
||||
host: "%"
|
||||
priv: "{{ service_database_name }}.*:ALL"
|
||||
append_privs: "yes"
|
||||
command: docker exec -t kolla_ansible /usr/bin/ansible localhost
|
||||
-m mysql_user
|
||||
-a "login_host='{{ database_address }}'
|
||||
login_user='{{ database_user }}'
|
||||
login_password='{{ database_password }}'
|
||||
name='{{ service_database_name }}'
|
||||
password='{{ service_database_password }}'
|
||||
host='%'
|
||||
priv='{{ service_database_name }}.*:ALL'
|
||||
append_privs='yes'"
|
||||
register: database_user
|
||||
changed_when: "{{ database.stdout.find('localhost | SUCCESS => ') != -1 and (database_user.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
|
||||
failed_when: database_user.stdout.split()[2] != 'SUCCESS'
|
||||
run_once: True
|
||||
|
||||
- include: start.yml
|
||||
vars:
|
||||
run_once: True
|
||||
when: database|changed
|
||||
when: database.stdout.find('localhost | SUCCESS => ') != -1 and (database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed
|
||||
|
||||
# https://github.com/ansible/ansible-modules-core/pull/1031
|
||||
- name: Waiting for bootstrap container to exit
|
||||
command: docker wait "{{ container_name }}"
|
||||
when: database|changed
|
||||
when: database.stdout.find('localhost | SUCCESS => ') != -1 and (database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed
|
||||
|
||||
- name: Cleaning up boostrap container
|
||||
docker:
|
||||
name: "{{ container_name }}"
|
||||
image: "{{ container_image }}"
|
||||
state: "absent"
|
||||
when: database|changed
|
||||
when: database.stdout.find('localhost | SUCCESS => ') != -1 and (database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed
|
||||
|
13
ansible/roles/common/defaults/main.yml
Normal file
13
ansible/roles/common/defaults/main.yml
Normal file
@ -0,0 +1,13 @@
|
||||
---
|
||||
####################
|
||||
# Docker
|
||||
####################
|
||||
docker_ansible_registry: "{{ docker_registry ~ '/' if docker_registry else '' }}"
|
||||
docker_ansible_namespace: "{{ docker_namespace }}"
|
||||
kolla_ansible_base_distro: "{{ kolla_base_distro }}"
|
||||
kolla_ansible_install_type: "{{ kolla_install_type }}"
|
||||
kolla_ansible_container_name: "kolla-ansible"
|
||||
|
||||
docker_ansible_image: "{{ docker_ansible_registry }}{{ docker_ansible_namespace }}/{{ kolla_ansible_base_distro }}-{{ kolla_ansible_install_type }}-{{ kolla_ansible_container_name }}"
|
||||
docker_ansible_tag: "{{ openstack_release }}"
|
||||
docker_ansible_image_full: "{{ docker_ansible_image }}:{{ docker_ansible_tag }}"
|
2
ansible/roles/common/tasks/main.yml
Normal file
2
ansible/roles/common/tasks/main.yml
Normal file
@ -0,0 +1,2 @@
|
||||
---
|
||||
- include: start.yml
|
9
ansible/roles/common/tasks/start.yml
Normal file
9
ansible/roles/common/tasks/start.yml
Normal file
@ -0,0 +1,9 @@
|
||||
---
|
||||
- include: ../../start.yml
|
||||
vars:
|
||||
container_command: "/bin/sleep infinity"
|
||||
container_environment:
|
||||
ANSIBLE_NOCOLOR: "1"
|
||||
ANSIBLE_LIBRARY: "/usr/share/ansible"
|
||||
container_image: "{{ docker_ansible_image_full }}"
|
||||
container_name: "kolla_ansible"
|
@ -44,3 +44,5 @@ glance_logging_verbose: "{{ openstack_logging_verbose }}"
|
||||
glance_logging_debug: "{{ openstack_logging_debug }}"
|
||||
|
||||
glance_keystone_user: "glance"
|
||||
|
||||
openstack_glance_auth: "{'auth_url':'{{ openstack_auth_v2.auth_url }}','username':'{{ openstack_auth_v2.username }}','password':'{{ openstack_auth_v2.password }}','project_name':'{{ openstack_auth_v2.project_name }}'}"
|
||||
|
3
ansible/roles/glance/meta/main.yml
Normal file
3
ansible/roles/glance/meta/main.yml
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
dependencies:
|
||||
- { role: common }
|
@ -1,23 +1,37 @@
|
||||
---
|
||||
- name: Creating the Glance service and endpoint
|
||||
kolla_keystone_service:
|
||||
service_name: "glance"
|
||||
service_type: "image"
|
||||
description: "Openstack Image"
|
||||
endpoint_region: "{{ openstack_region_name }}"
|
||||
admin_url: "http://{{ kolla_internal_address }}:{{ glance_api_port }}"
|
||||
internal_url: "http://{{ kolla_internal_address }}:{{ glance_api_port }}"
|
||||
public_url: "http://{{ kolla_external_address }}:{{ glance_api_port }}"
|
||||
auth: "{{ openstack_auth_v2 }}"
|
||||
region_name: "{{ openstack_region_name }}"
|
||||
command: docker exec -t kolla_ansible /usr/bin/ansible localhost
|
||||
-m kolla_keystone_service
|
||||
-a "service_name=glance
|
||||
service_type=image
|
||||
description='Openstack Image'
|
||||
endpoint_region={{ openstack_region_name }}
|
||||
admin_url='http://{{ kolla_internal_address }}:{{ glance_api_port }}'
|
||||
internal_url='http://{{ kolla_internal_address }}:{{ glance_api_port }}'
|
||||
public_url='http://{{ kolla_external_address }}:{{ glance_api_port }}'
|
||||
region_name={{ openstack_region_name }}
|
||||
auth={{ '{{ openstack_glance_auth }}' }}"
|
||||
-e "{'openstack_glance_auth':{{ openstack_glance_auth }}}"
|
||||
register: glance_endpoint
|
||||
changed_when: "{{ glance_endpoint.stdout.find('localhost | SUCCESS => ') != -1 and (glance_endpoint.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
|
||||
until: glance_endpoint.stdout.split()[2] == 'SUCCESS'
|
||||
retries: 10
|
||||
delay: 5
|
||||
run_once: True
|
||||
|
||||
- name: Creating the Glance project, user, and role
|
||||
kolla_keystone_user:
|
||||
project: "service"
|
||||
user: "glance"
|
||||
password: "{{ glance_keystone_password }}"
|
||||
role: "admin"
|
||||
auth: "{{ openstack_auth_v2 }}"
|
||||
region_name: "{{ openstack_region_name }}"
|
||||
command: docker exec -t kolla_ansible /usr/bin/ansible localhost
|
||||
-m kolla_keystone_user
|
||||
-a "project=service
|
||||
user=glance
|
||||
password={{ glance_keystone_password }}
|
||||
role=admin
|
||||
region_name={{ openstack_region_name }}
|
||||
auth={{ '{{ openstack_glance_auth }}' }}"
|
||||
-e "{'openstack_glance_auth':{{ openstack_glance_auth }}}"
|
||||
register: glance_user
|
||||
changed_when: "{{ glance_user.stdout.find('localhost | SUCCESS => ') != -1 and (glance_user.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
|
||||
until: glance_user.stdout.split()[2] == 'SUCCESS'
|
||||
retries: 10
|
||||
delay: 5
|
||||
run_once: True
|
||||
|
3
ansible/roles/haproxy/meta/main.yml
Normal file
3
ansible/roles/haproxy/meta/main.yml
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
dependencies:
|
||||
- { role: common }
|
3
ansible/roles/keystone/meta/main.yml
Normal file
3
ansible/roles/keystone/meta/main.yml
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
dependencies:
|
||||
- { role: common }
|
3
ansible/roles/mariadb/meta/main.yml
Normal file
3
ansible/roles/mariadb/meta/main.yml
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
dependencies:
|
||||
- { role: common }
|
@ -1,15 +1,31 @@
|
||||
---
|
||||
- include: ../../start.yml
|
||||
vars:
|
||||
container_environment:
|
||||
KOLLA_BOOTSTRAP:
|
||||
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
|
||||
DB_ROOT_PASSWORD: "{{ database_password }}"
|
||||
container_image: "{{ docker_database_image_full }}"
|
||||
container_name: "mariadb"
|
||||
container_restart_policy: "no"
|
||||
container_volumes:
|
||||
- "{{ node_config_directory }}/mariadb/:/opt/kolla/mariadb/:ro"
|
||||
container_volumes_from:
|
||||
- "mariadb_data"
|
||||
when: delegate_host == 'None' and inventory_hostname == groups['mariadb'][0]
|
||||
|
||||
- name: Creating haproxy mysql user
|
||||
mysql_user:
|
||||
login_host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
|
||||
login_user: "{{ database_user }}"
|
||||
login_password: "{{ database_password }}"
|
||||
name: "haproxy"
|
||||
password: ""
|
||||
host: "%"
|
||||
priv: "*.*:USAGE"
|
||||
register: status
|
||||
until: status|success
|
||||
command: docker exec -t kolla_ansible /usr/bin/ansible localhost
|
||||
-m mysql_user
|
||||
-a "login_host='{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}'
|
||||
login_user='{{ database_user }}'
|
||||
login_password='{{ database_password }}'
|
||||
name='haproxy'
|
||||
password=''
|
||||
host='%'"
|
||||
register: haproxy_user
|
||||
changed_when: "{{ (haproxy_user.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
|
||||
until: haproxy_user.stdout.split()[2] == 'SUCCESS'
|
||||
retries: 10
|
||||
delay: 5
|
||||
|
||||
|
@ -66,3 +66,5 @@ neutron_logging_debug: "{{ openstack_logging_debug }}"
|
||||
neutron_keystone_user: "neutron"
|
||||
|
||||
neutron_bridge_name: "br-ex"
|
||||
|
||||
openstack_neutron_auth: "{'auth_url':'{{ openstack_auth_v2.auth_url }}','username':'{{ openstack_auth_v2.username }}','password':'{{ openstack_auth_v2.password }}','project_name':'{{ openstack_auth_v2.project_name }}'}"
|
||||
|
3
ansible/roles/neutron/meta/main.yml
Normal file
3
ansible/roles/neutron/meta/main.yml
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
dependencies:
|
||||
- { role: common }
|
@ -1,23 +1,37 @@
|
||||
---
|
||||
- name: Creating the Neutron service and endpoint
|
||||
kolla_keystone_service:
|
||||
service_name: "neutron"
|
||||
service_type: "network"
|
||||
description: "OpenStack Networking"
|
||||
endpoint_region: "{{ openstack_region_name }}"
|
||||
admin_url: "http://{{ kolla_internal_address }}:{{ neutron_server_port }}"
|
||||
internal_url: "http://{{ kolla_internal_address }}:{{ neutron_server_port }}"
|
||||
public_url: "http://{{ kolla_external_address }}:{{ neutron_server_port }}"
|
||||
auth: "{{ openstack_auth_v2 }}"
|
||||
region_name: "{{ openstack_region_name }}"
|
||||
command: docker exec -t kolla_ansible /usr/bin/ansible localhost
|
||||
-m kolla_keystone_service
|
||||
-a "service_name=neutron
|
||||
service_type=image
|
||||
description='Openstack Networking'
|
||||
endpoint_region={{ openstack_region_name }}
|
||||
admin_url='http://{{ kolla_internal_address }}:{{ neutron_server_port }}'
|
||||
internal_url='http://{{ kolla_internal_address }}:{{ neutron_server_port }}'
|
||||
public_url='http://{{ kolla_external_address }}:{{ neutron_server_port }}'
|
||||
region_name={{ openstack_region_name }}
|
||||
auth={{ '{{ openstack_neutron_auth }}' }}"
|
||||
-e "{'openstack_neutron_auth':{{ openstack_neutron_auth }}}"
|
||||
register: neutron_endpoint
|
||||
changed_when: "{{ neutron_endpoint.stdout.find('localhost | SUCCESS => ') != -1 and (neutron_endpoint.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
|
||||
until: neutron_endpoint.stdout.split()[2] == 'SUCCESS'
|
||||
retries: 10
|
||||
delay: 5
|
||||
run_once: True
|
||||
|
||||
- name: Creating the Neutron project, user, and role
|
||||
kolla_keystone_user:
|
||||
project: "service"
|
||||
user: "neutron"
|
||||
password: "{{ neutron_keystone_password }}"
|
||||
role: "admin"
|
||||
auth: "{{ openstack_auth_v2 }}"
|
||||
region_name: "{{ openstack_region_name }}"
|
||||
command: docker exec -t kolla_ansible /usr/bin/ansible localhost
|
||||
-m kolla_keystone_user
|
||||
-a "project=service
|
||||
user=neutron
|
||||
password={{ neutron_keystone_password }}
|
||||
role=admin
|
||||
region_name={{ openstack_region_name }}
|
||||
auth={{ '{{ openstack_neutron_auth }}' }}"
|
||||
-e "{'openstack_neutron_auth':{{ openstack_neutron_auth }}}"
|
||||
register: neutron_user
|
||||
changed_when: "{{ neutron_user.stdout.find('localhost | SUCCESS => ') != -1 and (neutron_user.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
|
||||
until: neutron_user.stdout.split()[2] == 'SUCCESS'
|
||||
retries: 10
|
||||
delay: 5
|
||||
run_once: True
|
||||
|
@ -69,3 +69,5 @@ nova_logging_verbose: "{{ openstack_logging_verbose }}"
|
||||
nova_logging_debug: "{{ openstack_logging_debug }}"
|
||||
|
||||
nova_keystone_user: "nova"
|
||||
|
||||
openstack_nova_auth: "{'auth_url':'{{ openstack_auth_v2.auth_url }}','username':'{{ openstack_auth_v2.username }}','password':'{{ openstack_auth_v2.password }}','project_name':'{{ openstack_auth_v2.project_name }}'}"
|
||||
|
3
ansible/roles/nova/meta/main.yml
Normal file
3
ansible/roles/nova/meta/main.yml
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
dependencies:
|
||||
- { role: common }
|
@ -1,23 +1,38 @@
|
||||
---
|
||||
- name: Creating the Nova service and endpoint
|
||||
kolla_keystone_service:
|
||||
service_name: "nova"
|
||||
service_type: "compute"
|
||||
description: "Openstack Compute"
|
||||
endpoint_region: "{{ openstack_region_name }}"
|
||||
admin_url: "http://{{ kolla_internal_address }}:{{ nova_api_port }}/v2/%(tenant_id)s"
|
||||
internal_url: "http://{{ kolla_internal_address }}:{{ nova_api_port }}/v2/%(tenant_id)s"
|
||||
public_url: "http://{{ kolla_external_address }}:{{ nova_api_port }}/v2/%(tenant_id)s"
|
||||
auth: "{{ openstack_auth_v2 }}"
|
||||
region_name: "{{ openstack_region_name }}"
|
||||
command: docker exec -t kolla_ansible /usr/bin/ansible localhost
|
||||
-m kolla_keystone_service
|
||||
-a "service_name=nova
|
||||
service_type=compute
|
||||
description='Openstack Compute'
|
||||
endpoint_region={{ openstack_region_name }}
|
||||
admin_url='http://{{ kolla_internal_address }}:{{ nova_api_port }}/v2/%(tenant_id)s'
|
||||
internal_url='http://{{ kolla_internal_address }}:{{ nova_api_port }}/v2/%(tenant_id)s'
|
||||
public_url='http://{{ kolla_external_address }}:{{ nova_api_port }}/v2/%(tenant_id)s'
|
||||
region_name={{ openstack_region_name }}
|
||||
auth={{ '{{ openstack_nova_auth }}' }}"
|
||||
-e "{'openstack_nova_auth':{{ openstack_nova_auth }}}"
|
||||
register: nova_endpoint
|
||||
changed_when: "{{ nova_endpoint.stdout.find('localhost | SUCCESS => ') != -1 and (nova_endpoint.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
|
||||
until: nova_endpoint.stdout.split()[2] == 'SUCCESS'
|
||||
retries: 10
|
||||
delay: 5
|
||||
run_once: True
|
||||
|
||||
|
||||
- name: Creating the Nova project, user, and role
|
||||
kolla_keystone_user:
|
||||
project: "service"
|
||||
user: "nova"
|
||||
password: "{{ nova_keystone_password }}"
|
||||
role: "admin"
|
||||
auth: "{{ openstack_auth_v2 }}"
|
||||
region_name: "{{ openstack_region_name }}"
|
||||
command: docker exec -t kolla_ansible /usr/bin/ansible localhost
|
||||
-m kolla_keystone_user
|
||||
-a "project=service
|
||||
user=nova
|
||||
password={{ nova_keystone_password }}
|
||||
role=admin
|
||||
region_name={{ openstack_region_name }}
|
||||
auth={{ '{{ openstack_nova_auth }}' }}"
|
||||
-e "{'openstack_nova_auth':{{ openstack_nova_auth }}}"
|
||||
register: nova_user
|
||||
changed_when: "{{ nova_user.stdout.find('localhost | SUCCESS => ') != -1 and (nova_user.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
|
||||
until: nova_user.stdout.split()[2] == 'SUCCESS'
|
||||
retries: 10
|
||||
delay: 5
|
||||
run_once: True
|
||||
|
3
ansible/roles/rabbitmq/meta/main.yml
Normal file
3
ansible/roles/rabbitmq/meta/main.yml
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
dependencies:
|
||||
- { role: common }
|
@ -27,7 +27,7 @@
|
||||
restart_policy_retry: "{{ docker_restart_policy_retry }}"
|
||||
state: "reloaded"
|
||||
username: "{{ docker_registry_username }}"
|
||||
volumes: "{{ container_volumes }}"
|
||||
volumes: "{{ container_volumes | default([]) }}"
|
||||
volumes_from: "{{ container_volumes_from | default([]) }}"
|
||||
run_once: "{{ run_once | default('False') }}"
|
||||
when: not container_pid|default(False)
|
||||
@ -51,7 +51,7 @@
|
||||
restart_policy_retry: "{{ docker_restart_policy_retry }}"
|
||||
state: "reloaded"
|
||||
username: "{{ docker_registry_username }}"
|
||||
volumes: "{{ container_volumes }}"
|
||||
volumes: "{{ container_volumes | default([]) }}"
|
||||
volumes_from: "{{ container_volumes_from | default([]) }}"
|
||||
run_once: "{{ run_once | default('False') }}"
|
||||
when: container_pid|default(False)
|
||||
|
27
docker/centos/binary/kolla-ansible/Dockerfile
Normal file
27
docker/centos/binary/kolla-ansible/Dockerfile
Normal file
@ -0,0 +1,27 @@
|
||||
FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%base:%%KOLLA_TAG%%
|
||||
MAINTAINER Kolla Project (https://launchpad.net/kolla)
|
||||
|
||||
RUN yum -y install \
|
||||
git \
|
||||
gcc \
|
||||
libffi-devel \
|
||||
libxml2-devel \
|
||||
libxslt-devel \
|
||||
MySQL-python \
|
||||
openssl-devel \
|
||||
python-devel \
|
||||
openssh-clients \
|
||||
&& yum clean all
|
||||
|
||||
RUN pip install -U pip wheel \
|
||||
&& pip install python-openstackclient shade
|
||||
|
||||
RUN git clone https://github.com/ansible/ansible.git \
|
||||
&& cd ansible \
|
||||
&& git submodule update --init --recursive \
|
||||
&& pip install .
|
||||
|
||||
RUN mkdir -p /etc/ansible /usr/share/ansible \
|
||||
&& echo 'localhost ansible_connection=local' > /etc/ansible/hosts
|
||||
|
||||
COPY kolla_keystone_service.py kolla_keystone_user.py /usr/share/ansible/
|
1
docker/centos/binary/kolla-ansible/build
Symbolic link
1
docker/centos/binary/kolla-ansible/build
Symbolic link
@ -0,0 +1 @@
|
||||
../../../../tools/build-docker-image
|
@ -329,6 +329,10 @@ In order for each service to function, there is a minimum set of required variab
|
||||
KEYSTONE_PUBLIC_SERVICE_HOST
|
||||
PUBLIC_IP
|
||||
|
||||
# Kolla-ansible
|
||||
|
||||
None
|
||||
|
||||
# Magnum-api
|
||||
|
||||
ADMIN_TENANT_NAME
|
||||
|
Loading…
x
Reference in New Issue
Block a user