File ardana-ironic-8.0+git.1571845225.006843d.obscpio of Package ardana-ironic
07070100000000000081A40000000000000000000000015DB0746900000082000000000000000000000000000000000000003400000000ardana-ironic-8.0+git.1571845225.006843d/.gitreview[gerrit]
host=gerrit.suse.provo.cloud
port=29418
project=ardana/ironic-ansible.git
defaultremote=ardana
defaultbranch=stable/pike
07070100000001000081A40000000000000000000000015DB074690000279F000000000000000000000000000000000000003100000000ardana-ironic-8.0+git.1571845225.006843d/LICENSE
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
07070100000002000081A40000000000000000000000015DB07469000006D4000000000000000000000000000000000000003F00000000ardana-ironic-8.0+git.1571845225.006843d/_ironic-configure.yml#
# (c) Copyright 2015-2017 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
- hosts: IRN-API
roles:
- ironic-pre-configure
tasks:
- include: roles/ironic-pre-configure/tasks/keystone_conf.yml
ansible_python_interpreter: >
"{{ KEY_CLI.vars.keystone_client_python_interpreter }}"
- hosts: IRN-API
roles:
- ironic-api
tasks:
- include: roles/ironic-api/tasks/configure.yml
- hosts: IRN-CND
roles:
- ironic-common
tasks:
- include: roles/ironic-common/tasks/check-provider-net.yml
- hosts: IRN-CND
roles:
- ironic-conductor
tasks:
- include: roles/ironic-conductor/tasks/swift_configure.yml
- include: roles/ironic-conductor/tasks/configure.yml
- hosts: IRN-CND
roles:
- ironic-post-configure
tasks:
- include: roles/ironic-post-configure/tasks/db_configure.yml
- hosts: IRN-CND--first-member
roles:
- ironic-common
tasks:
- include: roles/ironic-common/tasks/deploy-image-upload.yml
- hosts: IRN-CLI
roles:
- ironic-oneview-cli
tasks:
- include: roles/ironic-oneview-cli/tasks/configure.yml
when: ( 'IRN-API' in groups ) and ( ( groups['IRN-API'] | length ) > 0 )
07070100000003000081A40000000000000000000000015DB0746900000355000000000000000000000000000000000000003D00000000ardana-ironic-8.0+git.1571845225.006843d/_ironic-install.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
- hosts: IRN-API
roles:
- ironic-api
tasks:
- include: roles/ironic-api/tasks/install.yml
- hosts: IRN-CND
roles:
- ironic-conductor
tasks:
- include: roles/ironic-conductor/tasks/install.yml
07070100000004000081A40000000000000000000000015DB07469000003E4000000000000000000000000000000000000004000000000ardana-ironic-8.0+git.1571845225.006843d/_ironic-monitoring.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
- hosts: IRN-API:&MON-AGN
roles:
- ironic-monitoring
tasks:
- include: roles/ironic-monitoring/tasks/monasca_process_check.yml
- include: roles/ironic-monitoring/tasks/monasca_http_check.yml
- hosts: IRN-CND:&MON-AGN
roles:
- ironic-monitoring
tasks:
- include: roles/ironic-monitoring/tasks/monasca_process_check.yml
07070100000005000081A40000000000000000000000015DB07469000002E2000000000000000000000000000000000000004600000000ardana-ironic-8.0+git.1571845225.006843d/_ironic-schedule-restart.yml#
# (c) Copyright 2018 SUSE LLC
#
# 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.
#
---
# Schedule a restart of ironic services using ardana_notify_... variables
- hosts: all
tasks:
- include: roles/ironic-common/tasks/_schedule_restart.yml07070100000006000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000003000000000ardana-ironic-8.0+git.1571845225.006843d/config07070100000007000081A40000000000000000000000015DB074690000058B000000000000000000000000000000000000004400000000ardana-ironic-8.0+git.1571845225.006843d/config/ironic-symlinks.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
# The following relative symlinks are created under the
# my_cloud/config directory.
---
symlinks:
"ironic/ironic-api.conf.j2": "roles/ironic-common/templates/ironic-api.conf.j2"
"ironic/ironic-conductor.conf.j2": "roles/ironic-common/templates/ironic-conductor.conf.j2"
"ironic/ironic-api-logging.conf.j2": "roles/ironic-common/templates/ironic-api-logging.conf.j2"
"ironic/ironic-conductor-logging.conf.j2": "roles/ironic-common/templates/ironic-conductor-logging.conf.j2"
"ironic/ironic-rootwrap.j2": "roles/ironic-conductor/templates/ironic-rootwrap.j2"
"ironic/ironic.conf.j2": "roles/ironic-conductor/templates/ironic.conf.j2"
"ironic/map-file.j2": "roles/ironic-conductor/templates/map-file.j2"
"ironic/tftp.j2": "roles/ironic-conductor/templates/tftp.j2"
07070100000008000081A40000000000000000000000015DB0746900000468000000000000000000000000000000000000004400000000ardana-ironic-8.0+git.1571845225.006843d/ironic-cloud-configure.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
# Run on a control plane server to get access to configuration
# processor generated data.
# based on the example for Neutron
# Since ironic supports only flat network and will not have external-network,
# disable neutron-cloud-configure for now to avoid creation of external-network.
#- include: neutron-cloud-configure.yml
---
- hosts: IRN-CND--first-member
roles:
- ironic-cloud-configure
tasks:
- include: roles/ironic-cloud-configure/tasks/ironic-flavor-setup.yml
07070100000009000081A40000000000000000000000015DB07469000003AA000000000000000000000000000000000000003B00000000ardana-ironic-8.0+git.1571845225.006843d/ironic-deploy.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
- include: pbstart.yml
vars:
playbook_name: "ironic-deploy.yml"
- include: _ironic-install.yml
- include: _ironic-configure.yml
- include: ironic-stop.yml
- include: ironic-start.yml
- include: _ironic-monitoring.yml
- include: pbfinish.yml
vars:
playbook_name: "ironic-deploy.yml"
0707010000000A000081A40000000000000000000000015DB074690000039F000000000000000000000000000000000000005300000000ardana-ironic-8.0+git.1571845225.006843d/ironic-reconfigure-credentials-change.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
- include: _ironic-configure.yml
- hosts: IRN-API
roles:
- ironic-common
tasks:
- include: roles/ironic-common/tasks/keystone_change_pwd.yml
ansible_python_interpreter: >
"{{ KEY_CLI.vars.keystone_client_python_interpreter }}"
- include: ironic-start.yml
0707010000000B000081A40000000000000000000000015DB07469000002C2000000000000000000000000000000000000004000000000ardana-ironic-8.0+git.1571845225.006843d/ironic-reconfigure.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
- include: _ironic-configure.yml
- include: ironic-start.yml
0707010000000C000081A40000000000000000000000015DB0746900000289000000000000000000000000000000000000003C00000000ardana-ironic-8.0+git.1571845225.006843d/ironic-restart.yml#
# (c) Copyright 2018 SUSE LLC
#
# 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.
#
---
- include: _ironic-schedule-restart.yml
- include: ironic-start.yml
0707010000000D000081A40000000000000000000000015DB074690000035D000000000000000000000000000000000000003A00000000ardana-ironic-8.0+git.1571845225.006843d/ironic-start.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
- hosts: IRN-API
roles:
- ironic-api
tasks:
- include: roles/ironic-api/tasks/start.yml
- hosts: IRN-CND
serial: 1
roles:
- ironic-conductor
tasks:
- include: roles/ironic-conductor/tasks/start.yml
0707010000000E000081A40000000000000000000000015DB0746900000385000000000000000000000000000000000000003B00000000ardana-ironic-8.0+git.1571845225.006843d/ironic-status.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
- hosts: IRN-API
max_fail_percentage: 0
roles:
- ironic-api
tasks:
- include: roles/ironic-api/tasks/status.yml
- hosts: IRN-CND
max_fail_percentage: 0
roles:
- ironic-conductor
tasks:
- include: roles/ironic-conductor/tasks/status.yml
0707010000000F000081A40000000000000000000000015DB074690000035B000000000000000000000000000000000000003900000000ardana-ironic-8.0+git.1571845225.006843d/ironic-stop.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
- hosts: IRN-API
roles:
- ironic-api
tasks:
- include: roles/ironic-api/tasks/stop.yml
- hosts: IRN-CND
serial: 1
roles:
- ironic-conductor
tasks:
- include: roles/ironic-conductor/tasks/stop.yml
07070100000010000081A40000000000000000000000015DB074690000031A000000000000000000000000000000000000003C00000000ardana-ironic-8.0+git.1571845225.006843d/ironic-upgrade.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
- include: ironic-status.yml
- include: _ironic-install.yml
- include: ironic-stop.yml
- include: ironic-reconfigure.yml
- include: ironic-status.yml
07070100000011000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000003100000000ardana-ironic-8.0+git.1571845225.006843d/library07070100000012000081A40000000000000000000000015DB0746900000F86000000000000000000000000000000000000005300000000ardana-ironic-8.0+git.1571845225.006843d/library/calculate_blocks_and_blocksize.py#!/usr/bin/python
#
# (c) Copyright 2018 SUSE LLC
#
# 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.
#
ANSIBLE_METADATA = {
'metadata_version': '1.0',
'status': ['preview'],
'supported_by': 'SuSE'
}
DOCUMENTATION = '''
---
module: calculate_blocks_and_blocksize
short_description: Calculate the blocks and blocksize of a given file.
version_added: "1.9"
description:
- This action module will determine the blocks and blocksize of the
the given file. The algorithm is taken from
https://github.com/openSUSE/kiwi/blob/master/modules/KIWIImage.pm#L4549
It will return two integers. The first is the number of blocks and
the second is the blocksize for each block.
options:
filename:
description:
- The complete path the file in question
required: true
extends_documentation_fragment:
-
author:
- Guang Yee (guang.yee@suse.com)
'''
EXAMPLES = '''
- name: ironic-common | _suse_add_cert_iso | Calculate blocks and blocksize
calculate_blocks_and_blocksize:
file: "{{ openstack_ironic_image_gz }}"
register: calculate_blocks_and_blocksize_result
'''
RETURN = '''
blocks:
description: Number of blocks in the given file.
type: int
blocksize:
description: Size of each block
type: int
'''
from ansible.module_utils.basic import *
def calculate_blocks_and_blocksize(filename):
statinfo = os.stat(filename)
size = statinfo.st_size
factors_out = subprocess.check_output(['factor', str(size)])
factors = factors_out.split(':')[1].split()
blocksize = 1
for factor in factors:
factor = int(factor)
if blocksize * factor > 65464:
break
blocksize *= factor
blocks = size / blocksize
return (blocks, blocksize)
def run_module():
# define the available arguments/parameters that a user can pass to
# the module
module_args = dict(
filename=dict(type='str', required=True),
)
# seed the result dict in the object
# we primarily care about changed and state
# change is if this module effectively modified the target
# state will include any data that you want your module to pass back
# for consumption, for example, in a subsequent task
result = dict(
changed=False,
original_message='',
message='',
blocks=None,
blocksize=None
)
# the AnsibleModule object will be our abstraction working with Ansible
# this includes instantiation, a couple of common attr would be the
# args/params passed to the execution, as well as if the module
# supports check mode
module = AnsibleModule(
argument_spec=module_args,
supports_check_mode=True
)
# if the user is working with this module in only check mode we do not
# want to make any changes to the environment, just return the current
# state with no modifications
if module.check_mode:
return result
# manipulate or modify the state as needed (this is going to be the
# part where your module will do what it needs to do)
filename = module.params.get('filename')
try:
(blocks, blocksize) = calculate_blocks_and_blocksize(filename)
result['blocks'] = blocks
result['blocksize'] = blocksize
except Exception, e:
module.fail_json(msg=e.message)
else:
module.exit_json(**result)
def main():
run_module()
if __name__ == '__main__':
main()
07070100000013000041ED00000000000000000000000A5DB0746900000000000000000000000000000000000000000000002F00000000ardana-ironic-8.0+git.1571845225.006843d/roles07070100000014000041ED0000000000000000000000055DB0746900000000000000000000000000000000000000000000003A00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-api07070100000015000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004300000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-api/defaults07070100000016000081A40000000000000000000000015DB07469000002A8000000000000000000000000000000000000004C00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-api/defaults/main.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
ironic_component: "ironic-api"
07070100000017000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000003F00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-api/meta07070100000018000081A40000000000000000000000015DB07469000002A8000000000000000000000000000000000000004800000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-api/meta/main.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
dependencies:
- role: ironic-common07070100000019000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004000000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-api/tasks0707010000001A000081A40000000000000000000000015DB07469000004C6000000000000000000000000000000000000004E00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-api/tasks/configure.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
- include: ../../ironic-common/tasks/_set_directories.yml
vars:
ironic_pkg_result: "{{ ardana_notify_ironic_api_install_result }}"
# registers write_conf_result
- include: ../../ironic-common/tasks/_write_conf.yml
vars:
src: "ironic-api.conf.j2"
dest: "{{ ironic_service_conf_dir }}/ironic-api.conf"
become: yes
- name: ironic-api | configure | notify on ironic-api.conf change
command: /bin/true
register: ardana_notify_ironic_api_restart_required
when: write_conf_result.changed
- include: ../../ironic-common/tasks/configure.yml
become: yes
0707010000001B000081A40000000000000000000000015DB0746900000575000000000000000000000000000000000000004C00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-api/tasks/install.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
# Install ironic API
- name: ironic-api | install | update venv cache
become: yes
install_package:
cache: update
- name: ironic-api | install | install ironic-api service
become: yes
install_package:
name: ironic
service: ironic-api
state: present
activate: act_off
register: ardana_notify_ironic_api_install_result
- name: ironic-api | install | Register persistent fact of install
command: /bin/true
register: ardana_notify_ironic_api_restart_required
when: ardana_notify_ironic_api_install_result.changed
- include: ../../ironic-common/tasks/_set_directories.yml
vars:
ironic_pkg_result: "{{ ardana_notify_ironic_api_install_result }}"
- include: ../../ironic-common/tasks/install.yml
become: yes
0707010000001C000081A40000000000000000000000015DB0746900000696000000000000000000000000000000000000004A00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-api/tasks/start.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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: ironic-api | start | activate the latest installed version
become: yes
install_package:
name: ironic
service: ironic-api
activate: act_on
version: "{{ ardana_notify_ironic_api_install_result.version }}"
when: ardana_notify_ironic_api_install_result is defined
- name: ironic-api | start | register persistent fact of activate
command: /bin/true
register: ardana_notify_ironic_api_restart_required
when: (ardana_notify_ironic_api_install_result is defined and
ardana_notify_ironic_api_install_result.changed)
- name: ironic-api | start | restart ironic-api service
become: yes
service: name=ironic-api state=restarted
when: (ardana_notify_ironic_common_restart_required is defined and
ardana_notify_ironic_common_restart_required.changed
) or (ardana_notify_ironic_api_restart_required is defined and
ardana_notify_ironic_api_restart_required.changed)
- name: ironic-api | start | start ironic-api service
become: yes
service: name=ironic-api state=started
0707010000001D000081A40000000000000000000000015DB07469000002BC000000000000000000000000000000000000004B00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-api/tasks/status.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
- include: ../../ironic-common/tasks/_service_status.yml0707010000001E000081A40000000000000000000000015DB0746900000369000000000000000000000000000000000000004900000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-api/tasks/stop.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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: ironic-api | stop | stop ironic-api service
become: yes
service: name=ironic-api state=stopped
register: stop_result
failed_when: "stop_result|failed and 'service not found' not in
stop_result.msg"0707010000001F000041ED0000000000000000000000055DB0746900000000000000000000000000000000000000000000004600000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-cloud-configure07070100000020000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004F00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-cloud-configure/defaults07070100000021000081A40000000000000000000000015DB07469000004BE000000000000000000000000000000000000005800000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-cloud-configure/defaults/main.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# 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.
#
---
# Config Processor defined variables
ironic_keystone:
auth_url: "{{ IRN_CND.consumes_KEY_API.vips.private[0].url }}/v3"
user: "{{ KEY_API.vars.keystone_admin_user }}"
admin_pwd: "{{ KEY_API.vars.keystone_admin_pwd | quote }}"
tenant_name: "{{ KEY_API.vars.keystone_admin_tenant }}"
default_domain: "Default"
ironic_flavor:
name: "m1.baremetal"
id: "6"
ram_mb: "4096"
disk_gb: "80"
vcpu: "2"
type: "example"
boot_option: "local"
boot_mode: "bios"
ironic_region: "{{ IRN.regions | first }}"
ironic_ca_file: "{{ trusted_ca_bundle }}"
07070100000022000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004B00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-cloud-configure/meta07070100000023000081A40000000000000000000000015DB0746900000263000000000000000000000000000000000000005400000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-cloud-configure/meta/main.yml# (c) Copyright 2018 SUSE LLC
#
# 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.
#
---
dependencies:
- role: tls-vars
07070100000024000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004C00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-cloud-configure/tasks07070100000025000081A40000000000000000000000015DB07469000008E6000000000000000000000000000000000000006400000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-cloud-configure/tasks/ironic-flavor-setup.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# 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: ironic-cloud-configure | ironic-flavor-setup | check for baremetal
flavor
shell: >
nova
--os-username {{ ironic_keystone.user }}
--os-project-name {{ ironic_keystone.tenant_name }}
--os-password {{ ironic_keystone.admin_pwd }}
--os-user-domain-name {{ ironic_keystone.default_domain }}
--os-project-domain-name {{ ironic_keystone.default_domain }}
--os-endpoint-type internalURL
--os-region-name {{ ironic_region }}
--os-auth-url {{ ironic_keystone.auth_url }}
--os-cacert {{ ironic_ca_file }}
flavor-list
register: bm_flavor_check_result
- name: ironic-cloud-configure | ironic-flavor-setup | create baremetal flavor
shell: >
nova
--os-username {{ ironic_keystone.user }}
--os-project-name {{ ironic_keystone.tenant_name }}
--os-password {{ ironic_keystone.admin_pwd }}
--os-user-domain-name {{ ironic_keystone.default_domain }}
--os-project-domain-name {{ ironic_keystone.default_domain }}
--os-endpoint-type internalURL
--os-region-name {{ ironic_region }}
--os-auth-url {{ ironic_keystone.auth_url }}
--os-cacert {{ ironic_ca_file }}
{{ item }}
with_items:
- "flavor-create {{ ironic_flavor.name }} {{ ironic_flavor.id }}
{{ ironic_flavor.ram_mb }} {{ ironic_flavor.disk_gb }}
{{ ironic_flavor.vcpu }}"
- "flavor-key m1.baremetal set cpu_arch=amd64
baremetal_type={{ ironic_flavor.type }}
capabilities:boot_option={{ ironic_flavor.boot_option }}
capabilities:boot_mode={{ ironic_flavor.boot_mode }}"
when: "not '{{ ironic_flavor.name }}' in bm_flavor_check_result.stdout"
07070100000026000041ED0000000000000000000000085DB0746900000000000000000000000000000000000000000000003D00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common07070100000027000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004600000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/defaults07070100000028000081A40000000000000000000000015DB07469000022A7000000000000000000000000000000000000004F00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/defaults/main.yml#
# (c) Copyright 2015-2017 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# 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.
#
---
ironic_user : "ironic"
ironic_group : "ironic"
ironic_rootwrap_dir : "{{ ironic_service_conf_dir }}/rootwrap.d"
ironic_logs_dir : "/var/log/ironic"
ironic_images_path : "/tftpboot"
ironic_http_port : "{{ host.bind.IRN_CND.ipxe_http.port }}"
ironic_ipxe_http_address: "{{ host.bind.IRN_CND.ipxe_http.ip_address }}"
ironic_multi_tenancy_enabled: "{{ config_data | item('IRN.multi_tenancy_enabled', default=false) }}"
ironic_boot_from_volume_enabled: "{{ config_data | item('IRN.boot_from_volume_enabled', default=false) }}"
ironic_audit:
configfile: "{{ ironic_service_conf_dir }}/ironic_api_audit_map.conf"
log_location: "{{ IRN.audit.dir }}/ironic"
enable: "{{ IRN.audit.enabled }}"
notification_driver: "log"
## [DEFAULT]
ironic_log_config_append : >
"{{ ironic_service_conf_dir }}/{{ ironic_component }}-logging.conf"
ironic_rootwrap_config_append : "{{ ironic_service_conf_dir }}/rootwrap.conf"
ironic_api_loglevel: "{{ ardana_loglevel | default('INFO') }}"
ironic_api_logstash_loglevel: "{{ ardana_loglevel | default('INFO') }}"
ironic_conductor_loglevel: "{{ ardana_loglevel | default('INFO') }}"
ironic_conductor_logstash_loglevel: "{{ ardana_loglevel | default('INFO') }}"
ironic_verbose : "True"
ironic_debug : "True"
ironic_policy_file : "{{ ironic_service_conf_dir }}/policy.json"
ironic_log_group: "adm"
_ironic_rabbit_hosts_list : "{{ IRN.consumes_FND_RMQ.members.private }}"
_ironic_rpc_userid: "{{ IRN.consumes_FND_RMQ.vars.accounts.ironic.username }}"
_ironic_rpc_passwd: "{{ IRN.consumes_FND_RMQ.vars.accounts.ironic.password }}"
ironic_rpc:
userid : _ironic_rpc_userid
password : _ironic_rpc_passwd
hosts: >
{% for x in _ironic_rabbit_hosts_list -%}
{{ _ironic_rpc_userid ~ ':' ~ _ironic_rpc_passwd ~ '@' ~ x.host ~ ':' ~ x.port }}
{%- if not loop.last -%},{% endif %}
{%- endfor %}
use_ssl: "{{ IRN.consumes_FND_RMQ.members.private[0].use_tls }}"
backend : "rabbit"
conn_pool_size : "100"
agent_drivers_enabled : "{{ config_data.IRN.enable_agent_drivers | default(true) }}"
ironic_enabled_drivers: "pxe_ipmitool, pxe_ilo{%- if agent_drivers_enabled|bool %}, agent_ilo, agent_ipmitool{%- if oneview_enabled|bool %}, agent_pxe_oneview {% endif %} {% endif %}"
## [database]
ironic_db_connection : >
{{ 'mysql+pymysql://' ~ IRN.consumes_FND_MDB.vars.accounts.ironic.username ~ ':' ~
IRN.consumes_FND_MDB.vars.accounts.ironic.password | urlencode ~ '@' ~
IRN.consumes_FND_MDB.vips.private[0].host ~ '/ironic?charset=utf8' }}{{ ironic_db_ssl }}
# Keystone authtoken
# auth_uri should point to a Keystone service from which users may
# retrieve tokens.
keystone_auth_uri: "{{ KEY_API.advertises.vips.public[0].url }}"
ironic_keystone_admin:
user: "{{ KEY_API.vars.keystone_admin_user }}"
password: "{{ KEY_API.vars.keystone_admin_pwd | quote }}"
admin_tenant_name: "{{ KEY_API.vars.keystone_admin_tenant }}"
role: "{{ KEY_API.vars.keystone_admin_role }}"
tenant_name: "{{ KEY_API.vars.keystone_service_tenant }}"
default_domain: "Default"
auth_version: "3"
auth_version_v2: "2"
## [keystone_authtoken]
ironic_api_admin:
user: "{{ IRN_API.consumes_KEY_API.vars.keystone_ironic_user }}"
password: "{{ IRN_API.consumes_KEY_API.vars.keystone_ironic_password }}"
auth_uri: "{{ IRN_API.consumes_KEY_API.vips.private[0].url }}/v3"
identity_uri: "{{ IRN_API.consumes_KEY_API.vips.private[0].url }}"
ironic_cnd_admin:
user: "{{ IRN_CND.consumes_KEY_API.vars.keystone_ironic_user }}"
password: "{{ IRN_CND.consumes_KEY_API.vars.keystone_ironic_password }}"
auth_uri: "{{ IRN_CND.consumes_KEY_API.vips.private[0].url }}/v3"
identity_uri: "{{ IRN_CND.consumes_KEY_API.vips.private[0].url }}"
## [api]
ironic_api:
host_ip : "{{ host.bind.IRN_API.internal.ip_address }}"
port : "{{ IRN_API.advertises.vips.private[0].port }}"
url : >
{{ IRN_API.advertises.vips.private[0].protocol ~ '://' ~
IRN_API.advertises.vips.private[0].ip_address ~ ':' ~
IRN_API.advertises.vips.private[0].port }}
ironic_cnd:
url : >
{{ IRN_CND.consumes_IRN_API.vips.private[0].protocol ~ '://' ~
IRN_CND.consumes_IRN_API.vips.private[0].ip_address ~ ':' ~
IRN_CND.consumes_IRN_API.vips.private[0].port }}
## [neutron]
ironic_neutron:
url : "{{ IRN_CND.consumes_NEU_SVR.vips.private[0].url }}"
admin_pwd: "{{ KEY_API.vars.keystone_admin_pwd }}"
ironic_cleaning_network:
name: "{{ config_data.IRN.cleaning_network }}"
uuid: "{{ cleaning_network_id_result.stdout | default('') if cleaning_network_id_result is defined else '' }}"
ironic_provisioning_network:
name: "{{ config_data | item('IRN.provisioning_network', default='') }}"
uuid: "{{ provisioning_network_id_result.stdout | default('') if provisioning_network_id_result is defined else '' }}"
ironic_deploy_image_tmp_dir: "/tmp"
ironic_deploy_image:
version: "ARDANA5.0"
ramdisk: "{{ ironic_deploy_image_tmp_dir }}/{{ ramdisk_filename }}"
kernel: "{{ ironic_deploy_image_tmp_dir }}/{{ kernel_filename }}"
iso: "{{ ironic_deploy_image_tmp_dir }}/{{ iso_filename }}"
## [glance]
ironic_glance:
host: "{{ IRN_CND.consumes_GLA_API.vips.private[0].host }}"
port: "{{ IRN_CND.consumes_GLA_API.vips.private[0].port }}"
protocol: "{{ IRN_CND.consumes_GLA_API.vips.private[0].protocol }}"
admin_password: "{{ IRN_CND.consumes_KEY_API.vars.keystone_glance_password | quote }}"
admin_user: "{{ IRN_CND.consumes_KEY_API.vars.keystone_glance_user }}"
ironic_swift:
temp_url_key : "{{ IRN_CND.vars.swift_temp_url_key }}"
internal_endpoint: >
{{ IRN_CND.consumes_SWF_PRX.vips.private[0].protocol ~ '://' ~
IRN_CND.consumes_SWF_PRX.vips.private[0].ip_address ~ ':' ~
IRN_CND.consumes_SWF_PRX.vips.private[0].port }}
container: "glance-{{ glance_cloud }}-{{ glance_cp }}-{{ glance_cluster }}"
glance_user : >
{{ IRN_CND.consumes_KEY_API.vars.keystone_glance_swift_user }}
glance_password : >
{{ IRN_CND.consumes_KEY_API.vars.keystone_glance_swift_password }}
glance_tenant : >
{{ IRN_CND.consumes_KEY_API.vars.keystone_glance_swift_tenant }}
## [oneview]
oneview_enabled : "{{ config_data.IRN.enable_oneview }}"
ironic_oneview:
manager_url : >
{{ config_data.IRN.oneview_manager_url | default(none) }}
username : "{{ config_data.IRN.oneview_username | default(none) }}"
encrypted_password : "{{ config_data.IRN.oneview_encrypted_password | default(none) }}"
allow_insecure_connections : >
{{ config_data.IRN.oneview_allow_insecure_connections | default(false) }}
tls_cacert_file : "{{ config_data.IRN.tls_cacert_file | default(none) }}"
## [pxe]
ironic_images:
tftp_server : "{{ host.bind.IRN_CND.tftp.ip_address }}"
path : "{{ ironic_images_path }}"
instance_master_path : "{{ ironic_images_path }}/master_images"
pxe_append_params : "nofb nomodeset vga=normal elevator=deadline
security=apparmor crashkernel=256M console=tty0
console=ttyS0"
http_root : "{{ ironic_images_path }}"
http_url : "http://{{ ironic_ipxe_http_address }}:{{ ironic_http_port }}"
ipxe_enabled : "True"
pxe_config_template: '$pybasedir/drivers/modules/ipxe_config.template'
pxe_bootfile_name : "undionly.kpxe"
uefi_pxe_config_template: '$pybasedir/drivers/modules/ipxe_config.template'
uefi_pxe_bootfile_name: 'ipxe.efi'
ipxe_boot_script: '$pybasedir/drivers/modules/boot.ipxe'
## [deploy]
ironic_default_boot_option: "netboot"
## [conductor]
ironic_automated_clean : >
{{ config_data.IRN.enable_node_cleaning | default(true) }}
ironic_power_state_change_timeout: 30
## [ilo]
ironic_ilo:
power_retry : 6
power_wait : 2
# #[ipmi]
ironic_ipmi:
command_retry_timeout : 60
min_command_interval : 5
## [oslo_messaging_rabbit]
ironic_kombu_reconnect_delay : 5.0
## [ssl]
ironic_ca_file : "{{ trusted_ca_bundle }}"
ironic_db_ssl: "{% if IRN.consumes_FND_MDB.vips.private[0].use_tls %}&ssl_ca={{ ironic_ca_file }} {% endif %}"
## [region]
ironic_region: "{{ IRN.regions | first }}"
ironic_iso_mount_path: "{{ ironic_deploy_image_tmp_dir }}/deploy_iso"
ironic_iso_build_path: "{{ ironic_deploy_image_tmp_dir }}/tmp_deploy_iso"
ironic_initrd_build_path: "{{ ironic_deploy_image_tmp_dir }}/tmp_deploy_ramdisk"
07070100000029000041ED0000000000000000000000035DB0746900000000000000000000000000000000000000000000004300000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/files0707010000002A000081ED0000000000000000000000015DB07469000009E5000000000000000000000000000000000000005400000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/files/ardanadecrypt.py#!/usr/bin/env python
#
# A utility to encrypt passwords for auxiliary Ardana systems like IPMI.
#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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 subprocess import PIPE, Popen
encryption_env = 'ARDANA_USER_PASSWORD_ENCRYPT_KEY'
class aes256:
prefix = '@ardana_aes256@'
def __init__(self, key):
pass
def encrypt(self, raw):
return ""
def decrypt(self, cooked):
return ""
class openssl:
prefix = '@ardana@'
def __init__(self, key=None):
pass
def delegate(self, cmd, value):
# Note that I'm passing the environment variable's name to the subprocess, not its value.
argv = ('/usr/bin/openssl', 'aes-256-cbc', '-a', cmd, '-pass', 'env:%s' % encryption_env)
p = Popen(argv, close_fds=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)
result = p.communicate(input=value)
if p.returncode != 0:
errmsg = result[1].strip()
if errmsg.startswith('bad decrypt'):
errmsg = 'incorrect encryption key'
elif errmsg.startswith('error reading input file') or errmsg.startswith('bad magic number'):
errmsg = 'bad input data'
raise OSError('openssl: %s' % errmsg)
return result[0].strip()
def encrypt(self, raw):
return self.delegate('-salt', raw)
def decrypt(self, cooked):
# openssl expects a newline at the end of the string.
if cooked[-1] != '\n':
cooked += '\n'
return self.delegate('-d', cooked)
def main():
import getpass
import sys
obj = openssl()
if len(sys.argv) > 1 and sys.argv[1] == '-d':
value = sys.argv[2]
if value.startswith(obj.prefix):
value = value[len(obj.prefix):]
x = obj.decrypt(value)
print x
else:
value = sys.argv[2]
x = obj.encrypt(value)
print obj.prefix + x
if __name__ == '__main__':
main()
0707010000002B000081A40000000000000000000000015DB0746900000214000000000000000000000000000000000000005D00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/files/ironic_api_audit_map.conf[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_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_passthrus = vendor_passthru
# map endpoint type defined in service catalog to CADF typeURI
[service_endpoints]
baremetal = service/compute/baremetal
0707010000002C000081A40000000000000000000000015DB0746900000073000000000000000000000000000000000000004F00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/files/policy.json{
"admin_api": "role:admin or role:administrator",
"show_password": "!",
"default": "rule:admin_api"
}
0707010000002D000081A40000000000000000000000015DB07469000004CD000000000000000000000000000000000000005100000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/files/rootwrap.conf# (c) Copyright 2017-2018 SUSE LLC
#
# 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
# Configuration for ironic-rootwrap
# This file should be owned by (and only-writeable by) the root user
[DEFAULT]
# List of directories to load filter definitions from (separated by ',').
# These directories MUST all be only writeable by root !
filters_path=/etc/ironic/rootwrap.d,/usr/share/ironic/rootwrap
# List of directories to search executables in, in case filters do not
# explicitely specify a full path (separated by ',')
# If not specified, defaults to system PATH environment variable.
# These directories MUST all be only writeable by root !
exec_dirs={{ ironic_service_bin_dir }},/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
0707010000002E000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004E00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/files/rootwrap.d0707010000002F000081A40000000000000000000000015DB07469000000D5000000000000000000000000000000000000006400000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/files/rootwrap.d/ironic-images.filters# ironic-rootwrap command filters to manipulate images
# This file should be owned by (and only-writeable by) the root user
[Filters]
# ironic/common/images.py: 'qemu-img'
qemu-img: CommandFilter, qemu-img, root
07070100000030000081A40000000000000000000000015DB0746900000267000000000000000000000000000000000000006100000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/files/rootwrap.d/ironic-lib.filters# 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-writeable by) the root user.
[Filters]
# ironic_lib/disk_utils.py
blkid: CommandFilter, blkid, root
blockdev: CommandFilter, blockdev, root
hexdump: CommandFilter, hexdump, root
qemu-img: CommandFilter, qemu-img, 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
07070100000031000081A40000000000000000000000015DB0746900000139000000000000000000000000000000000000006300000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/files/rootwrap.d/ironic-utils.filters# ironic-rootwrap command filters for disk manipulation
# This file should be owned by (and only-writeable 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
07070100000032000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004200000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/meta07070100000033000081A40000000000000000000000015DB07469000002C0000000000000000000000000000000000000004B00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/meta/main.yml#
# (c) Copyright 2015-2017 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# 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.
#
---
dependencies:
- role: GLA-API
- role: tls-vars
07070100000034000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004300000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/tasks07070100000035000081A40000000000000000000000015DB07469000009AF000000000000000000000000000000000000005C00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/tasks/_debian_add_cert_iso.yml#
# (c) Copyright 2015-2018 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# 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: ironic-common | _debian_add_cert_iso | Create temp directories
file:
path: "{{ ironic_iso_build_path }}"
state: directory
mode: 0755
- name: ironic-common | _debian_add_cert_iso | Mount iso file
mount:
name: "{{ ironic_iso_mount_path }}"
src: "{{ ironic_deploy_image.iso }}"
opts: loop
fstype: iso9660
state: mounted
- name: ironic-common | _debian_add_cert_iso | Copy files from iso to tmp directory
shell: >
cp -aRvf
"{{ ironic_iso_mount_path }}"/*
"{{ ironic_iso_mount_path }}"/.disk
"{{ ironic_iso_build_path }}"/
- name: ironic-common | _debian_add_cert_iso | Unmount iso file
mount:
name: "{{ ironic_iso_mount_path }}"
src: "{{ ironic_deploy_image.iso }}"
opts: loop
fstype: iso9660
state: unmounted
- name: ironic-common | _debian_add_cert_iso | Remove fstab entry
mount:
name: "{{ ironic_iso_mount_path }}"
src: "{{ ironic_deploy_image.iso }}"
opts: loop
fstype: iso9660
state: absent
- name: ironic-common | _debian_add_cert_iso | Add cert into ramdisk
include: _debian_add_cert_ramdisk.yml
vars:
ramdisk_path: "{{ ironic_iso_build_path }}/initrd"
- name: ironic-common | _debian_add_cert_iso | Install Package genisoimage
package:
name: genisoimage
state: present
- name: ironic-common | _debian_add_cert_iso | Create new iso deploy image
shell: >
genisoimage -b isolinux/isolinux.bin -r -J -l -c boot.cat -V
VMEDIA_BOOT_ISO -no-emul-boot -boot-info-table -boot-load-size
4 -eltorito-alt-boot --eltorito-boot efi/boot/efi.img --cache-inodes -o
{{ ironic_deploy_image.iso }} ./
args:
chdir: "{{ ironic_iso_build_path }}"
- name: ironic-common | _debian_add_cert_iso | Clean up
file:
path: "{{ ironic_iso_build_path }}"
state: absent
mode: 0755
07070100000036000081A40000000000000000000000015DB0746900000706000000000000000000000000000000000000006000000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/tasks/_debian_add_cert_ramdisk.yml#
# (c) Copyright 2015-2018 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# 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: ironic-common | _debian_add_cert_ramdisk | Create tmp ramdisk directory
file:
path: "{{ ironic_initrd_build_path }}"
state: directory
mode: 0755
- name: ironic-common | _debian_add_cert_ramdisk | Extract archive file
shell: zcat {{ ramdisk_path }} | cpio --extract --make-directories
args:
chdir: "{{ ironic_initrd_build_path }}"
- name: ironic-common | _debian_add_cert_ramdisk | Find cert file location
shell: >
{{ ironic_initrd_build_path }}/usr/bin/python2.7 -c
"import requests; print requests.certs.where()"
register: chroot_cert_file_path_result
- name: ironic-common | _debian_add_cert_ramdisk | Append cert file
shell: >
cat "{{ ironic_ca_file }}" >>
"{{ chroot_cert_file_path_result.stdout }}"
- name: ironic-common | _debian_add_cert_ramdisk | Package new ramdisk file
shell: >
find . | cpio --create --format='newc' |
gzip -c -9 > {{ ramdisk_path }}
args:
chdir: "{{ ironic_initrd_build_path }}"
- name: ironic-common | _debian_add_cert_ramdisk | Clean tmp ramdisk directory
file:
path: "{{ ironic_initrd_build_path }}"
state: absent
mode: 0755
07070100000037000081A40000000000000000000000015DB074690000069F000000000000000000000000000000000000006500000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/tasks/_debian_prepare_deploy_images.yml#
# (c) Copyright 2017-2018 SUSE LLC
#
# 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: ironic-common | _debian_prepare_deploy_images | Find archive name
shell: ls {{ 'ironic-deploy-images' | jar_dir }}
register: archive_list_result
- name: ironic-common | _debian_prepare_deploy_images | Unarchive image tar
file
become: yes
unarchive:
dest: "{{ ironic_deploy_image_tmp_dir }}"
src: "{{ 'ironic-deploy-images' | jar_dir }}/{{ item }}"
copy: no
with_items: (archive_list_result.stdout).splitlines()
- name: ironic-common | _debian_prepare_deploy_images | check for cert file
stat:
path: "{{ ironic_ca_file }}"
register: cert_file_result
- name: ironic-common | _debian_prepare_deploy_images | Add cert into ramdisk
include: _debian_add_cert_ramdisk.yml
vars:
ramdisk_path: "{{ ironic_deploy_image.ramdisk }}"
become: yes
when: ramdisk_image_exists_result.stdout == "" and
cert_file_result.stat.exists == True
- name: ironic-common | _debian_prepare_deploy_images | Add cert into iso
include: _debian_add_cert_iso.yml
become: yes
when: iso_image_exists_result.stdout == "" and
cert_file_result.stat.exists == True
07070100000038000081A40000000000000000000000015DB0746900000317000000000000000000000000000000000000005900000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/tasks/_schedule_restart.yml#
# (c) Copyright 2018 SUSE LLC
#
# 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: ironic-common | _schedule_restart | Schedule a restart for ironic
debug:
msg: "Trigger a change notification in ironic"
changed_when: true
register: ardana_notify_ironic_common_restart_required07070100000039000081A40000000000000000000000015DB0746900000543000000000000000000000000000000000000005700000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/tasks/_service_status.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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: ironic-common | _service_status | Print service being checked
debug:
msg: "Running service check for {{ ironic_component }}"
run_once: true
- name: ironic-common | _service_status | Check systemd service running
become: yes
command: systemctl status "{{ ironic_component }}"
ignore_errors: yes
changed_when: false
register: systemctl_status_result
- name: ironic-common | _service_status | Status of "{{ ironic_component }}"
fail:
msg: |
{{ ironic_component }} is not running.
systemctl status {{ ironic_component }} output:
{{ systemctl_status_result.stdout }}
{{ systemctl_status_result.stderr }}
when: systemctl_status_result | failed
0707010000003A000081A40000000000000000000000015DB0746900000714000000000000000000000000000000000000005800000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/tasks/_set_directories.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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: ironic-common | _set_directories | set service etc and venv
directory - configure
set_fact:
ironic_service_bin_dir:
"{{ ironic_component | bin_dir(ironic_pkg_result.version) }}"
ironic_service_etc_dir:
"{{ ironic_component | config_dir(ironic_pkg_result.version) }}"
ironic_service_conf_dir:
"{{ ironic_component | config_dir(ironic_pkg_result.version) }}/ironic"
ironic_service_venv_share_dir:
"{{ ironic_component | share_dir(ironic_pkg_result.version) }}"
ironic_client_bin_dir:
"{{ ironic_component | bin_dir(ironic_pkg_result.version) }}"
when: ironic_pkg_result.version is defined
- name: ironic-common | _set_directories | set service etc and venv
directory - reconfigure
set_fact:
ironic_service_bin_dir: "{{ ironic_component | bin_dir() }}"
ironic_service_etc_dir: "{{ ironic_component | config_dir() }}"
ironic_service_conf_dir: "{{ ironic_component | config_dir() }}/ironic"
ironic_service_venv_share_dir: "{{ ironic_component | share_dir() }}"
ironic_client_bin_dir: "{{ ironic_component | bin_dir() }}"
when: ironic_pkg_result.version is undefined
0707010000003B000081A40000000000000000000000015DB0746900001B68000000000000000000000000000000000000005A00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/tasks/_suse_add_cert_iso.yml#
# (c) Copyright 2018 SUSE LLC
#
# 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: ironic-common | _suse_add_cert_iso | Create temp directories
file:
path: "{{ ironic_iso_build_path }}"
state: directory
mode: 0755
- name: ironic-common | _suse_add_cert_iso | Mount iso file
mount:
name: "{{ ironic_iso_mount_path }}"
src: "{{ ironic_deploy_image.iso }}"
opts: loop
fstype: iso9660
state: mounted
- name: ironic-common | _suse_add_cert_iso | Copy files from iso to tmp directory
shell: >
cp -aRvf
"{{ ironic_iso_mount_path }}"/*
"{{ ironic_iso_build_path }}"/
- name: ironic-common | _suse_add_cert_iso | Unmount iso file
mount:
name: "{{ ironic_iso_mount_path }}"
src: "{{ ironic_deploy_image.iso }}"
opts: loop
fstype: iso9660
state: unmounted
- name: ironic-common | _suse_add_cert_iso | Remove fstab entry
mount:
name: "{{ ironic_iso_mount_path }}"
src: "{{ ironic_deploy_image.iso }}"
opts: loop
fstype: iso9660
state: absent
# NOTE(gyee): assuming the image name in this pattern:
# 'openstack-ironic-image.x86_64-*.gz'
- name: ironic-common | _suse_add_cert_iso | Find the image gz file
shell: >
find . -maxdepth 1 -type f -name "openstack-ironic-image.x86_64-*.gz"
-exec basename {} \;
register: find_image_gz_result
failed_when: find_image_gz_result.stdout == ""
args:
chdir: "{{ ironic_iso_build_path }}"
# NOTE(gyee): assuming the image name in this pattern:
# 'openstack-ironic-image.x86_64-*.md5'
- name: ironic-common | _suse_add_cert_iso | Find the image md5 file
shell: >
find . -maxdepth 1 -type f -name "openstack-ironic-image.x86_64-*.md5"
-exec basename {} \;
register: find_image_md5_result
failed_when: find_image_md5_result.stdout == ""
args:
chdir: "{{ ironic_iso_build_path }}"
- name: ironic-common | _suse_add_cert_iso | Set compressed image file name
set_fact:
compressed_image_name: "{{ find_image_gz_result.stdout }}"
# NOTE(gyee) we need to do this because Ansible regex_replace filter is
# broken in 1.9 version. What a PITA!
- name: ironic-common | _suse_add_cert_iso | Get uncompressed image file name
shell: >
echo {{ compressed_image_name }} | sed 's/.gz$//'
register: get_uncompressed_image_name_result
- name: ironic-common | _suse_add_cert_iso | Set uncompressed image file name
set_fact:
uncompressed_image_name: "{{ get_uncompressed_image_name_result.stdout }}"
- name: ironic-common | _suse_add_cert_iso | Extract image gz file
shell: >
gunzip -f {{ compressed_image_name }}
args:
chdir: "{{ ironic_iso_build_path }}"
- name: ironic-common | _suse_add_cert_iso | Set tmp image mount dir
set_fact:
ironic_tmp_image_mount_dir: "{{ ironic_iso_build_path }}/tmp_image_mnt"
- name: ironic-common | _suse_add_cert_iso | Create tmp image mount dir
file:
path: "{{ ironic_tmp_image_mount_dir }}"
state: directory
mode: 0755
- name: ironic-common | _suse_add_cert_iso | Mount the image
shell: >
mount -o loop {{ uncompressed_image_name }}
{{ ironic_tmp_image_mount_dir }}
args:
chdir: "{{ ironic_iso_build_path }}"
- name: ironic-common | _suse_add_cert_iso | Append cert file
shell: >
cat "{{ ironic_ca_file }}" >>
"{{ ironic_tmp_image_mount_dir }}/var/lib/ca-certificates/ca-bundle.pem"
- name: ironic-common | _suse_add_cert_iso | Unmount the image
shell: >
umount {{ ironic_tmp_image_mount_dir }}
- name: ironic-common | _suse_add_cert_iso | Clean up tmp image mount dir
file:
path: "{{ ironic_tmp_image_mount_dir }}"
state: absent
mode: 0755
- name: ironic-common | _suse_add_cert_iso | Md5sum uncompressed image
shell: >
cat {{ uncompressed_image_name }} | md5sum - | cut -f 1 -d-
register: md5sum_uncompressed_image_result
failed_when: md5sum_uncompressed_image_result.stdout == ""
args:
chdir: "{{ ironic_iso_build_path }}"
- name: ironic-common | _suse_add_cert_iso | Get uncomppressed image size
calculate_blocks_and_blocksize:
filename: "{{ ironic_iso_build_path }}/{{ uncompressed_image_name }}"
register: uncompressed_image_size_result
- name: ironic-common | _suse_add_cert_iso | Compress the image
shell: >
gzip {{ uncompressed_image_name }}
args:
chdir: "{{ ironic_iso_build_path }}"
- name: ironic_common | _suse_add_cert_iso | Get compressed image size
calculate_blocks_and_blocksize:
filename: "{{ ironic_iso_build_path }}/{{ compressed_image_name }}"
register: compressed_image_size_result
- name: ironic_common | _suse_add_cert_iso | Update image md5 file
shell: >
echo {{ md5sum_uncompressed_image_result.stdout }} " "
{{ uncompressed_image_size_result.blocks }} " "
{{ uncompressed_image_size_result.blocksize }} " "
{{ compressed_image_size_result.blocks }} " "
{{ compressed_image_size_result.blocksize }} >
{{ find_image_md5_result.stdout }}
args:
chdir: "{{ ironic_iso_build_path }}"
- name: ironic-common | _suse_add_cert_iso | Install Package genisoimage
package:
name: genisoimage
state: present
# NOTE(gyee): VERY IMPORTANT! We must use the same label when putting the ISO
# back together. The label is associated with the MBR. Without it, the ISO
# boot will fail with "Failed to find MBR identifier !".
# Also, we are assuming that Kiwi is using the autogenerated hex format.
# i.e. 0x51e568cb and this file is always under the boot/ directory. If that
# assumption no longer holds, we must fix this code.
- name: ironic-common | _suse_add_cert_iso | Find the original ISO label
shell: >
find . -maxdepth 1 -type f -name "0x*" -exec basename {} \;
register: find_iso_label_result
failed_when: find_iso_label_result.stdout == ""
args:
chdir: "{{ ironic_iso_build_path }}/boot"
- name: ironic-common | _suse_add_cert_iso | Create new iso deploy image
shell: >
genisoimage -b boot/x86_64/loader/isolinux.bin -R -J -pad -joliet-long
-iso-level 4
-A "{{ find_iso_label_result.stdout }}"
-no-emul-boot -boot-info-table -boot-load-size 4
-c boot/x86_64/boot.catalog -hide boot/x86_64/boot.catalog
-hide-joliet boot/x86_64/boot.catalog
-eltorito-alt-boot -b boot/x86_64/efi
-no-emul-boot -joliet-long -hide glump -hide-joliet glump
-o {{ ironic_deploy_image.iso }} ./
args:
chdir: "{{ ironic_iso_build_path }}"
- name: ironic-common | _suse_add_cert_iso | Clean up
file:
path: "{{ ironic_iso_build_path }}"
state: absent
mode: 0755
0707010000003C000081A40000000000000000000000015DB07469000005F1000000000000000000000000000000000000005E00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/tasks/_suse_add_cert_ramdisk.yml#
# (c) Copyright 2018 SUSE LLC
#
# 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: ironic-common | _suse_add_cert_ramdisk | Create tmp ramdisk directory
file:
path: "{{ ironic_initrd_build_path }}"
state: directory
mode: 0755
- name: ironic-common | _suse_add_cert_ramdisk | Extract archive file
shell: xzcat {{ ramdisk_path }} | cpio -dim
args:
chdir: "{{ ironic_initrd_build_path }}"
- name: ironic-common | _suse_add_cert_ramdisk | Append cert file
shell: >
cat "{{ ironic_ca_file }}" >>
"{{ ironic_initrd_build_path }}/var/lib/ca-certificates/ca-bundle.pem"
- name: ironic-common | _suse_add_cert_ramdisk | Package new ramdisk file
shell: >
find . | cpio --create --format='newc' |
xz -c -9 --check=crc32 --x86 --lzma2=dict=512KiB > {{ ramdisk_path }}
args:
chdir: "{{ ironic_initrd_build_path }}"
- name: ironic-common | _suse_add_cert_ramdisk | Clean tmp ramdisk directory
file:
path: "{{ ironic_initrd_build_path }}"
state: absent
mode: 0755
0707010000003D000081A40000000000000000000000015DB0746900000BD4000000000000000000000000000000000000006300000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/tasks/_suse_prepare_deploy_images.yml#
# (c) Copyright 2017-2018 SUSE LLC
#
# 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.
#
---
# NOTE(gyee): this is needed because we'll need to inject the CA
# certificates into the ramdisk. To be able to do that we will need to
# extract it into a tmp dir. For the extract (i.e. xz) to work, it must
# have to proper file extension.
# Also, we are making the following assumptions
# 1. it is located in "/srv/tftpboot/openstack-ironic-image" dir
# 2. the file name is 'iso'
# If theose conditions ever change, we must update the code.
- name: ironic-common | _suse_prepare_deploy_images | Copy ramdisk
become: yes
shell: >
cp /srv/tftpboot/openstack-ironic-image/initrd
{{ ironic_deploy_image.ramdisk }}
# Copy the kernel to the same location as the others so they all can be
# uploaded from the same place. This is merely for convenience and
# consistency.
# NOTE(gyee): We are making the following assumptions
# 1. it is located in "/srv/tftpboot/openstack-ironic-image" dir
# 2. the file name is 'vmlinux'
# If theose conditions ever change, we must update the code.
- name: ironic-common | _suse_prepare_deploy_images | Copy kernel
become: yes
shell: >
cp /srv/tftpboot/openstack-ironic-image/vmlinux
{{ ironic_deploy_image.kernel }}
# NOTE(gyee): this is needed because we'll need to inject the CA
# certificates into the iso. To be able to do that we will need to
# extract it into a tmp dir. For the extract (i.e. iso) to work, it must
# have to proper file extension.
# Also, we are making the following assumptions
# 1. it is located in "/srv/tftpboot/openstack-ironic-image" dir
# 2. the file name is 'initrd'
# If theose conditions ever change, we must update the code.
- name: ironic-common | _suse_prepare_deploy_images | Copy iso
become: yes
shell: >
cp /srv/tftpboot/openstack-ironic-image/iso {{ ironic_deploy_image.iso }}
- name: ironic-common | _suse_prepare_deploy_images | check for cert file
stat:
path: "{{ ironic_ca_file }}"
register: cert_file_result
- name: ironic-common | _suse_prepare_deploy_images | Add cert into ramdisk
include: _suse_add_cert_ramdisk.yml
vars:
ramdisk_path: "{{ ironic_deploy_image.ramdisk }}"
become: yes
when: ramdisk_image_exists_result.stdout == "" and
cert_file_result.stat.exists == True
- name: ironic-common | _suse_prepare_deploy_images | Add cert into iso
include: _suse_add_cert_iso.yml
become: yes
when: iso_image_exists_result.stdout == "" and
cert_file_result.stat.exists == True
0707010000003E000081A40000000000000000000000015DB0746900000701000000000000000000000000000000000000005300000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/tasks/_write_conf.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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: ironic-common | _write_conf | Check for pre-existing version of
"{{ dest }}"
stat: path={{ dest }}
register: conf_stat_result
- name: ironic-common | _write_conf | get timestamp
command: date +%Y%m%d%H%M%S
register: time_result
changed_when: False
- name: ironic-common | _write_conf | Create a backup version of the
existing "{{ dest }}" file
command: cp {{ dest }} {{ dest }}.{{ time_result.stdout }}
when: conf_stat_result.stat.exists
changed_when: False
- name: ironic-common | _write_conf | Template {{ dest }}
template:
src: "{{ src }}"
dest: "{{ dest }}"
owner: "{{ ironic_user }}"
group: "{{ ironic_group }}"
mode: 0400
register: write_conf_result
- name: ironic-common | _write_conf | Delete backup file that has not changed.
file:
path: "{{ dest }}.{{ time_result.stdout }}"
state: absent
when: write_conf_result.changed==false
changed_when: False
- name: ironic-common | _write_conf | remove all but last 10 backups
of "{{ dest }}"
shell: ls -td {{ dest }}.* |awk 'NR>10' |xargs rm -f
when: conf_stat_result.stat.exists
changed_when: False
0707010000003F000081A40000000000000000000000015DB0746900000823000000000000000000000000000000000000005A00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/tasks/check-provider-net.yml#
# (c) Copyright 2015-2017 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# 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: ironic-common | check-provider-net | check if cleaning-net exists
shell: >
neutron
--os-username {{ ironic_keystone_admin.user }}
--os-project-name {{ ironic_keystone_admin.admin_tenant_name }}
--os-user-domain-name {{ ironic_keystone_admin.default_domain }}
--os-project-domain-name {{ ironic_keystone_admin.default_domain }}
--os-auth-url {{ ironic_cnd_admin.auth_uri }}
--os-region-name {{ ironic_region }}
--os-cacert {{ ironic_ca_file }}
--os-endpoint-type internalURL
net-show {{ ironic_cleaning_network.name }} -f value -F id
environment:
OS_PASSWORD: "{{ ironic_neutron.admin_pwd }}"
register: cleaning_network_id_result
- name: ironic-common | check-provider-net | check if provisioning-net exists
shell: >
neutron
--os-username {{ ironic_keystone_admin.user }}
--os-project-name {{ ironic_keystone_admin.admin_tenant_name }}
--os-user-domain-name {{ ironic_keystone_admin.default_domain }}
--os-project-domain-name {{ ironic_keystone_admin.default_domain }}
--os-auth-url {{ ironic_cnd_admin.auth_uri }}
--os-region-name {{ ironic_region }}
--os-cacert {{ ironic_ca_file }}
--os-endpoint-type internalURL
net-show {{ ironic_provisioning_network.name }} -f value -F id
environment:
OS_PASSWORD: "{{ ironic_neutron.admin_pwd }}"
register: provisioning_network_id_result
when: ironic_multi_tenancy_enabled|bool
07070100000040000081A40000000000000000000000015DB0746900000A37000000000000000000000000000000000000005100000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/tasks/configure.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
- include: _write_conf.yml
src: "{{ ironic_component }}-logging.conf.j2"
dest: "{{ ironic_service_conf_dir }}/{{ ironic_component }}-logging.conf"
- name: ironic-common | configure | notify on ironic.conf change
shell: echo "notify change"
register: ardana_notify_ironic_common_restart_required
when: write_conf_result.changed
- name: ironic-common | configure | create ironic config files and directories
copy:
src: "{{ item }}"
dest: "{{ ironic_service_conf_dir }}"
owner: "{{ ironic_user }}"
group: "{{ ironic_group }}"
mode: 0640
with_items:
- policy.json
- rootwrap.conf
- rootwrap.d
- ironic_api_audit_map.conf
register: ardana_notify_ironic_common_restart_required
- name: ironic-common | configure | create ardanadecrypt file
copy:
src: "{{ item }}"
dest: "/tmp"
owner: "{{ ironic_user }}"
group: "{{ ironic_group }}"
mode: 0777
with_items:
- ardanadecrypt.py
when: oneview_enabled
- name: ironic-common | configure | decrypt the oneview password
command: ./ardanadecrypt.py -d "{{ ironic_oneview.encrypted_password }}"
args:
chdir: "/tmp"
register: oneview_password
environment:
ARDANA_USER_PASSWORD_ENCRYPT_KEY: "{{ lookup('env','ARDANA_USER_PASSWORD_ENCRYPT_KEY') }}"
when: oneview_enabled
- name: ironic-common | configure | delete ardanadecrypt file
file:
path: "/tmp/ardanadecrypt.py"
state: absent
when: oneview_enabled
- name: ironic-common | configure | Create ironic audit logging directory
become: yes
file:
path: "{{ ironic_audit.log_location }}"
owner: "{{ ironic_user }}"
group: "{{ ironic_group }}"
mode: "0755"
state: directory
when: ironic_audit.enable
- name: ironic-common | configure | Create a symbolic link for rootwrap.conf
file:
src: "{{ ironic_service_conf_dir }}"
dest: /etc/ironic
owner: "{{ ironic_user }}"
group: "{{ ironic_group }}"
force: yes
state: link
07070100000041000081A40000000000000000000000015DB0746900002042000000000000000000000000000000000000005B00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/tasks/deploy-image-upload.yml#
# (c) Copyright 2015-2017 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# 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: ironic-common | deploy-image-upload | check for iso
shell: >
OS_IDENTITY_API_VERSION=3 openstack
--os-username {{ ironic_glance.admin_user }}
--os-password {{ ironic_glance.admin_password }}
--os-tenant-name {{ ironic_keystone_admin.tenant_name }}
--os-auth-url {{ ironic_cnd_admin.auth_uri }}
--os-region-name {{ ironic_region }}
--os-user-domain-name {{ ironic_keystone_admin.default_domain }}
--os-project-domain-name {{ ironic_keystone_admin.default_domain }}
--os-interface internal
image list | grep -w
"ir-deploy-iso-{{ ironic_deploy_image.version }}"
| awk '{print $2}'
register: iso_image_exists_result
- name: ironic-common | deploy-image-upload |
skip uploading deploy iso again
debug:
msg: "Deploy iso already uploaded"
when: iso_image_exists_result.stdout != ""
- name: ironic-common | deploy-image-upload | check for ramdisk
image
shell: >
OS_IDENTITY_API_VERSION=3 openstack
--os-username {{ ironic_glance.admin_user }}
--os-password {{ ironic_glance.admin_password }}
--os-tenant-name {{ ironic_keystone_admin.tenant_name }}
--os-auth-url {{ ironic_cnd_admin.auth_uri }}
--os-region-name {{ ironic_region }}
--os-user-domain-name {{ ironic_keystone_admin.default_domain }}
--os-project-domain-name {{ ironic_keystone_admin.default_domain }}
--os-interface internal
image list | grep -w
"ir-deploy-ramdisk-{{ ironic_deploy_image.version }}"
| awk '{print $2}'
register: ramdisk_image_exists_result
- name: ironic-common | deploy-image-upload | skip uploading
deploy ramdisk again
debug:
msg: "Deploy ramdisk already uploaded"
when: ramdisk_image_exists_result.stdout != ""
- name: ironic-common | deploy-image-upload | check for kernel image
shell: >
OS_IDENTITY_API_VERSION=3 openstack
--os-username {{ ironic_glance.admin_user }}
--os-password {{ ironic_glance.admin_password }}
--os-tenant-name {{ ironic_keystone_admin.tenant_name }}
--os-auth-url {{ ironic_cnd_admin.auth_uri }}
--os-region-name {{ ironic_region }}
--os-user-domain-name {{ ironic_keystone_admin.default_domain }}
--os-project-domain-name {{ ironic_keystone_admin.default_domain }}
--os-interface internal
image list | grep -w
"ir-deploy-kernel-{{ ironic_deploy_image.version }}"
| awk '{print $2}'
register: kernel_image_exists_result
- name: ironic-common | deploy-image-upload | skip uploading
deploy kernel again
debug:
msg: "Deploy kernel already uploaded"
when: kernel_image_exists_result.stdout != ""
- name: ironic-common | deploy-image-upload | Set need_upload_images fact
set_fact:
need_upload_images: 'Yes'
when: ramdisk_image_exists_result.stdout == "" or
kernel_image_exists_result.stdout == "" or
iso_image_exists_result.stdout == ""
- name: ironic-common | deploy-image-upload | update deploy Artifact venv cache
become: yes
install_package:
cache: update
when: ansible_os_family == 'Debian'
- name: ironic-common | deploy-image-upload | setup deploy Artifact Project
become: yes
install_package:
name: "{{ deploy_images_package_name }}"
service: ironic-deploy-images
state: present
when: need_upload_images is defined and
ansible_os_family == 'Debian'
- name: ironic-common | deploy-image-upload | setup deploy Artifact Project (Suse)
become: yes
package:
name: "{{ deploy_images_package_name }}"
state: present
when: need_upload_images is defined and
ansible_os_family == 'Suse'
- name: ironic-common | deploy-image-upload | Prepare upload images
include: _debian_prepare_deploy_images.yml
when: need_upload_images is defined and
ansible_os_family == 'Debian'
- name: ironic-common | deploy-image-upload | Prepare upload images (SuSE)
include: _suse_prepare_deploy_images.yml
when: need_upload_images is defined and
ansible_os_family == 'Suse'
- name: ironic-common | deploy-image-upload | Upload deploy ramdisk
run_once: True
shell: >
OS_IDENTITY_API_VERSION=3 openstack
--os-username {{ ironic_glance.admin_user }}
--os-password {{ ironic_glance.admin_password }}
--os-tenant-name {{ ironic_keystone_admin.tenant_name }}
--os-auth-url {{ ironic_cnd_admin.auth_uri }}
--os-region-name {{ ironic_region }}
--os-user-domain-name {{ ironic_keystone_admin.default_domain }}
--os-project-domain-name {{ ironic_keystone_admin.default_domain }}
--os-interface internal
--os-cacert {{ ironic_ca_file }}
image create
--container-format ari
--disk-format ari
--public
--file {{ ironic_deploy_image.ramdisk }}
ir-deploy-ramdisk-{{ ironic_deploy_image.version }}
when: ramdisk_image_exists_result.stdout == ""
register: openstackclient_result
until: openstackclient_result|success
retries: 5
delay: 10
- name: ironic-common | deploy-image-upload | Upload deploy kernel
run_once: True
shell: >
OS_IDENTITY_API_VERSION=3 openstack
--os-username {{ ironic_glance.admin_user }}
--os-password {{ ironic_glance.admin_password }}
--os-tenant-name {{ ironic_keystone_admin.tenant_name }}
--os-auth-url {{ ironic_cnd_admin.auth_uri }}
--os-region-name {{ ironic_region }}
--os-user-domain-name {{ ironic_keystone_admin.default_domain }}
--os-project-domain-name {{ ironic_keystone_admin.default_domain }}
--os-interface internal
--os-cacert {{ ironic_ca_file }}
image create
--container-format aki
--disk-format aki
--public
--file {{ ironic_deploy_image.kernel }}
ir-deploy-kernel-{{ ironic_deploy_image.version }}
when: kernel_image_exists_result.stdout == ""
register: openstackclient_result
until: openstackclient_result|success
retries: 5
delay: 10
- name: ironic-common | deploy-image-upload | Upload iso
run_once: True
shell: >
OS_IDENTITY_API_VERSION=3 openstack
--os-username {{ ironic_glance.admin_user }}
--os-password {{ ironic_glance.admin_password }}
--os-tenant-name {{ ironic_keystone_admin.tenant_name }}
--os-auth-url {{ ironic_cnd_admin.auth_uri }}
--os-region-name {{ ironic_region }}
--os-user-domain-name {{ ironic_keystone_admin.default_domain }}
--os-project-domain-name {{ ironic_keystone_admin.default_domain }}
--os-interface internal
--os-cacert {{ ironic_ca_file }}
image create
--container-format bare
--disk-format iso
--public
--file {{ ironic_deploy_image.iso }}
ir-deploy-iso-{{ ironic_deploy_image.version }}
when: iso_image_exists_result.stdout == ""
register: openstackclient_result
until: openstackclient_result|success
retries: 5
delay: 10
- name: ironic-common | deploy-image-upload | delete images from tmp
run_once: True
file:
path: "{{ item }}"
state: absent
with_items:
- "{{ ironic_deploy_image.kernel }}"
- "{{ ironic_deploy_image.ramdisk }}"
- "{{ ironic_deploy_image.iso }}"
become: yes
when: need_upload_images is defined
- name: ironic-common | deploy-image-upload | Remove Transient deploy Artifact
become: yes
install_package:
name: "{{ deploy_images_package_name }}"
service: ironic-deploy-images
state: absent
when: need_upload_images is defined and
ansible_os_family == 'Debian'
- name: ironic-common | deploy-image-upload | Remove Transient deploy Artifact (Suse)
become: yes
zypper:
name: "{{ deploy_images_package_name }}"
state: absent
when: need_upload_images is defined and
ansible_os_family == 'Suse'
07070100000042000081A40000000000000000000000015DB074690000074A000000000000000000000000000000000000004F00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/tasks/install.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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: ironic-common | install | Add group {{ ironic_group }}
group:
name: "{{ ironic_group }}"
- name: ironic-common | install | Add user {{ ironic_user }}
user:
name: "{{ ironic_user }}"
group: "{{ ironic_group }}"
createhome: no
home: /tmp
shell: /bin/true
- name: ironic-common | install | create ironic directories
file:
path: "{{ item }}"
state: directory
owner: "{{ ironic_user }}"
group: "{{ ironic_group }}"
mode: 0755
with_items:
- "{{ ironic_service_conf_dir }}"
- "{{ ironic_logs_dir }}"
- name: ironic-common | install | register "{{ ironic_component }}" service
setup_systemd:
service: "{{ ironic_component }}"
cmd: "{{ ironic_component }}"
user: "{{ ironic_user }}"
group: "{{ ironic_group }}"
args:
"--config-file
{{ ironic_service_conf_dir }}/{{ ironic_component }}.conf"
- name: ironic-common | install | set ironic log file ownership
file:
path: "{{ item }}"
state: touch
owner: "{{ ironic_user }}"
group: "{{ ironic_log_group }}"
mode: 0640
with_items:
- "{{ ironic_logs_dir }}/{{ ironic_component }}.log"
- "{{ ironic_logs_dir }}/{{ ironic_component }}-json.log"
07070100000043000081A40000000000000000000000015DB074690000061C000000000000000000000000000000000000005B00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/tasks/keystone_change_pwd.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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: ironic-common | keystone_change_pwd | Get a domain scoped token
keystone_v3:
endpoint: "{{ ironic_api_admin.auth_uri }}"
login_username: "{{ ironic_keystone_admin.user }}"
login_password: "{{ ironic_keystone_admin.password }}"
login_user_domain_name: "{{ ironic_keystone_admin.default_domain }}"
login_domain_name: "{{ ironic_keystone_admin.default_domain }}"
action: "token_get"
run_once: true
register: domain_scoped_token_result
become: yes
- name: ironic-common | keystone_change_pwd | Update ironic user password
keystone_v3:
action: "reset_password_by_admin"
endpoint: "{{ ironic_api_admin.auth_uri }}"
login_token: "{{ domain_scoped_token_result.result }}"
user_name: "{{ ironic_api_admin.user }}"
user_password: "{{ ironic_api_admin.password }}"
user_domain_name: "{{ ironic_keystone_admin.default_domain }}"
run_once: true
become: yes
07070100000044000081A40000000000000000000000015DB07469000002B3000000000000000000000000000000000000004C00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/tasks/main.yml#
# (c) Copyright 2018 SUSE LLC
#
# 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: ironic-common | main | Set os-specific variables
include_vars: "{{ ansible_os_family | lower }}.yml"
07070100000045000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004700000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/templates07070100000046000081A40000000000000000000000015DB0746900000E9A000000000000000000000000000000000000006200000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/templates/ironic-api-logging.conf.j2{#
#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
#}
[loggers]
keys: root, amqp, amqplib, {%- if ironic_audit.enable|bool %} audit,{% endif %} boto, qpid, sqlalchemy, suds, iso8601, websocket, stevedore, taskflow, keystonemiddleware, middleware, messaging, urllib3connectionpool, urllib3retry, requrllib3connectionpool, requrllib3retry
[handlers]
keys: watchedfile, logstash{%- if ironic_audit.enable|bool %}, auditfile{% endif %}
[formatters]
keys: context, logstash
[logger_root]
qualname: root
handlers: watchedfile, logstash
level: NOTSET
[logger_amqp]
qualname: amqp
handlers: watchedfile
level: WARNING
[logger_amqplib]
qualname: amqplib
handlers: watchedfile
level: WARNING
{%- if ironic_audit.enable|bool %}
[logger_audit]
qualname: oslo.messaging.notification.audit
handlers: auditfile
propagate: 0
level: INFO
{% endif %}
[logger_boto]
qualname: boto
handlers: watchedfile
level: WARNING
[logger_qpid]
qualname: qpid
handlers: watchedfile
level: WARNING
[logger_sqlalchemy]
qualname: sqlalchemy
handlers: watchedfile
level: WARNING
[logger_suds]
qualname: suds
handlers: watchedfile
level: INFO
[logger_iso8601]
qualname: iso8601
handlers: watchedfile
level: WARNING
[logger_websocket]
qualname: websocket
handlers: watchedfile
level: WARNING
[logger_stevedore]
qualname: stevedore
handlers: watchedfile
level: WARNING
[logger_taskflow]
qualname: taskflow
handlers: watchedfile
level: WARNING
[logger_middleware]
qualname: routes.middleware
handlers: watchedfile
level: WARNING
[logger_keystonemiddleware]
qualname: keystonemiddleware
handlers: watchedfile
level: WARNING
[logger_messaging]
qualname: oslo.messaging
handlers: watchedfile
level: INFO
[logger_urllib3connectionpool]
qualname: urllib3.connectionpool
handlers: watchedfile
level: WARNING
[logger_urllib3retry]
qualname: urllib3.util.retry
handlers: watchedfile
level: WARNING
[logger_requrllib3connectionpool]
qualname: requests.packages.urllib3.connectionpool
handlers: watchedfile
level: WARNING
[logger_requrllib3retry]
qualname: requests.packages.urllib3.util.retry
handlers: watchedfile
level: WARNING
# Writes to disk
[handler_watchedfile]
class: handlers.WatchedFileHandler
args: ('{{ ironic_logs_dir }}/{{ ironic_component }}.log',)
formatter: context
level: {{ ironic_api_loglevel }}
[handler_logstash]
class: handlers.WatchedFileHandler
args: ('{{ ironic_logs_dir }}/{{ ironic_component }}-json.log',)
formatter: logstash
level: {{ ironic_api_logstash_loglevel }}
{%- if ironic_audit.enable|bool %}
[handler_auditfile]
class: handlers.WatchedFileHandler
args: ('{{ ironic_audit.log_location }}/ironic-api-audit.log',)
formatter: context
level: INFO
{% endif %}
# datefmt must be set otherwise you end up with too many (msecs) fields
[formatter_context]
class: oslo_log.formatters.ContextFormatter
args: (datefmt=datefmt)
format: %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user)s %(tenant)s] %(instance)s %(message)s
datefmt: %Y-%m-%d %H:%M:%S
# the "format" attr actually sets the "type"
[formatter_logstash]
class = logstash.LogstashFormatterVersion1
format = ironic
datefmt: %Y-%m-%d %H:%M:%S
07070100000047000081A40000000000000000000000015DB07469000008B1000000000000000000000000000000000000005A00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/templates/ironic-api.conf.j2{#
#
# (c) Copyright 2015-2017 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# 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.
#
#}
[DEFAULT]
verbose = {{ ironic_verbose }}
debug = {{ ironic_debug }}
log_config_append = {{ ironic_log_config_append }}
rpc_conn_pool_size = {{ ironic_rpc.conn_pool_size }}
use_stderr = false
use_syslog = false
notification_driver = {{ ironic_audit.notification_driver }}
{% if ironic_multi_tenancy_enabled|bool %}
enabled_network_interfaces = neutron,flat
{% endif %}
transport_url = rabbit://{{ ironic_rpc.hosts }}
[audit]
enabled = {{ ironic_audit.enable }}
audit_map_file = {{ ironic_audit.configfile }}
[oslo_policy]
policy_file = {{ ironic_policy_file }}
[oslo_messaging_rabbit]
ssl = {{ ironic_rpc.use_ssl }}
rpc_conn_pool_size = {{ ironic_rpc.conn_pool_size }}
kombu_reconnect_delay = {{ ironic_kombu_reconnect_delay }}
[ssl]
ca_file = {{ ironic_ca_file }}
[api]
public_endpoint = {{ ironic_api.url }}
host_ip = {{ ironic_api.host_ip }}
port = {{ ironic_api.port }}
[database]
connection = {{ ironic_db_connection }}
[keystone]
region_name = {{ ironic_region }}
[keystone_authtoken]
username = {{ ironic_api_admin.user }}
password = {{ ironic_api_admin.password }}
auth_type = password
project_name = {{ ironic_keystone_admin.tenant_name }}
auth_url = {{ ironic_api_admin.auth_uri }}
auth_uri = {{ keystone_auth_uri }}
auth_version = {{ ironic_keystone_admin.auth_version }}
cafile = {{ ironic_ca_file }}
region_name = {{ ironic_region }}
# NOTE(gyee): set the domain to 'Default' so it is forward
# compatible with Keystone V3
project_domain_name = {{ ironic_keystone_admin.default_domain }}
user_domain_name = {{ ironic_keystone_admin.default_domain }}
07070100000048000081A40000000000000000000000015DB0746900000CD4000000000000000000000000000000000000006800000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/templates/ironic-conductor-logging.conf.j2{#
#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
#}
[loggers]
keys: root, amqp, amqplib, boto, qpid, sqlalchemy, suds, iso8601, websocket, stevedore, taskflow, keystonemiddleware, middleware, messaging, urllib3connectionpool, urllib3retry, requrllib3connectionpool, requrllib3retry
[handlers]
keys: watchedfile, logstash
[formatters]
keys: context, logstash
[logger_root]
qualname: root
handlers: watchedfile, logstash
level: NOTSET
[logger_amqp]
qualname: amqp
handlers: watchedfile
level: WARNING
[logger_amqplib]
qualname: amqplib
handlers: watchedfile
level: WARNING
[logger_boto]
qualname: boto
handlers: watchedfile
level: WARNING
[logger_qpid]
qualname: qpid
handlers: watchedfile
level: WARNING
[logger_sqlalchemy]
qualname: sqlalchemy
handlers: watchedfile
level: WARNING
[logger_suds]
qualname: suds
handlers: watchedfile
level: INFO
[logger_iso8601]
qualname: iso8601
handlers: watchedfile
level: WARNING
[logger_websocket]
qualname: websocket
handlers: watchedfile
level: WARNING
[logger_stevedore]
qualname: stevedore
handlers: watchedfile
level: WARNING
[logger_taskflow]
qualname: taskflow
handlers: watchedfile
level: WARNING
[logger_middleware]
qualname: routes.middleware
handlers: watchedfile
level: WARNING
[logger_keystonemiddleware]
qualname: keystonemiddleware
handlers: watchedfile
level: WARNING
[logger_messaging]
qualname: oslo.messaging
handlers: watchedfile
level: INFO
[logger_urllib3connectionpool]
qualname: urllib3.connectionpool
handlers: watchedfile
level: WARNING
[logger_urllib3retry]
qualname: urllib3.util.retry
handlers: watchedfile
level: WARNING
[logger_requrllib3connectionpool]
qualname: requests.packages.urllib3.connectionpool
handlers: watchedfile
level: WARNING
[logger_requrllib3retry]
qualname: requests.packages.urllib3.util.retry
handlers: watchedfile
level: WARNING
# Writes to disk
[handler_watchedfile]
class: handlers.WatchedFileHandler
args: ('{{ ironic_logs_dir }}/{{ ironic_component }}.log',)
formatter: context
level: {{ ironic_conductor_loglevel }}
[handler_logstash]
class: handlers.WatchedFileHandler
args: ('{{ ironic_logs_dir }}/{{ ironic_component }}-json.log',)
formatter: logstash
level: {{ ironic_conductor_logstash_loglevel }}
# datefmt must be set otherwise you end up with too many (msecs) fields
[formatter_context]
class: oslo_log.formatters.ContextFormatter
args: (datefmt=datefmt)
format: %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user)s %(tenant)s] %(instance)s %(message)s
datefmt: %Y-%m-%d %H:%M:%S
# the "format" attr actually sets the "type"
[formatter_logstash]
class = logstash.LogstashFormatterVersion1
format = ironic
datefmt: %Y-%m-%d %H:%M:%S
07070100000049000081A40000000000000000000000015DB0746900001C1C000000000000000000000000000000000000006000000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/templates/ironic-conductor.conf.j2{#
#
# (c) Copyright 2015-2017 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# 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.
#
#}
[DEFAULT]
verbose = {{ ironic_verbose }}
debug = {{ ironic_debug }}
log_config_append = {{ ironic_log_config_append }}
rpc_conn_pool_size = {{ ironic_rpc.conn_pool_size }}
enabled_drivers = {{ ironic_enabled_drivers }}
rootwrap_config = {{ ironic_rootwrap_config_append }}
parallel_image_downloads = true
use_stderr = false
use_syslog = false
{% if ironic_multi_tenancy_enabled|bool %}
enabled_network_interfaces = neutron,flat
{% endif %}
transport_url = rabbit://{{ ironic_rpc.hosts }}
{% if ironic_boot_from_volume_enabled|bool %}
enabled_storage_interfaces = cinder
{% endif %}
[oslo_policy]
policy_file = {{ ironic_policy_file }}
[oslo_messaging_rabbit]
ssl = {{ ironic_rpc.use_ssl }}
rpc_conn_pool_size = {{ ironic_rpc.conn_pool_size }}
kombu_reconnect_delay = {{ ironic_kombu_reconnect_delay }}
[ssl]
ca_file = {{ ironic_ca_file }}
[database]
connection = {{ ironic_db_connection }}
[keystone]
region_name = {{ ironic_region }}
[keystone_authtoken]
username = {{ ironic_cnd_admin.user }}
password = {{ ironic_cnd_admin.password }}
auth_type = password
project_name = {{ ironic_keystone_admin.tenant_name }}
auth_url = {{ ironic_api_admin.auth_uri }}
auth_uri = {{ keystone_auth_uri }}
auth_version = {{ ironic_keystone_admin.auth_version }}
cafile = {{ ironic_ca_file }}
region_name = {{ ironic_region }}
# NOTE(gyee): set the domain to 'Default' so it is forward
# compatible with Keystone V3
project_domain_name = {{ ironic_keystone_admin.default_domain }}
user_domain_name = {{ ironic_keystone_admin.default_domain }}
[glance]
username = {{ ironic_cnd_admin.user }}
password = {{ ironic_cnd_admin.password }}
auth_type = password
project_name = {{ ironic_keystone_admin.tenant_name }}
auth_url = {{ ironic_api_admin.auth_uri }}
auth_version = {{ ironic_keystone_admin.auth_version }}
cafile = {{ ironic_ca_file }}
region_name = {{ ironic_region }}
# NOTE(gyee): set the domain to 'Default' so it is forward
# compatible with Keystone V3
project_domain_name = {{ ironic_keystone_admin.default_domain }}
user_domain_name = {{ ironic_keystone_admin.default_domain }}
{%- if agent_drivers_enabled|bool %}
swift_temp_url_key = {{ ironic_swift.temp_url_key }}
swift_endpoint_url = {{ ironic_swift.internal_endpoint }}
swift_api_version = {{ swift_api_version_result.stdout }}
swift_account = {{ swift_account_result.stdout }}
swift_container = {{ ironic_swift.container }}
{% endif %}
glance_cafile = {{ ironic_ca_file }}
[cinder]
username = {{ ironic_cnd_admin.user }}
password = {{ ironic_cnd_admin.password }}
auth_type = password
project_name = {{ ironic_keystone_admin.tenant_name }}
auth_url = {{ ironic_api_admin.auth_uri }}
auth_version = {{ ironic_keystone_admin.auth_version }}
cafile = {{ ironic_ca_file }}
region_name = {{ ironic_region }}
# NOTE(gyee): set the domain to 'Default' so it is forward
# compatible with Keystone V3
project_domain_name = {{ ironic_keystone_admin.default_domain }}
user_domain_name = {{ ironic_keystone_admin.default_domain }}
[neutron]
username = {{ ironic_cnd_admin.user }}
password = {{ ironic_cnd_admin.password }}
auth_type = password
project_name = {{ ironic_keystone_admin.tenant_name }}
auth_url = {{ ironic_api_admin.auth_uri }}
auth_version = {{ ironic_keystone_admin.auth_version }}
cafile = {{ ironic_ca_file }}
region_name = {{ ironic_region }}
# NOTE(gyee): set the domain to 'Default' so it is forward
# compatible with Keystone V3
project_domain_name = {{ ironic_keystone_admin.default_domain }}
user_domain_name = {{ ironic_keystone_admin.default_domain }}
url = {{ ironic_neutron.url }}
cleaning_network = {{ ironic_cleaning_network.uuid }}
{% if ironic_multi_tenancy_enabled|bool %}
provisioning_network_uuid = {{ ironic_provisioning_network.uuid }}
{% endif %}
{%- if oneview_enabled|bool %}
[oneview]
manager_url = {{ ironic_oneview.manager_url }}
username = {{ ironic_oneview.username }}
password = {{ oneview_password.stdout }}
allow_insecure_connections = {{ ironic_oneview.allow_insecure_connections }}
tls_cacert_file = {{ ironic_oneview.tls_cacert_file }}
{% endif %}
[pxe]
tftp_server = {{ ironic_images.tftp_server }}
images_path = {{ ironic_images.path }}
instance_master_path = {{ ironic_images.instance_master_path }}
pxe_append_params = {{ ironic_images.pxe_append_params }}
ipxe_enabled = {{ ironic_images.ipxe_enabled }}
pxe_config_template = {{ ironic_images.pxe_config_template }}
pxe_bootfile_name = {{ ironic_images.pxe_bootfile_name }}
uefi_pxe_config_template = {{ ironic_images.uefi_pxe_config_template }}
uefi_pxe_bootfile_name = {{ ironic_images.uefi_pxe_bootfile_name }}
ipxe_boot_script = {{ ironic_images.ipxe_boot_script }}
[deploy]
http_root = {{ ironic_images.http_root }}
http_url = {{ ironic_images.http_url }}
default_boot_option = {{ ironic_default_boot_option }}
[conductor]
api_url = {{ ironic_cnd.url }}
automated_clean = {{ ironic_automated_clean }}
power_state_change_timeout = {{ ironic_power_state_change_timeout }}
[oslo_messaging_notifications]
topics = notifications
driver = messaging
[ilo]
power_retry = {{ ironic_ilo.power_retry }}
power_wait = {{ ironic_ilo.power_wait }}
[inspector]
username = {{ ironic_api_admin.user }}
password = {{ ironic_api_admin.password }}
auth_type = password
project_name = {{ ironic_keystone_admin.tenant_name }}
auth_url = {{ ironic_api_admin.auth_uri }}
auth_version = {{ ironic_keystone_admin.auth_version }}
cafile = {{ ironic_ca_file }}
region_name = {{ ironic_region }}
# NOTE(gyee): set the domain to 'Default' so it is forward
# compatible with Keystone V3
project_domain_name = {{ ironic_keystone_admin.default_domain }}
user_domain_name = {{ ironic_keystone_admin.default_domain }}
[ipmi]
command_retry_timeout = {{ ironic_ipmi.command_retry_timeout }}
min_command_interval = {{ ironic_ipmi.min_command_interval }}
{%- if agent_drivers_enabled|bool %}
[swift]
swift_user_name = {{ ironic_swift.glance_user }}
swift_user_password = {{ ironic_swift.glance_password }}
swift_user_tenant_name = {{ ironic_swift.glance_tenant }}
swift_endpoint_url = {{ ironic_swift.internal_endpoint }}
endpoint_override = {{ ironic_swift.internal_endpoint }}/{{ swift_api_version_result.stdout }}/{{ swift_account_result.stdout }}
swift_api_version = {{ swift_api_version_result.stdout }}
swift_account = {{ swift_account_result.stdout }}
auth_type = password
auth_url = {{ ironic_cnd_admin.auth_uri }}
username = {{ ironic_swift.glance_user }}
password = {{ ironic_swift.glance_password}}
project_name = {{ ironic_swift.glance_tenant }}
default_domain_name = Default
{% endif %}
0707010000004A000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004200000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/vars0707010000004B000081A40000000000000000000000015DB07469000002EB000000000000000000000000000000000000004D00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/vars/debian.yml#
# (c) Copyright 2018 SUSE LLC
#
# 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.
#
---
deploy_images_package_name: ironic_deploy_images
ramdisk_filename: "ironic-deploy.initramfs"
kernel_filename: "ironic-deploy.kernel"
iso_filename: "ironic-deploy.iso"
0707010000004C000081A40000000000000000000000015DB07469000002E1000000000000000000000000000000000000004B00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-common/vars/suse.yml#
# (c) Copyright 2018 SUSE LLC
#
# 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.
#
---
deploy_images_package_name: openstack-ironic-image-x86_64
ramdisk_filename: "sles-initrd.xz"
kernel_filename: "sles-vmlinux"
iso_filename: "sles-deploy.iso"
0707010000004D000041ED0000000000000000000000085DB0746900000000000000000000000000000000000000000000004000000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor0707010000004E000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004900000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/defaults0707010000004F000081A40000000000000000000000015DB07469000002AE000000000000000000000000000000000000005200000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/defaults/main.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
ironic_component: "ironic-conductor"
07070100000050000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004900000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/handlers07070100000051000081A40000000000000000000000015DB07469000002D4000000000000000000000000000000000000005200000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/handlers/main.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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: restart xinetd
service: name=xinetd state=restarted
become: yes
07070100000052000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004500000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/meta07070100000053000081A40000000000000000000000015DB07469000002BF000000000000000000000000000000000000004E00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/meta/main.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# 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.
#
---
dependencies:
- role: ironic-common
- role: FND-AP207070100000054000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004600000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/tasks07070100000055000081A40000000000000000000000015DB0746900000E38000000000000000000000000000000000000005400000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/tasks/configure.yml#
# (c) Copyright 2015-2017 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# 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.
#
---
- include: ../../ironic-common/tasks/_set_directories.yml
vars:
ironic_pkg_result: "{{ ardana_notify_ironic_conductor_install_result }}"
- name: ironic-conductor | configure | create directories required by
ironic-conductor
become: yes
file:
path: "{{ item }}"
state: directory
owner: "{{ ironic_user }}"
group: "{{ ironic_group }}"
mode: 0775
with_items:
- "{{ ironic_images.path }}"
- "{{ ironic_images.instance_master_path }}"
- include: ../../ironic-common/tasks/_write_conf.yml
become: yes
src: "ironic-conductor.conf.j2"
dest: "{{ ironic_service_conf_dir }}/ironic-conductor.conf"
- name: ironic-conductor | configure | notify on ironic-conductor.conf change
command: /bin/true
register: ardana_notify_ironic_conductor_restart_required
when: write_conf_result.changed
- name: ironic-conductor | configure | Create Apache vhost config for Ironic
become: yes
template:
src: "ironic.conf.j2"
dest: "{{ apache2_vhost_dir }}/ironic.vhost"
mode: 0644
register: ardana_notify_ironic_conductor_apache_reload
- name: ironic-conductor | configure | Setup ironic user to allow sudo to run
ironic-rootwrap without password
become: yes
template:
src: "ironic-rootwrap.j2"
dest: /etc/sudoers.d/ironic-rootwrap
owner: root
group: root
mode: 0644
validate: 'visudo -cf %s'
- name: ironic-conductor | configure | Create a symbolic link between
filesystem and venv for ironic-rootwrap
become: yes
file:
src: "{{ ironic_service_bin_dir }}/ironic-rootwrap"
dest: /usr/local/bin/ironic-rootwrap
owner: "{{ ironic_user }}"
group: "{{ ironic_group }}"
force: yes
state: link
- name: ironic-conductor | configure | stop and disable the default tftpd
service
become: yes
service: name="{{ ironic_conductor_tftp_service }}" state=stopped enabled=no
- name: ironic-conductor | configure | disable the default tftpd
become: yes
shell: "systemctl disable {{ ironic_conductor_tftp_service }}.service"
- name: ironic-conductor | configure | Creating map-file
become: yes
template:
src: "map-file.j2"
dest: "{{ ironic_images.path }}/map-file"
owner: "{{ ironic_user }}"
group: "{{ ironic_group }}"
mode: 0644
- name: ironic-conductor | configure | Creating /etc/xinetd.d/tftp
become: yes
template:
src: "tftp.j2"
dest: "/etc/xinetd.d/tftp"
owner: "root"
group: "root"
mode: 0644
notify:
- restart xinetd
- name: ironic-conductor | configure | copy ipxe files
become: yes
command: cp "{{ item.src }}" "{{ item.dest }}" creates="{{ item.dest }}"
with_items: ironic_conductor_ipxe_files
- name: ironic-conductor | configure | copy ipxe files
file:
path: "{{ item.dest }}"
owner: "{{ ironic_user }}"
group: "{{ ironic_user }}"
mode: 0644
become: yes
with_items: ironic_conductor_ipxe_files
- include: ../../ironic-common/tasks/configure.yml
become: yes
07070100000056000081A40000000000000000000000015DB0746900000640000000000000000000000000000000000000005200000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/tasks/install.yml#
# (c) Copyright 2015-2017 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# 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: ironic-conductor | install | update venv cache
become: yes
install_package:
cache: update
- name: ironic-conductor | install | install ironic-conductor service
become: yes
install_package:
name: ironic
service: ironic-conductor
state: present
activate: act_off
register: ardana_notify_ironic_conductor_install_result
- name: ironic-conductor | install | Register persistent fact of install
command: /bin/true
register: ardana_notify_ironic_conductor_restart_required
when: ardana_notify_ironic_conductor_install_result.changed
- include: ../../ironic-common/tasks/_set_directories.yml
vars:
ironic_pkg_result: "{{ ardana_notify_ironic_conductor_install_result }}"
- name: ironic-conductor | install | Install dependencies
become: yes
package:
name: "{{ item }}"
state: present
with_items: ironic_conductor_packages
- include: ../../ironic-common/tasks/install.yml
become: yes
07070100000057000081A40000000000000000000000015DB07469000002F5000000000000000000000000000000000000004F00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/tasks/main.yml#
# (c) Copyright 2017 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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: ironic-conductor | main | Set os-specific variables
include_vars: "{{ ansible_os_family | lower }}.yml"
07070100000058000081A40000000000000000000000015DB0746900000B03000000000000000000000000000000000000005000000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/tasks/start.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# 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.
#
---
# Install Ironic Conductor
- name: ironic-conductor | start | Enable Ironic vhost
become: yes
file:
src: "{{ apache2_vhost_dir }}/ironic.vhost"
dest: "{{ apache2_vhost_dir }}/ironic.conf"
state: link
register: ardana_notify_ironic_conductor_apache_reload
# Make sure iSCSI Daemon process is running. This is needed by the classic
# PXE drivers (i.e. pxe_ipmitool)
- name: ironic-conductor | start | Start iscsid
become: yes
service:
name: iscsid
enabled: yes
state: started
register: ardana_notify_ironic_conductor_apache_reload
- name: ironic-conductor | start | Restart or reload apache
include: "{{ playbook_dir }}/roles/FND-AP2/tasks/start_reload.yml"
vars:
apache_reload_requested: "{{
ardana_notify_ironic_conductor_apache_reload is defined and
ardana_notify_ironic_conductor_apache_reload.changed }}"
apache_restart_requested: "{{
ardana_notify_ironic_common_restart_required is defined and
ardana_notify_ironic_common_restart_required.changed }}"
- name: ironic-conductor | start | activate the latest installed version
become: yes
install_package:
name: ironic
service: ironic-conductor
activate: act_on
version: "{{ ardana_notify_ironic_conductor_install_result.version }}"
when: ardana_notify_ironic_conductor_install_result is defined
- name: ironic-conductor | start | register persistent fact of activate
command: /bin/true
register: ardana_notify_ironic_conductor_restart_required
when: (ardana_notify_ironic_conductor_install_result is defined and
ardana_notify_ironic_conductor_install_result.changed)
- name: ironic-conductor | start | restart ironic-conductor service
become: yes
service: name=ironic-conductor state=restarted
when: (ardana_notify_ironic_common_restart_required is defined and
ardana_notify_ironic_common_restart_required.changed
) or (ardana_notify_ironic_conductor_restart_required is defined and
ardana_notify_ironic_conductor_restart_required.changed)
- name: ironic-conductor | start | start ironic-conductor service
become: yes
service: name=ironic-conductor state=started
07070100000059000081A40000000000000000000000015DB07469000002BD000000000000000000000000000000000000005100000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/tasks/status.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
- include: ../../ironic-common/tasks/_service_status.yml
0707010000005A000081A40000000000000000000000015DB0746900000540000000000000000000000000000000000000004F00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/tasks/stop.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# 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: ironic-conductor | stop | Disable Ironic vhost
become: yes
file:
state: absent
path: "{{ apache2_vhost_dir }}/ironic.conf"
register: ardana_notify_ironic_conductor_apache_reload
- name: ironic-conductor | stop | Reload apache after disabling Ironic vhost
include: "{{ playbook_dir }}/roles/FND-AP2/tasks/start_reload.yml"
vars:
apache_reload_requested: "{{ ardana_notify_ironic_conductor_apache_reload.changed }}"
- name: ironic-conductor | stop | stop ironic-conductor service
become: yes
service: name=ironic-conductor state=stopped
register: stop_result
failed_when: "stop_result|failed and 'service not found' not in
stop_result.msg"
0707010000005B000081A40000000000000000000000015DB0746900000C9B000000000000000000000000000000000000005A00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/tasks/swift_configure.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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: ironic-conductor | swift_configure | Check If Swift Temp Url Exists
shell: >
swift
--os-project-name {{ ironic_swift.glance_tenant }}
--os-username {{ ironic_swift.glance_user }}
--os-password {{ ironic_swift.glance_password }}
--os-auth-url {{ ironic_cnd_admin.auth_uri }}
--os-endpoint-type internalURL
--os-user-domain-name {{ ironic_keystone_admin.default_domain }}
--os-project-domain-name {{ ironic_keystone_admin.default_domain }}
--os-region-name {{ ironic_region }}
--os-identity-api-version {{ ironic_keystone_admin.auth_version }}
stat -v | awk '/StorageURL/{print $2}'
register: check_temp_url_result
when: agent_drivers_enabled
- name: ironic-conductor | swift_configure | Set Swift Temp URL
shell: >
swift
--os-project-name {{ ironic_swift.glance_tenant }}
--os-username {{ ironic_swift.glance_user }}
--os-password {{ ironic_swift.glance_password }}
--os-auth-url {{ ironic_cnd_admin.auth_uri }}
--os-endpoint-type internalURL
--os-user-domain-name {{ ironic_keystone_admin.default_domain }}
--os-project-domain-name {{ ironic_keystone_admin.default_domain }}
--os-region-name {{ ironic_region }}
--os-identity-api-version {{ ironic_keystone_admin.auth_version }}
post -m temp-url-key:{{ ironic_swift.temp_url_key }}
when:
- agent_drivers_enabled
- not('http' in check_temp_url_result)
- name: ironic-conductor | swift_configure | Get Swift Stat
shell: >
swift
--os-project-name {{ ironic_swift.glance_tenant }}
--os-username {{ ironic_swift.glance_user }}
--os-password {{ ironic_swift.glance_password }}
--os-auth-url {{ ironic_cnd_admin.auth_uri }}
--os-endpoint-type internalURL
--os-user-domain-name {{ ironic_keystone_admin.default_domain }}
--os-project-domain-name {{ ironic_keystone_admin.default_domain }}
--os-region-name {{ ironic_region }}
--os-identity-api-version {{ ironic_keystone_admin.auth_version }}
stat -v | awk '/StorageURL/{print $2}'
register: swift_stat_output_result
when: agent_drivers_enabled
- name: ironic-conductor | swift_configure | Get Swift API Version
shell: >
echo '{{ swift_stat_output_result.stdout }}' | awk -F'/' '{print $4}'
register: swift_api_version_result
when: agent_drivers_enabled
- name: ironic-conductor | swift_configure | Get Swift Account
shell: >
echo '{{ swift_stat_output_result.stdout }}' |
awk -F'{{ swift_api_version_result.stdout }}/' '{print $2}'
register: swift_account_result
when: agent_drivers_enabled
0707010000005C000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004A00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/templates0707010000005D000081A40000000000000000000000015DB074690000030A000000000000000000000000000000000000005D00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/templates/ironic-rootwrap.j2{#
#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
#}
Defaults:ironic !requiretty
ironic ALL = (root) NOPASSWD: /usr/local/bin/ironic-rootwrap {{ ironic_rootwrap_config_append }} *
0707010000005E000081A40000000000000000000000015DB0746900000589000000000000000000000000000000000000005900000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/templates/ironic.conf.j2{#
#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# 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.
#
#}
Listen {{ ironic_ipxe_http_address }}:{{ ironic_http_port }}
<VirtualHost *:{{ ironic_http_port }}>
SetEnv APACHE_RUN_USER {{ ironic_user }}
SetEnv APACHE_RUN_GROUP {{ ironic_group }}
SetEnv no-gzip 1
DocumentRoot {{ ironic_images_path }}
<Directory "{{ ironic_images_path }}">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
Allow from all
</Directory>
<Directory />
AllowOverride None
<Limit PUT DELETE>
Require host {{ host.my_dimensions.hostname }}
</Limit>
</Directory>
ErrorLog {{ ironic_logs_dir }}/ironic_ipxe_error.log
LogLevel info
CustomLog {{ ironic_logs_dir }}/ironic_ipxe_access.log combined
</VirtualHost>
0707010000005F000081A40000000000000000000000015DB07469000002E0000000000000000000000000000000000000005600000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/templates/map-file.j2{#
#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
#}
r ^([^/]) {{ironic_images_path}}/\1
r ^({{ironic_images_path}}/) {{ironic_images_path}}/\2
07070100000060000081A40000000000000000000000015DB07469000003C4000000000000000000000000000000000000005200000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/templates/tftp.j2{#
#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
#}
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -v -v -v -v -v -m {{ironic_images_path}}/map-file {{ironic_images_path}}
disable = no
flags = IPv4
}
07070100000061000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004500000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/vars07070100000062000081A40000000000000000000000015DB074690000051C000000000000000000000000000000000000005000000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/vars/debian.yml#
# (c) Copyright 2017 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
ironic_conductor_packages:
- ipxe
- syslinux-common
- pxelinux
- ipmitool
- tftpd-hpa
- qemu-utils
- dosfstools
- open-iscsi
- rpm2cpio
ironic_conductor_tftp_service: tftpd-hpa
ironic_conductor_ipxe_files:
- {
src: "/usr/lib/ipxe/undionly.kpxe",
dest: "{{ ironic_images_path }}/undionly.kpxe"
}
- {
src: "/boot/ipxe.efi",
dest: "{{ ironic_images_path }}/ipxe.efi"
}
- {
src: "/usr/lib/PXELINUX/pxelinux.0",
dest: "{{ ironic_images_path }}/pxelinux.0"
}
- {
src: "/usr/lib/syslinux/modules/bios/ldlinux.c32",
dest: "{{ ironic_images_path }}/ldlinux.c32"
}
07070100000063000081A40000000000000000000000015DB074690000051B000000000000000000000000000000000000004E00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-conductor/vars/suse.yml#
# (c) Copyright 2017 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# 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.
#
---
ironic_conductor_packages:
- dosfstools
- ipmitool
- ipxe-bootimgs
- logrotate
- open-iscsi
- openstack-suse-sudo
# - pxelinux
- qemu-tools
- rpm
- syslinux
- tftp
ironic_conductor_tftp_service: tftp
ironic_conductor_ipxe_files:
- {
src: "/usr/share/ipxe/undionly.kpxe",
dest: "{{ ironic_images_path }}/undionly.kpxe"
}
- {
src: "/usr/share/ipxe/ipxe-x86_64.efi",
dest: "{{ ironic_images_path }}/ipxe.efi"
}
# SLES comes with pxelinux 4.0 which does not load ldlinux.c32
- {
src: "/usr/share/syslinux/pxelinux.0",
dest: "{{ ironic_images_path }}/pxelinux.0"
}
07070100000064000041ED0000000000000000000000055DB0746900000000000000000000000000000000000000000000004100000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-monitoring07070100000065000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004A00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-monitoring/defaults07070100000066000081A40000000000000000000000015DB074690000033D000000000000000000000000000000000000005300000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-monitoring/defaults/main.yml#
# (c) Copyright 2015,2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
ironic_api_local_url: 'http://{{ host.bind.IRN_API.internal.ip_address }}:{{ host.bind.IRN_API.internal.port }}'
ironic_api_vip_url: '{{ IRN_API.advertises.vips.private[0].url }}'
07070100000067000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004600000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-monitoring/meta07070100000068000081A40000000000000000000000015DB07469000002D5000000000000000000000000000000000000004F00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-monitoring/meta/main.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
dependencies:
- { role: monasca-agent, run_mode: Use }
- role: ironic-common
07070100000069000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004700000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-monitoring/tasks0707010000006A000081A40000000000000000000000015DB0746900000537000000000000000000000000000000000000005E00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-monitoring/tasks/monasca_http_check.yml#
# (c) Copyright 2015,2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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: ironic-monitoring | monasca_monitoring | Setup active check against
ironic-api locally
become: yes
monasca_agent_plugin:
name: "httpcheck"
args: "use_keystone=True match_pattern=.*v1.*
url={{ ironic_api_local_url }}
dimensions=service:baremetal,component:ironic-api"
- name: ironic-monitoring | monasca_monitoring | Setup active check against
ironic-api VIP
become: yes
monasca_agent_plugin:
name: "httpcheck"
args: "use_keystone=True match_pattern=.*v1.*
url={{ ironic_api_vip_url }}
dimensions=service:baremetal,component:ironic-api-vip,\
monitored_host_type:vip,api_endpoint:private"
0707010000006B000081A40000000000000000000000015DB0746900000348000000000000000000000000000000000000006100000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-monitoring/tasks/monasca_process_check.yml#
# (c) Copyright 2015,2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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: ironic-monitoring | monasca_monitoring | Run monasca agent ironic
detection plugin
become: yes
monasca_agent_plugin:
name: "Ironic"
args: "disable_http_check=yes"
0707010000006C000041ED0000000000000000000000055DB0746900000000000000000000000000000000000000000000004200000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-oneview-cli0707010000006D000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004B00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-oneview-cli/defaults0707010000006E000081A40000000000000000000000015DB07469000002AA000000000000000000000000000000000000005400000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-oneview-cli/defaults/main.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
ironic_component: "ironicclient"
0707010000006F000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004700000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-oneview-cli/meta07070100000070000081A40000000000000000000000015DB07469000002AE000000000000000000000000000000000000005000000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-oneview-cli/meta/main.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
dependencies:
- role: ironic-common
07070100000071000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004800000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-oneview-cli/tasks07070100000072000081A40000000000000000000000015DB07469000003A7000000000000000000000000000000000000005600000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-oneview-cli/tasks/configure.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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: ironic-oneview-cli | configure | Create a symbolic link between
become: yes
file:
src: '{{ ''ironicclient'' | bin_dir }}/ironic-oneview'
dest: /usr/local/bin/ironic-oneview
owner: "{{ ironic_user }}"
group: "{{ ironic_group }}"
force: yes
state: link
07070100000073000041ED0000000000000000000000045DB0746900000000000000000000000000000000000000000000004500000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-post-configure07070100000074000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004A00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-post-configure/meta07070100000075000081A40000000000000000000000015DB07469000002AC000000000000000000000000000000000000005300000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-post-configure/meta/main.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
dependencies:
- role: ironic-conductor
07070100000076000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004B00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-post-configure/tasks07070100000077000081A40000000000000000000000015DB07469000003A2000000000000000000000000000000000000005C00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-post-configure/tasks/db_configure.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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: ironic-post-configure | db_configure | ironic-dbsync
command: "{{ ironic_service_bin_dir }}/ironic-dbsync \
--config-file {{ ironic_service_conf_dir }}/ironic-conductor.conf"
run_once_per: verb_hosts.IRN_CND
become: yes
become_user: "{{ ironic_user }}"
07070100000078000041ED0000000000000000000000055DB0746900000000000000000000000000000000000000000000004400000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-pre-configure07070100000079000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004D00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-pre-configure/defaults0707010000007A000081A40000000000000000000000015DB0746900000483000000000000000000000000000000000000005600000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-pre-configure/defaults/main.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
keystone:
service_tenant : "{{ KEY_API.vars.keystone_service_tenant }}"
ironic_admin_user : "{{ IRN_API.consumes_KEY_API.vars.keystone_ironic_user }}"
ironic_admin_password : "{{ IRN_API.consumes_KEY_API.vars.keystone_ironic_password }}"
role: "{{ KEY_API.vars.keystone_admin_role }}"
default_domain : "Default"
endpoint: "{{ IRN_API.consumes_KEY_API.vips.private[0].url }}/v3"
admin_user: "{{ KEY_API.vars.keystone_admin_user }}"
admin_password: "{{ KEY_API.vars.keystone_admin_pwd | quote }}"
0707010000007B000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004900000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-pre-configure/meta0707010000007C000081A40000000000000000000000015DB07469000002A9000000000000000000000000000000000000005200000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-pre-configure/meta/main.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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.
#
---
dependencies:
- role: ironic-common
0707010000007D000041ED0000000000000000000000025DB0746900000000000000000000000000000000000000000000004A00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-pre-configure/tasks0707010000007E000081A40000000000000000000000015DB07469000007B7000000000000000000000000000000000000005C00000000ardana-ironic-8.0+git.1571845225.006843d/roles/ironic-pre-configure/tasks/keystone_conf.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# 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: ironic-pre-configure | keystone_conf | Get a domain scoped token
keystone_v3:
endpoint: "{{ keystone.endpoint }}"
login_username: "{{ keystone.admin_user }}"
login_password: "{{ keystone.admin_password }}"
login_user_domain_name: "{{ keystone.default_domain }}"
login_domain_name: "{{ keystone.default_domain }}"
action: "token_get"
run_once: true
register: domain_scoped_token_result
- name: ironic-pre-configure | keystone_conf | create ironic service user
keystone_v3:
action : "create_user"
endpoint: "{{ keystone.endpoint }}"
login_token: "{{ domain_scoped_token_result.result }}"
user_name: "{{ keystone.ironic_admin_user }}"
user_password: "{{ keystone.ironic_admin_password }}"
user_domain_name: "{{ keystone.default_domain }}"
run_once: true
- name: ironic-pre-configure | keystone_conf | Grant project role
user-role assignment
keystone_v3:
action: "grant_project_role"
endpoint: "{{ keystone.endpoint }}"
login_token: "{{ domain_scoped_token_result.result }}"
project_name: "{{ keystone.service_tenant }}"
user_name: "{{ keystone.ironic_admin_user }}"
role_name: "{{ keystone.role }}"
user_domain_name: "{{ keystone.default_domain }}"
project_domain_name: "{{ keystone.default_domain }}"
run_once: true
07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000B00000000TRAILER!!!334 blocks