05f4a64aed
This adds the CORS support middleware to Ironic, allowing a deployer to optionally configure rules under which a javascript client may break the single-origin policy and access the API directly. OpenStack Spec: https://review.openstack.org/#/c/179866/ Oslo_Middleware Docs: http://docs.openstack.org/developer/oslo.middleware/cors.html OpenStack Cloud Admin Guide Documentation: http://docs.openstack.org/admin-guide-cloud/cross_project_cors.html Co-Authored-By: Devananda van der Veen <devananda.vdv@gmail.com> Depends-on: I2deed897f8f9ef87e4a74227c4fcea9afdb151e8 Change-Id: Ic55305607e44069d893baf2a261d5fe7da777303
160 lines
5.4 KiB
YAML
160 lines
5.4 KiB
YAML
---
|
|
###############################################################################
|
|
# This ansible playbook installs all supporting software necessary to run the
|
|
# ironic service locally into the vagrant VM attached. Its intent is to provide
|
|
# a quickstart development environment that doesn't pollute an engineer's own
|
|
# machine.
|
|
#
|
|
# The vagrant vm's IP address is assumed to be 192.168.99.11
|
|
#
|
|
# http://docs.openstack.org/developer/ironic/dev/dev-quickstart.html#exercising-the-services-locally
|
|
#
|
|
- hosts: ironic
|
|
sudo: yes
|
|
tasks:
|
|
############################################################################
|
|
# APT Updates
|
|
############################################################################
|
|
# Make sure our VM's software is ~@Latest
|
|
- name: Apt Update
|
|
apt: update_cache=yes
|
|
upgrade=dist
|
|
cache_valid_time=86400
|
|
|
|
# Reboot if required.
|
|
- name: Reboot system if required
|
|
command: shutdown -r now 'Rebooting to complete system upgrade'
|
|
removes=/var/run/reboot-required
|
|
register: rebooted
|
|
- name: Wait for VM Reboot.
|
|
sudo: no
|
|
local_action: wait_for
|
|
port=22
|
|
host="{{ip}}"
|
|
search_regex=OpenSSH
|
|
delay=10
|
|
timeout=900
|
|
when: rebooted.changed
|
|
|
|
############################################################################
|
|
# Install all the needed packages in one go.
|
|
############################################################################
|
|
- name: Install Required Packages
|
|
apt: name={{item}}
|
|
state=present
|
|
with_items:
|
|
- rabbitmq-server
|
|
- python-mysqldb
|
|
- mysql-server
|
|
- mysql-client
|
|
|
|
############################################################################
|
|
# Configure rabbitmq.
|
|
############################################################################
|
|
- name: Ensure rabbitmq is running
|
|
service: name=rabbitmq-server
|
|
state=started
|
|
enabled=yes
|
|
- name: Add ironic RabbitMQ user
|
|
rabbitmq_user: user=ironic
|
|
password=ironic
|
|
vhost=/
|
|
configure_priv=.*
|
|
read_priv=.*
|
|
write_priv=.*
|
|
state=present
|
|
|
|
############################################################################
|
|
# Configure mysql.
|
|
############################################################################
|
|
- name: Configure MySQL
|
|
lineinfile: dest=/etc/mysql/my.cnf
|
|
line="bind-address={{ip}}"
|
|
regexp="^bind\-address"
|
|
notify: Restart MySQL
|
|
- name: Create MySQL Database
|
|
mysql_db: name=ironic state=present
|
|
- name: Create ironic MySQL user
|
|
mysql_user: name=ironic
|
|
password=ironic
|
|
host={{item}}
|
|
priv=ironic.*:ALL
|
|
state=present
|
|
with_items:
|
|
- localhost
|
|
- "%"
|
|
- name: Ensure mysql is running
|
|
service: name=mysql
|
|
state=started
|
|
enabled=yes
|
|
|
|
############################################################################
|
|
# Create ironic.conf.local configuration.
|
|
############################################################################
|
|
- name: Update local configuration with vagrant parameters.
|
|
sudo: no
|
|
local_action: ini_file dest=etc/ironic/ironic.conf.local
|
|
section="{{item.section}}"
|
|
option="{{item.option}}"
|
|
value="{{item.value}}"
|
|
with_items:
|
|
- {
|
|
section: 'glance',
|
|
option: 'auth_strategy', value: 'noauth'
|
|
}
|
|
- {
|
|
section: 'neutron',
|
|
option: 'auth_strategy', value: 'noauth'
|
|
}
|
|
- {
|
|
section: 'database',
|
|
option: 'connection', value: "mysql+pymysql://ironic:ironic@{{ip}}/ironic"
|
|
}
|
|
- {
|
|
section: 'DEFAULT',
|
|
option: 'auth_strategy', value: 'noauth'
|
|
}
|
|
- {
|
|
section: 'DEFAULT',
|
|
option: 'enabled_drivers', value: 'pxe_ssh, agent_ssh, fake'
|
|
# All other testing drivers require add'l packages
|
|
# and should be enabled locally, if desired
|
|
}
|
|
- {
|
|
section: 'DEFAULT',
|
|
option: 'pecan_debug', value: 'true'
|
|
}
|
|
- {
|
|
section: 'DEFAULT',
|
|
option: 'verbose', value: 'true'
|
|
}
|
|
- {
|
|
section: 'DEFAULT',
|
|
option: 'debug', value: 'true'
|
|
}
|
|
- {
|
|
section: 'oslo_messaging_rabbit',
|
|
option: 'rabbit_host', value: "{{ip}}"
|
|
}
|
|
- {
|
|
section: 'oslo_messaging_rabbit',
|
|
option: 'rabbit_userid', value: "ironic"
|
|
}
|
|
- {
|
|
section: 'oslo_messaging_rabbit',
|
|
option: 'rabbit_password', value: "ironic"
|
|
}
|
|
- { # CORS Domain For Ironic-Webclient's dev server.
|
|
section: 'cors',
|
|
option: 'allowed_origin', value: "http://localhost:8000"
|
|
}
|
|
|
|
#############################################################################
|
|
# Handlers
|
|
#############################################################################
|
|
handlers:
|
|
- name: Restart MySQL
|
|
service: name=mysql
|
|
state=restarted
|
|
enabled=yes
|