This commit uncomments the disablement of the functional test in tox.ini and also overrides keystone_git_install_branch by pointing to the SHA currently in openstack-ansible. This is necessary as master of keystone will not build using this role due to changes in upstream keystone. We can tackle that issue once we have more roles performing functional testing. Change-Id: Ia2323fd48c143798ea5fd2815c9b83586d16b0e6 Partial-Bug: #1553957
235 lines
8.2 KiB
YAML
235 lines
8.2 KiB
YAML
---
|
|
# Copyright 2015, Rackspace US, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
- name: Playbook for pre-role testing 1of3
|
|
hosts: 127.0.0.1
|
|
connection: local
|
|
become: false
|
|
pre_tasks:
|
|
- name: Create ssh key pair for root
|
|
user:
|
|
name: "{{ ansible_ssh_user }}"
|
|
generate_ssh_key: "yes"
|
|
ssh_key_bits: 2048
|
|
ssh_key_file: ".ssh/id_rsa"
|
|
- name: get the calling users key
|
|
command: cat ~/.ssh/id_rsa.pub
|
|
register: key_get
|
|
- set_fact:
|
|
lxc_container_ssh_key: "{{ key_get.stdout }}"
|
|
|
|
- name: Playbook for pre-role testing 2of3
|
|
hosts: localhost
|
|
connection: local
|
|
become: yes
|
|
pre_tasks:
|
|
# Make sure OS does not have a stale package cache.
|
|
- name: Update apt cache.
|
|
apt:
|
|
update_cache: yes
|
|
when: ansible_os_family == 'Debian'
|
|
- name: Ensure root's new public ssh key is in authorized_keys
|
|
authorized_key:
|
|
user: root
|
|
key: "{{ hostvars['127.0.0.1']['lxc_container_ssh_key'] }}"
|
|
manage_dir: no
|
|
- set_fact:
|
|
lxc_container_ssh_key: "{{ hostvars['127.0.0.1']['lxc_container_ssh_key'] }}"
|
|
roles:
|
|
- role: "lxc_hosts"
|
|
lxc_net_address: 10.100.100.1
|
|
lxc_net_dhcp_range: 10.100.100.2,10.100.100.253
|
|
lxc_net_bridge: lxcbr0
|
|
lxc_kernel_options:
|
|
- { key: 'fs.inotify.max_user_instances', value: 1024 }
|
|
lxc_container_caches:
|
|
- url: "https://rpc-repo.rackspace.com/container_images/rpc-trusty-container.tgz"
|
|
name: "trusty.tgz"
|
|
sha256sum: "56c6a6e132ea7d10be2f3e8104f47136ccf408b30e362133f0dc4a0a9adb4d0c"
|
|
chroot_path: trusty/rootfs-amd64
|
|
# The $HOME directory is mocked to work with tox
|
|
# by defining the 'ansible_env' hash. This should
|
|
# NEVER be done outside of testing.
|
|
ansible_env: ## NEVER DO THIS OUTSIDE OF TESTING
|
|
HOME: "/tmp"
|
|
- role: "py_from_git"
|
|
git_repo: "https://github.com/lxc/python2-lxc"
|
|
git_dest: "/opt/lxc_python2"
|
|
git_install_branch: "master"
|
|
post_tasks:
|
|
# THIS TASK IS ONLY BEING DONE BECAUSE THE TOX SHARED LXC LIB IS NOT USABLE ON A
|
|
# HOST MACHINE THAT MAY NOT HAVE ACCESS TO THE VENV.
|
|
- name: Ensure the lxc lib is on the host
|
|
command: /usr/local/bin/pip install /opt/lxc_python2
|
|
# Inventory is being pre-loaded using a post tasks instead of through a dynamic
|
|
# inventory system. While this is not a usual method for deployment it's being
|
|
# done for functional testing.
|
|
- name: Create container hosts
|
|
add_host:
|
|
groups: "all,all_containers,rabbitmq_all,galera_all,service_all"
|
|
hostname: "{{ item.name }}"
|
|
inventory_hostname: "{{ item.name }}"
|
|
ansible_ssh_host: "{{ item.address }}"
|
|
ansible_become: true
|
|
properties:
|
|
service_name: "{{ item.service }}"
|
|
container_networks:
|
|
management_address:
|
|
address: "{{ item.address }}"
|
|
bridge: "lxcbr0"
|
|
interface: "eth1"
|
|
netmask: "255.255.252.0"
|
|
type: "veth"
|
|
physical_host: localhost
|
|
container_name: "{{ item.name }}"
|
|
with_items:
|
|
- { name: "service1", service: "service1", address: "10.100.100.101" }
|
|
- name: Create container hosts
|
|
add_host:
|
|
groups: "all,all_containers,keystone_all"
|
|
hostname: "{{ item.name }}"
|
|
inventory_hostname: "{{ item.name }}"
|
|
ansible_ssh_host: "{{ item.address }}"
|
|
ansible_become: true
|
|
properties:
|
|
service_name: "{{ item.service }}"
|
|
container_networks:
|
|
management_address:
|
|
address: "{{ item.address }}"
|
|
bridge: "lxcbr0"
|
|
interface: "eth1"
|
|
netmask: "255.255.252.0"
|
|
type: "veth"
|
|
physical_host: localhost
|
|
container_name: "{{ item.name }}"
|
|
with_items:
|
|
- { name: "keystone1", service: "keystone1", address: "10.100.100.102" }
|
|
- { name: "keystone2", service: "keystone2", address: "10.100.100.103" }
|
|
|
|
- name: Playbook for pre-role testing 3of3
|
|
hosts: all_containers
|
|
connection: local
|
|
gather_facts: false
|
|
roles:
|
|
- role: "lxc_container_create"
|
|
lxc_container_release: trusty
|
|
lxc_container_backing_store: dir
|
|
global_environment_variables:
|
|
PATH: "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
|
post_tasks:
|
|
- name: Wait for ssh to be available
|
|
local_action:
|
|
module: wait_for
|
|
port: "{{ ansible_ssh_port | default('22') }}"
|
|
host: "{{ ansible_ssh_host | default(inventory_hostname) }}"
|
|
search_regex: OpenSSH
|
|
delay: 1
|
|
|
|
- name: Playbook for role testing
|
|
hosts: service_all
|
|
user: root
|
|
gather_facts: true
|
|
roles:
|
|
- role: "rabbitmq_server"
|
|
rabbitmq_cookie_token: secrete
|
|
- role: "galera_server"
|
|
galera_root_password: secrete
|
|
galera_root_user: root
|
|
galera_innodb_buffer_pool_size: 512M
|
|
galera_innodb_log_buffer_size: 32M
|
|
galera_server_id: "{{ inventory_hostname | string_2_int }}"
|
|
galera_wsrep_node_name: "{{ inventory_hostname }}"
|
|
galera_wsrep_provider_options:
|
|
- { option: "gcache.size", value: "32M" }
|
|
galera_server_id: "{{ inventory_hostname | string_2_int }}"
|
|
|
|
- name: Playbook for role testing
|
|
hosts: keystone_all
|
|
user: root
|
|
gather_facts: true
|
|
pre_tasks:
|
|
- name: Ensure Rabbitmq vhost
|
|
rabbitmq_vhost:
|
|
name: "{{ keystone_rabbitmq_vhost }}"
|
|
state: "present"
|
|
delegate_to: "10.100.100.101"
|
|
when: inventory_hostname == groups['keystone_all'][0]
|
|
tags:
|
|
- aodh-rabbitmq
|
|
- aodh-rabbitmq-vhost
|
|
- name: Ensure rabbitmq user
|
|
rabbitmq_user:
|
|
user: "{{ keystone_rabbitmq_userid }}"
|
|
password: "{{ keystone_rabbitmq_password }}"
|
|
vhost: "{{ keystone_rabbitmq_vhost }}"
|
|
configure_priv: ".*"
|
|
read_priv: ".*"
|
|
write_priv: ".*"
|
|
state: "present"
|
|
delegate_to: "10.100.100.101"
|
|
when: inventory_hostname == groups['keystone_all'][0]
|
|
tags:
|
|
- aodh-rabbitmq
|
|
- aodh-rabbitmq-user
|
|
- name: Create DB for service
|
|
mysql_db:
|
|
login_user: "root"
|
|
login_password: "secrete"
|
|
login_host: "localhost"
|
|
name: "{{ keystone_galera_database }}"
|
|
state: "present"
|
|
delegate_to: "10.100.100.101"
|
|
when: inventory_hostname == groups['keystone_all'][0]
|
|
tags:
|
|
- mysql-db-setup
|
|
- name: Grant access to the DB for the service
|
|
mysql_user:
|
|
login_user: "root"
|
|
login_password: "secrete"
|
|
login_host: "localhost"
|
|
name: "{{ keystone_galera_database }}"
|
|
password: "{{ keystone_container_mysql_password }}"
|
|
host: "{{ item }}"
|
|
state: "present"
|
|
priv: "{{ keystone_galera_database }}.*:ALL"
|
|
with_items:
|
|
- "localhost"
|
|
- "%"
|
|
delegate_to: "10.100.100.101"
|
|
when: inventory_hostname == groups['keystone_all'][0]
|
|
tags:
|
|
- mysql-db-setup
|
|
roles:
|
|
- role: "{{ rolename | basename }}"
|
|
vars:
|
|
external_lb_vip_address: 10.100.100.102
|
|
internal_lb_vip_address: 10.100.100.102
|
|
keystone_galera_address: 10.100.100.101
|
|
keystone_galera_database: keystone
|
|
keystone_venv_tag: "testing"
|
|
keystone_developer_mode: true
|
|
keystone_git_install_branch: a55128044f763f5cfe2fdc57c738eaca97636448
|
|
keystone_auth_admin_token: "SuperSecreteTestToken"
|
|
keystone_auth_admin_password: "SuperSecretePassword"
|
|
keystone_service_password: "secrete"
|
|
keystone_rabbitmq_password: "secrete"
|
|
keystone_container_mysql_password: "SuperSecrete"
|
|
keystone_rabbitmq_port: 5671
|
|
keystone_rabbitmq_userid: keystone
|
|
keystone_rabbitmq_vhost: /keystone
|
|
keystone_rabbitmq_servers: 10.100.100.101
|
|
keystone_rabbitmq_use_ssl: false
|
|
galera_client_drop_config_file: false
|