ironic-10.1.1/ 0000775 0001751 0001751 00000000000 13243617733 013112 5 ustar zuul zuul 0000000 0000000 ironic-10.1.1/tools/ 0000775 0001751 0001751 00000000000 13243617733 014252 5 ustar zuul zuul 0000000 0000000 ironic-10.1.1/tools/check-releasenotes.py 0000777 0001751 0001751 00000002742 13243617464 020403 0 ustar zuul zuul 0000000 0000000 #!/usr/bin/python -tt
# Copyright (c) 2017 Intel Corporation
#
# 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.
from __future__ import print_function
import os
import re
import sys
RELEASE_NOTES_DIR = "releasenotes/notes/"
IGNORE_FILES = (
'releasenotes/notes/fix-get-deploy-info-port.yaml', # Newton 6.0.0
'releasenotes/notes/fix-mitaka-ipa-iscsi.yaml', # Newton 6.0.0
)
def main():
return_code = 0
for filename in os.listdir(RELEASE_NOTES_DIR):
file_path = os.path.join(RELEASE_NOTES_DIR, filename)
if not os.path.isfile(file_path):
continue
if not file_path.endswith('.yaml'):
continue
if file_path in IGNORE_FILES:
continue
if not re.search(r'.*-[0-9a-f]{16}\.yaml', file_path):
return_code = 1
print("Error: Release notes file: {!r} was not created with "
"'reno new'".format(file_path))
return return_code
if '__main__' == __name__:
sys.exit(main())
ironic-10.1.1/tools/run_bashate.sh 0000777 0001751 0001751 00000002054 13243617464 017110 0 ustar zuul zuul 0000000 0000000 #!/bin/bash
#
# 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.
find "$@" -not \( -type d -name .?\* -prune \) \
-type f \
\( \
-wholename \*/devstack/lib/ironic -or \
-name \*.sh \
\) \
-print0 | xargs -0 bashate -v -iE006 -eE005,E042
ironic-10.1.1/tools/policy/ 0000775 0001751 0001751 00000000000 13243617733 015551 5 ustar zuul zuul 0000000 0000000 ironic-10.1.1/tools/policy/ironic-policy-generator.conf 0000666 0001751 0001751 00000000115 13243617464 023164 0 ustar zuul zuul 0000000 0000000 [DEFAULT]
output_file = etc/ironic/policy.json.sample
namespace = ironic.api
ironic-10.1.1/tools/flake8wrap.sh 0000777 0001751 0001751 00000000735 13243617464 016665 0 ustar zuul zuul 0000000 0000000 #!/bin/bash
#
# A simple wrapper around flake8 which makes it possible
# to ask it to only verify files changed in the current
# git HEAD patch.
#
# Intended to be invoked via tox:
#
# tox -epep8 -- -HEAD
#
if test "x$1" = "x-HEAD" ; then
shift
files=$(git diff --name-only HEAD~1 | tr '\n' ' ')
echo "Running flake8 on ${files}"
diff -u --from-file /dev/null ${files} | flake8 --diff "$@"
else
echo "Running flake8 on all files"
exec flake8 "$@"
fi
ironic-10.1.1/tools/config/ 0000775 0001751 0001751 00000000000 13243617733 015517 5 ustar zuul zuul 0000000 0000000 ironic-10.1.1/tools/config/ironic-config-generator.conf 0000666 0001751 0001751 00000001112 13243617464 023076 0 ustar zuul zuul 0000000 0000000 [DEFAULT]
output_file = etc/ironic/ironic.conf.sample
wrap_width = 62
namespace = ironic
namespace = ironic_lib.disk_utils
namespace = ironic_lib.disk_partitioner
namespace = ironic_lib.metrics
namespace = ironic_lib.metrics_statsd
namespace = ironic_lib.utils
namespace = oslo.db
namespace = oslo.messaging
namespace = oslo.middleware.cors
namespace = oslo.concurrency
namespace = oslo.policy
namespace = oslo.log
namespace = oslo.service.service
namespace = oslo.service.periodic_task
namespace = oslo.service.sslutils
namespace = osprofiler
namespace = keystonemiddleware.auth_token
ironic-10.1.1/tools/config/check_uptodate.sh 0000777 0001751 0001751 00000001541 13243617464 021044 0 ustar zuul zuul 0000000 0000000 #!/usr/bin/env bash
PROJECT_NAME=${PROJECT_NAME:-ironic}
CFGFILE_NAME=${PROJECT_NAME}.conf.sample
OSLO_CFGFILE_OPTION=${OSLO_CFGFILE_OPTION:-tools/config/ironic-config-generator.conf}
if [ -e etc/${PROJECT_NAME}/${CFGFILE_NAME} ]; then
CFGFILE=etc/${PROJECT_NAME}/${CFGFILE_NAME}
elif [ -e etc/${CFGFILE_NAME} ]; then
CFGFILE=etc/${CFGFILE_NAME}
else
echo "${0##*/}: can not find config file"
exit 1
fi
TEMPDIR=`mktemp -d /tmp/${PROJECT_NAME}.XXXXXX`
trap "rm -rf $TEMPDIR" EXIT
oslo-config-generator --config-file=${OSLO_CFGFILE_OPTION} --output-file ${TEMPDIR}/${CFGFILE_NAME}
if [ $? != 0 ]; then
exit 1
fi
if ! diff -u ${TEMPDIR}/${CFGFILE_NAME} ${CFGFILE}; then
echo "${0##*/}: ${PROJECT_NAME}.conf.sample is not up to date."
echo "${0##*/}: Please run oslo-config-generator --config-file=${OSLO_CFGFILE_OPTION}"
exit 1
fi
ironic-10.1.1/tools/__init__.py 0000666 0001751 0001751 00000000000 13243617464 016354 0 ustar zuul zuul 0000000 0000000 ironic-10.1.1/tools/states_to_dot.py 0000777 0001751 0001751 00000011032 13243617464 017502 0 ustar zuul zuul 0000000 0000000 #!/usr/bin/env python
# Copyright (C) 2014 Yahoo! Inc. All Rights Reserved.
#
# 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.
import optparse
import os
import sys
from automaton.converters import pydot
from ironic.common import states
top_dir = os.path.abspath(os.path.join(os.path.dirname(__file__),
os.pardir))
sys.path.insert(0, top_dir)
def print_header(text):
print("*" * len(text))
print(text)
print("*" * len(text))
def map_color(text, key='fontcolor'):
"""Map the text to a color.
The text is mapped to a color.
:param text: string of text to be mapped to a color. 'error' and
'fail' in the text will map to 'red'.
:param key: in returned dictionary, the key to use that corresponds to
the color
:returns: A dictionary with one entry, key = color. If no color is
associated with the text, an empty dictionary.
"""
# If the text contains 'error'/'fail' then we'll return red...
if 'error' in text or 'fail' in text:
return {key: 'red'}
else:
return {}
def main():
parser = optparse.OptionParser()
parser.add_option("-f", "--file", dest="filename",
help="write output to FILE", metavar="FILE")
parser.add_option("-T", "--format", dest="format",
help="output in given format (default: png)",
default='png')
parser.add_option("--no-labels", dest="labels",
help="do not include labels",
action='store_false', default=True)
(options, args) = parser.parse_args()
if options.filename is None:
options.filename = 'states.%s' % options.format
def node_attrs(state):
"""Attributes used for drawing the nodes (states).
The user can perform actions on stable states (and in a few other
cases), so we distinguish the stable states from the other states by
highlighting the node. Non-stable states are labelled with gray.
This is a callback method used by pydot.convert().
:param state: name of state
:returns: A dictionary with graphic attributes used for displaying
the state.
"""
attrs = map_color(state)
if source.is_stable(state):
attrs['penwidth'] = 1.7
else:
if 'fontcolor' not in attrs:
attrs['fontcolor'] = 'gray'
return attrs
def edge_attrs(start_state, event, end_state):
"""Attributes used for drawing the edges (transitions).
There are two types of transitions; the ones that the user can
initiate and the ones that are done internally by the conductor.
The user-initiated ones are shown with '(via API'); the others are
in gray.
This is a callback method used by pydot.convert().
:param start_state: name of the start state
:param event: the event, a string
:param end_state: name of the end state (unused)
:returns: A dictionary with graphic attributes used for displaying
the transition.
"""
if not options.labels:
return {}
translations = {'delete': 'deleted', 'deploy': 'active'}
attrs = {}
attrs['fontsize'] = 12
attrs['label'] = translations.get(event, event)
if (source.is_stable(start_state) or 'fail' in start_state
or event in ('abort', 'delete')):
attrs['label'] += " (via API)"
else:
attrs['fontcolor'] = 'gray'
return attrs
source = states.machine
graph_name = '"Ironic states"'
graph_attrs = {'size': 0}
g = pydot.convert(source, graph_name, graph_attrs=graph_attrs,
node_attrs_cb=node_attrs, edge_attrs_cb=edge_attrs)
print_header(graph_name)
print(g.to_string().strip())
g.write(options.filename, format=options.format)
print_header("Created %s at '%s'" % (options.format, options.filename))
if __name__ == '__main__':
main()
ironic-10.1.1/tools/test-setup.sh 0000777 0001751 0001751 00000003707 13243617464 016740 0 ustar zuul zuul 0000000 0000000 #!/bin/bash -xe
# This script will be run by OpenStack CI before unit tests are run,
# it sets up the test system as needed.
# Developers should setup their test systems in a similar way.
# This setup needs to be run as a user that can run sudo.
# The root password for the MySQL database; pass it in via
# MYSQL_ROOT_PW.
DB_ROOT_PW=${MYSQL_ROOT_PW:-insecure_slave}
# This user and its password are used by the tests, if you change it,
# your tests might fail.
DB_USER=openstack_citest
DB_PW=openstack_citest
sudo -H mysqladmin -u root password $DB_ROOT_PW
# It's best practice to remove anonymous users from the database. If
# a anonymous user exists, then it matches first for connections and
# other connections from that host will not work.
sudo -H mysql -u root -p$DB_ROOT_PW -h localhost -e "
DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.*
TO '$DB_USER'@'%' identified by '$DB_PW' WITH GRANT OPTION;"
# Now create our database.
mysql -u $DB_USER -p$DB_PW -h 127.0.0.1 -e "
SET default_storage_engine=MYISAM;
DROP DATABASE IF EXISTS openstack_citest;
CREATE DATABASE openstack_citest CHARACTER SET utf8;"
# Same for PostgreSQL
# The root password for the PostgreSQL database; pass it in via
# POSTGRES_ROOT_PW.
DB_ROOT_PW=${POSTGRES_ROOT_PW:-insecure_slave}
# Setup user
root_roles=$(sudo -H -u postgres psql -t -c "
SELECT 'HERE' from pg_roles where rolname='$DB_USER'")
if [[ ${root_roles} == *HERE ]];then
sudo -H -u postgres psql -c "ALTER ROLE $DB_USER WITH SUPERUSER LOGIN PASSWORD '$DB_PW'"
else
sudo -H -u postgres psql -c "CREATE ROLE $DB_USER WITH SUPERUSER LOGIN PASSWORD '$DB_PW'"
fi
# Store password for tests
cat << EOF > $HOME/.pgpass
*:*:*:$DB_USER:$DB_PW
EOF
chmod 0600 $HOME/.pgpass
# Now create our database
psql -h 127.0.0.1 -U $DB_USER -d template1 -c "DROP DATABASE IF EXISTS openstack_citest"
createdb -h 127.0.0.1 -U $DB_USER -l C -T template0 -E utf8 openstack_citest
ironic-10.1.1/tools/with_venv.sh 0000777 0001751 0001751 00000000332 13243617464 016623 0 ustar zuul zuul 0000000 0000000 #!/bin/bash
tools_path=${tools_path:-$(dirname $0)}
venv_path=${venv_path:-${tools_path}}
venv_dir=${venv_name:-/../.venv}
TOOLS=${tools_path}
VENV=${venv:-${venv_path}/${venv_dir}}
source ${VENV}/bin/activate && "$@"
ironic-10.1.1/setup.py 0000666 0001751 0001751 00000002006 13243617464 014625 0 ustar zuul zuul 0000000 0000000 # Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
#
# 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.
# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
import setuptools
# In python < 2.7.4, a lazy loading of package `pbr` will break
# setuptools if some other modules registered functions in `atexit`.
# solution from: http://bugs.python.org/issue15881#msg170215
try:
import multiprocessing # noqa
except ImportError:
pass
setuptools.setup(
setup_requires=['pbr>=2.0.0'],
pbr=True)
ironic-10.1.1/etc/ 0000775 0001751 0001751 00000000000 13243617733 013665 5 ustar zuul zuul 0000000 0000000 ironic-10.1.1/etc/apache2/ 0000775 0001751 0001751 00000000000 13243617733 015170 5 ustar zuul zuul 0000000 0000000 ironic-10.1.1/etc/apache2/ironic 0000666 0001751 0001751 00000002571 13243617463 016405 0 ustar zuul zuul 0000000 0000000 # 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.
# This is an example Apache2 configuration file for using the
# Ironic API through mod_wsgi. This version assumes you are
# running devstack to configure the software, and PBR has generated
# and installed the ironic-api-wsgi script while installing ironic.
Listen 6385
WSGIDaemonProcess ironic user=stack group=stack threads=10 display-name=%{GROUP}
WSGIScriptAlias / /usr/local/bin/ironic-api-wsgi
SetEnv APACHE_RUN_USER stack
SetEnv APACHE_RUN_GROUP stack
WSGIProcessGroup ironic
ErrorLog /var/log/apache2/ironic_error.log
LogLevel info
CustomLog /var/log/apache2/ironic_access.log combined
WSGIProcessGroup ironic
WSGIApplicationGroup %{GLOBAL}
AllowOverride All
Require all granted
ironic-10.1.1/etc/ironic/ 0000775 0001751 0001751 00000000000 13243617733 015150 5 ustar zuul zuul 0000000 0000000 ironic-10.1.1/etc/ironic/README-policy.yaml.txt 0000666 0001751 0001751 00000000404 13243617463 021104 0 ustar zuul zuul 0000000 0000000 To generate the sample policy.yaml file, run the following command from the top
level of the repo:
tox -egenpolicy
For a pre-generated example of the latest policy.yaml, see:
https://docs.openstack.org/ironic/latest/configuration/sample-policy.html
ironic-10.1.1/etc/ironic/rootwrap.conf 0000666 0001751 0001751 00000001650 13243617463 017700 0 ustar zuul zuul 0000000 0000000 # Configuration for ironic-rootwrap
# This file should be owned by (and only writable by) the root user
[DEFAULT]
# List of directories to load filter definitions from (separated by ',').
# These directories MUST all be only writable by root !
filters_path=/etc/ironic/rootwrap.d,/usr/share/ironic/rootwrap
# List of directories to search executables in, in case filters do not
# explicitly specify a full path (separated by ',')
# If not specified, defaults to system PATH environment variable.
# These directories MUST all be only writable by root !
exec_dirs=/sbin,/usr/sbin,/bin,/usr/bin
# Enable logging to syslog
# Default value is False
use_syslog=False
# Which syslog facility to use.
# Valid values include auth, authpriv, syslog, user0, user1...
# Default value is 'syslog'
syslog_log_facility=syslog
# Which messages to log.
# INFO means log all usage
# ERROR means only log unsuccessful attempts
syslog_log_level=ERROR
ironic-10.1.1/etc/ironic/api_audit_map.conf.sample 0000666 0001751 0001751 00000001343 13243617463 022076 0 ustar zuul zuul 0000000 0000000 [DEFAULT]
# default target endpoint type
# should match the endpoint type defined in service catalog
target_endpoint_type = None
# possible end path of API requests
# path of api requests for CADF target typeURI
# Just need to include top resource path to identify class
# of resources. Ex: Log audit event for API requests
# path containing "nodes" keyword and node uuid.
[path_keywords]
nodes = node
drivers = driver
chassis = chassis
ports = port
states = state
power = None
provision = None
maintenance = None
validate = None
boot_device = None
supported = None
console = None
vendor_passthru = vendor_passthru
# map endpoint type defined in service catalog to CADF typeURI
[service_endpoints]
baremetal = service/compute/baremetal
ironic-10.1.1/etc/ironic/README-ironic.conf.txt 0000666 0001751 0001751 00000000404 13243617463 021053 0 ustar zuul zuul 0000000 0000000 To generate the sample ironic.conf file, run the following command from the top
level of the repo:
tox -egenconfig
For a pre-generated example of the latest ironic.conf, see:
https://docs.openstack.org/ironic/latest/configuration/sample-config.html
ironic-10.1.1/etc/ironic/rootwrap.d/ 0000775 0001751 0001751 00000000000 13243617733 017247 5 ustar zuul zuul 0000000 0000000 ironic-10.1.1/etc/ironic/rootwrap.d/ironic-images.filters 0000666 0001751 0001751 00000000324 13243617463 023370 0 ustar zuul zuul 0000000 0000000 # ironic-rootwrap command filters to manipulate images
# This file should be owned by (and only-writable by) the root user
[Filters]
# ironic/common/images.py: 'qemu-img'
qemu-img: CommandFilter, qemu-img, root
ironic-10.1.1/etc/ironic/rootwrap.d/ironic-utils.filters 0000666 0001751 0001751 00000000470 13243617463 023265 0 ustar zuul zuul 0000000 0000000 # ironic-rootwrap command filters for disk manipulation
# This file should be owned by (and only-writable by) the root user
[Filters]
# ironic/drivers/modules/deploy_utils.py
iscsiadm: CommandFilter, iscsiadm, root
# ironic/common/utils.py
mount: CommandFilter, mount, root
umount: CommandFilter, umount, root
ironic-10.1.1/etc/ironic/rootwrap.d/ironic-lib.filters 0000666 0001751 0001751 00000001740 13243617463 022674 0 ustar zuul zuul 0000000 0000000 # An ironic-lib.filters to be used with rootwrap command.
# The following commands should be used in filters for disk manipulation.
# This file should be owned by (and only-writable by) the root user.
# NOTE: this file is a copy of ironic-lib.filters from the ironic-lib
# repository that should ultimately be remove. At this point, we still
# need it to avoid gate breakage and preserve compatibily with existing
# installation.
[Filters]
# ironic_lib/disk_utils.py
blkid: CommandFilter, blkid, root
blockdev: CommandFilter, blockdev, root
hexdump: CommandFilter, hexdump, root
lsblk: CommandFilter, lsblk, root
qemu-img: CommandFilter, qemu-img, root
wipefs: CommandFilter, wipefs, root
sgdisk: CommandFilter, sgdisk, root
partprobe: CommandFilter, partprobe, root
# ironic_lib/utils.py
mkswap: CommandFilter, mkswap, root
mkfs: CommandFilter, mkfs, root
dd: CommandFilter, dd, root
# ironic_lib/disk_partitioner.py
fuser: CommandFilter, fuser, root
parted: CommandFilter, parted, root
ironic-10.1.1/README.rst 0000666 0001751 0001751 00000002511 13243617463 014602 0 ustar zuul zuul 0000000 0000000 ========================
Team and repository tags
========================
.. image:: https://governance.openstack.org/badges/ironic.svg
:target: https://governance.openstack.org/reference/tags/index.html
.. Change things from this point on
======
Ironic
======
Ironic consists of an API and plug-ins for managing and provisioning
physical machines in a security-aware and fault-tolerant manner. It can be
used with nova as a hypervisor driver, or standalone service using bifrost.
By default, it will use PXE and IPMI to interact with bare metal machines.
Ironic also supports vendor-specific plug-ins which may implement additional
functionality.
Ironic is distributed under the terms of the Apache License, Version 2.0. The
full terms and conditions of this license are detailed in the LICENSE file.
Project resources
~~~~~~~~~~~~~~~~~
* Documentation: https://docs.openstack.org/ironic/latest
* Source: https://git.openstack.org/cgit/openstack/ironic
* Bugs: https://bugs.launchpad.net/ironic
* Wiki: https://wiki.openstack.org/wiki/Ironic
* APIs: https://developer.openstack.org/api-ref/baremetal/index.html
Project status, bugs, and requests for feature enhancements (RFEs) are tracked
on Launchpad:
https://launchpad.net/ironic
For information on how to contribute to ironic, see
https://docs.openstack.org/ironic/latest/contributor
ironic-10.1.1/vagrant.yaml 0000666 0001751 0001751 00000012675 13243617464 015456 0 ustar zuul zuul 0000000 0000000 ---
###############################################################################
# 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
ironic-10.1.1/doc/ 0000775 0001751 0001751 00000000000 13243617733 013657 5 ustar zuul zuul 0000000 0000000 ironic-10.1.1/doc/source/ 0000775 0001751 0001751 00000000000 13243617733 015157 5 ustar zuul zuul 0000000 0000000 ironic-10.1.1/doc/source/images/ 0000775 0001751 0001751 00000000000 13243617733 016424 5 ustar zuul zuul 0000000 0000000 ironic-10.1.1/doc/source/images/logical_architecture.png 0000666 0001751 0001751 00000112305 13243617463 023312 0 ustar zuul zuul 0000000 0000000 PNG
IHDR M sRGB gAMA a pHYs + ZIDATx^o]}'G3ƥLIlj.[MGjXāJ$p)v@P\yQ}Q21!~a3(ȃ[.2v@IGkἸQ2Z{u9ph|Zϟom|Ⱦ/ @ @ z @ @ !ޅ@ @ )a @ @ !5@ @ )a @ @ !5@ @ )a @ @ !5@ @ )a @ @ !5@ @ )a @ @ !5@ @ )a @ @ !5@ @ )a @ @ !5@ @ )a @ @ !5@ @ )a @ @ !5@ @ )a @ @ !5@ @ )a @ @ !5@ @ )a @ @ !5@ @ )a @ @ !5@ @ )a @ @ !5@ @ )a^
:x;