
This patch updates the tox.ini the same bashate exceptions as are currently in the OpenStack-Ansible playbook repo. It also ensures that the linters and all lint targets work appropriately and normalises the tox.ini configuration to use uniform formatting. The use of ansible.cfg is removed as there is no way of being certain which paths can be used without reverting to an ugly sed hack in the commands. This is why it is preferred to make use of environment variables which make use of tox's default substitutions instead. It's a more reliable way of achieving the goal for the purpose of gating and testing. The switch to using a git clone instead of ansible-galaxy to download the plugins is due to the path spec not being able to work in Ansible 2.x. [1] [1] https://github.com/ansible/ansible/issues/13563 Change-Id: I077c5b79a95e78fd81c33382843273893d48bbb6
201 lines
6.9 KiB
YAML
201 lines
6.9 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
|
|
pre_tasks:
|
|
- 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.100
|
|
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
|
|
- 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,galera_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.255.0"
|
|
type: "veth"
|
|
physical_host: localhost
|
|
container_name: "{{ item.name }}"
|
|
with_items:
|
|
- { name: "container1", service: "service1", address: "10.100.100.101" }
|
|
- { name: "container2", service: "service2", address: "10.100.100.102" }
|
|
- { name: "container3", service: "service3", address: "10.100.100.103" }
|
|
|
|
- name: Playbook for pre-role testing 2of2
|
|
hosts: localhost
|
|
connection: local
|
|
gather_facts: true
|
|
roles:
|
|
- role: "openstack_hosts"
|
|
|
|
- name: Playbook for pre-role testing 2of2
|
|
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: galera_all
|
|
serial: 1
|
|
user: root
|
|
gather_facts: true
|
|
vars:
|
|
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" }
|
|
roles:
|
|
- role: "{{ rolename | basename }}"
|
|
galera_server_id: "{{ inventory_hostname | string_2_int }}"
|
|
|
|
- name: Playbook for testing
|
|
hosts: galera_all
|
|
user: root
|
|
gather_facts: true
|
|
vars:
|
|
galera_root_password: secrete
|
|
galera_root_user: root
|
|
tasks:
|
|
- name: Create DB for service on 10.100.100.101
|
|
mysql_db:
|
|
login_user: "{{ galera_root_user }}"
|
|
login_password: "{{ galera_root_password }}"
|
|
login_host: "10.100.100.101"
|
|
name: "OSA-test"
|
|
state: "present"
|
|
tags:
|
|
- neutron-db-setup
|
|
when: ansible_ssh_host == '10.100.100.101'
|
|
- name: Grant access to the DB on 10.100.100.102
|
|
mysql_user:
|
|
login_user: "{{ galera_root_user }}"
|
|
login_password: "{{ galera_root_password }}"
|
|
login_host: "10.100.100.102"
|
|
name: "osa-tester"
|
|
password: "tester-secrete"
|
|
host: "{{ item }}"
|
|
state: "present"
|
|
priv: "OSA-test.*:ALL"
|
|
with_items:
|
|
- "localhost"
|
|
- "%"
|
|
tags:
|
|
- neutron-db-setup
|
|
when: ansible_ssh_host == '10.100.100.102'
|
|
- name: check cluster state incoming addresses
|
|
command: |
|
|
mysql -h {{ ansible_ssh_host }} \
|
|
-p"{{ galera_root_password }}" \
|
|
-e "show status like 'wsrep_incoming_addresses';" \
|
|
--silent \
|
|
--skip-column-names
|
|
register: wsrep_incoming_addresses
|
|
- name: check cluster state
|
|
command: |
|
|
mysql -h {{ ansible_ssh_host }} \
|
|
-p"{{ galera_root_password }}" \
|
|
-e "show status like 'wsrep_local_state_comment';" \
|
|
--silent \
|
|
--skip-column-names
|
|
register: wsrep_local_state_comment
|
|
- name: check cluster state
|
|
command: |
|
|
mysql -h {{ ansible_ssh_host }} \
|
|
-p"{{ galera_root_password }}" \
|
|
-e "show status like 'wsrep_evs_state';" \
|
|
--silent \
|
|
--skip-column-names
|
|
register: wsrep_evs_state
|
|
- name: Check contents
|
|
assert:
|
|
that:
|
|
- "'Synced' in wsrep_local_state_comment.stdout"
|
|
- "'OPERATIONAL' in wsrep_evs_state.stdout"
|
|
- "'10.100.100.101' in wsrep_incoming_addresses.stdout"
|
|
- "'10.100.100.102' in wsrep_incoming_addresses.stdout"
|
|
- "'10.100.100.103' in wsrep_incoming_addresses.stdout"
|