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
|
|
#
|
|
# https://docs.openstack.org/ironic/latest/contributor/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_ipmitool, agent_ipmitool, 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
|