Merge "Removal of legacy roles and related updates"
This commit is contained in:
commit
909b22f2e3
22
README.rst
22
README.rst
@ -11,11 +11,11 @@ This is split into roughly three steps:
|
|||||||
- install:
|
- install:
|
||||||
prepare the local environment by downloading and/or building machine images,
|
prepare the local environment by downloading and/or building machine images,
|
||||||
and installing and configuring the necessary services.
|
and installing and configuring the necessary services.
|
||||||
- enroll:
|
- enroll-dynamic:
|
||||||
take as input a customizable hardware inventory file and enroll the
|
take as input a customizable hardware inventory file and enroll the
|
||||||
listed hardware with Ironic, configuring each appropriately for deployment
|
listed hardware with Ironic, configuring each appropriately for deployment
|
||||||
with the previously-downloaded images.
|
with the previously-downloaded images.
|
||||||
- deploy:
|
- deploy-dynamic:
|
||||||
instruct Ironic to deploy the operating system onto each machine.
|
instruct Ironic to deploy the operating system onto each machine.
|
||||||
|
|
||||||
Supported Operating Systems:
|
Supported Operating Systems:
|
||||||
@ -285,15 +285,6 @@ source, and then executing the the enrollment playbook.::
|
|||||||
export BIFROST_INVENTORY_SOURCE=/tmp/baremetal.json
|
export BIFROST_INVENTORY_SOURCE=/tmp/baremetal.json
|
||||||
ansible-playbook -vvvv -i inventory/bifrost_inventory.py enroll-dynamic.yaml
|
ansible-playbook -vvvv -i inventory/bifrost_inventory.py enroll-dynamic.yaml
|
||||||
|
|
||||||
The legacy enroll.yaml playbook requires a variable (baremetal_csv_file) be
|
|
||||||
set or passed into the playbook execution. NOTE: This MUST be the full path
|
|
||||||
to the CSV file to be consumed by the Ansible playbooks and loaded into
|
|
||||||
ironic.
|
|
||||||
|
|
||||||
Example::
|
|
||||||
|
|
||||||
ansible-playbook -i inventory/localhost -vvvv enroll.yaml -e baremetal_csv_file=inventory/baremetal.csv
|
|
||||||
|
|
||||||
Note that enrollment is a one-time operation. The Ansible module *does not*
|
Note that enrollment is a one-time operation. The Ansible module *does not*
|
||||||
synchronize data for existing nodes. You should use the Ironic CLI to do this
|
synchronize data for existing nodes. You should use the Ironic CLI to do this
|
||||||
manually at the moment.
|
manually at the moment.
|
||||||
@ -312,24 +303,17 @@ utilize configuration drives to convey basic configuration information to the
|
|||||||
each host. This configuration information includes an SSH key to allow a user
|
each host. This configuration information includes an SSH key to allow a user
|
||||||
to login to the system.
|
to login to the system.
|
||||||
|
|
||||||
This case is the same between the newer deploy-dynamic.yaml playbook and the
|
|
||||||
older legacy deploy.yaml playbook.
|
|
||||||
|
|
||||||
To utilize the newer dynamic inventory based deployment::
|
To utilize the newer dynamic inventory based deployment::
|
||||||
|
|
||||||
export BIFROST_INVENTORY_SOURCE=/tmp/baremetal.json
|
export BIFROST_INVENTORY_SOURCE=/tmp/baremetal.json
|
||||||
ansible-playbook -vvvv -i inventory/bifrost_inventory.py deploy-dynamic.yaml
|
ansible-playbook -vvvv -i inventory/bifrost_inventory.py deploy-dynamic.yaml
|
||||||
|
|
||||||
To utilize the legacy csv file based playbook::
|
|
||||||
|
|
||||||
ansible-playbook -i inventory/localhost -vvvv deploy.yaml -e baremetal_csv_file=inventory/baremetal.csv
|
|
||||||
|
|
||||||
Testing with a single command
|
Testing with a single command
|
||||||
=============================
|
=============================
|
||||||
|
|
||||||
A simple ``scripts/test-bifrost.sh`` script can be utilized to install pre-requisite software packages, Ansible, and then execute the test-bifrost.yaml playbook in order to provide a single step testing mechanism.
|
A simple ``scripts/test-bifrost.sh`` script can be utilized to install pre-requisite software packages, Ansible, and then execute the test-bifrost.yaml playbook in order to provide a single step testing mechanism.
|
||||||
|
|
||||||
The playbook utilized by the script, ``playbooks/test-bifrost.yaml``, is a single playbook that will create a local virtual machine, save a baremetal.csv file out, and then utilize it to execute the remaining roles. Two additional roles are invoked by this playbook which enables Ansible to connect to the new nodes by adding them to the inventory, and then logging into the remote machine via the user's ssh host key. Once that has successfully occurred, additional roles will unprovision the host(s) and delete them from Ironic.
|
The playbook utilized by the script, ``playbooks/test-bifrost-dynamic.yaml``, is a single playbook that will create a local virtual machine, save a baremetal.csv file out, and then utilize it to execute the remaining roles. Two additional roles are invoked by this playbook which enables Ansible to connect to the new nodes by adding them to the inventory, and then logging into the remote machine via the user's ssh host key. Once that has successfully occurred, additional roles will unprovision the host(s) and delete them from Ironic.
|
||||||
|
|
||||||
Command::
|
Command::
|
||||||
|
|
||||||
|
@ -1,20 +1,9 @@
|
|||||||
---
|
---
|
||||||
- hosts: localhost
|
- hosts: localhost
|
||||||
connection: local
|
connection: local
|
||||||
name: "Enroll hardware from baremetal.csv into Ironic"
|
name: "Provide deprecation notice"
|
||||||
sudo: yes
|
sudo: no
|
||||||
gather_facts: yes
|
gather_facts: no
|
||||||
pre_tasks:
|
pre_tasks:
|
||||||
- name: "Error if variable baremetal_csv_file is not defined"
|
- name: "Error"
|
||||||
local_action: fail msg="baremetal_csv_file must be defined for this playbook to execute, please pass option '-e baremetal_csv_file=<path/to/file>'"
|
local_action: fail msg="Legacy roles have been removed. Please use dynamic inventory and deploy-dynamic.yaml"
|
||||||
when: baremetal_csv_file is not defined
|
|
||||||
roles:
|
|
||||||
- role: bifrost-validate-host-for-deploy
|
|
||||||
baremetal_csv_file: "{{ baremetal_csv_file }}"
|
|
||||||
- hosts: localhost
|
|
||||||
connection: local
|
|
||||||
name: "Enroll hardware from baremetal.csv into Ironic"
|
|
||||||
gather_facts: yes
|
|
||||||
roles:
|
|
||||||
- role: bifrost-configdrives
|
|
||||||
- role: bifrost-setup-nodes
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
---
|
---
|
||||||
- hosts: localhost
|
- hosts: localhost
|
||||||
connection: local
|
connection: local
|
||||||
name: "Enroll hardware from baremetal.csv into Ironic"
|
name: "Provide deprecation notice"
|
||||||
sudo: yes
|
sudo: no
|
||||||
gather_facts: yes
|
gather_facts: no
|
||||||
roles:
|
pre_tasks:
|
||||||
- role: ironic-enroll
|
- name: "Error"
|
||||||
baremetal_csv_file: "{{ baremetal_csv_file | mandatory }}"
|
local_action: fail msg="Legacy roles have been removed. Please use dynamic inventory and enroll-dynamic.yaml"
|
||||||
|
@ -1,70 +0,0 @@
|
|||||||
bifrost-configdrives
|
|
||||||
====================
|
|
||||||
|
|
||||||
Creates configdrives for nodes being provisioned in Bifrost.
|
|
||||||
|
|
||||||
Requirements
|
|
||||||
------------
|
|
||||||
|
|
||||||
This playbook is intended to be executed prior to the deployments of nodes via the bifrost-setup-nodes role, as part of Bifrost. It creates a basic configuration drive containing network configuration and an SSH key permitting the user to login to the host.
|
|
||||||
|
|
||||||
Role Variables
|
|
||||||
--------------
|
|
||||||
|
|
||||||
This role, like the other deployment related bifrost playbooks are intended to be executed with the "baremetal_csv_file" variable which points to the file used to define the enrolled nodes that wish to be deployed upon.
|
|
||||||
|
|
||||||
Additional key variables are:
|
|
||||||
|
|
||||||
ipv4_subnet_mask: This is the subnet mask(e.g. 255.255.255.0 or similar) that matches the static addressing which desires to be imprinted into the configuration drive.
|
|
||||||
ipv4_gateway: This is the IPv4 default router address with-in the IPv4 subnet being utilized for IP addresses for the nodes being deployed.
|
|
||||||
node_default_network_interface: This is the default network interface with-in the nodes to be deployed which the new IP configuration will be applied to. Note: This is likely to be deprecated and removed in the future as Bifrost will likely change methods utilized to include networking configuration into the configuration drive sufficiently that this should no longer be required.
|
|
||||||
ipv4_nameserver: Defines the IPv4 Nameserver to configure the node with initially in order to support name resolution.
|
|
||||||
ssh_public_key_path: Defines the path to the file to be SSH public key to be inserted into the configuration drive.
|
|
||||||
ssh_public_key: If a user wishes to define an SSH public key as a string, this variable can be utilized which overrides ssh_public_key_path.
|
|
||||||
|
|
||||||
Customizing
|
|
||||||
-----------
|
|
||||||
|
|
||||||
The attempt with this playbook is to create a very simple and easily modifiable configuration drive to be loaded to the remote machine. This is naturally done each time the role is executed for every node defined in the baremetal_csv_file. If one wishes to insert additional files, this can be done by editing the tasks/main.yml file. As the drives are generated in a stepwise fashion, it is important to make note of and use the "{{item.split(',')[9]}}" variable as that is utilized to delineate the file destinations between different configuration drives.
|
|
||||||
|
|
||||||
Additional detail on the format of configuration drives can be found at http://docs.openstack.org/user-guide/content/enable_config_drive.html.
|
|
||||||
|
|
||||||
If one wishes to manually modify a configuration drive after the fact, the files are base64 encoded, gzip compressed, ISO9660 filesystems. Ironic will fail the deployment of the configuration drive if the file is not first found to be base64 encoded, and then gzip compressed. Alternatively, the configuration drive can be a vfat filesystem, although this carries with it some risks if the filesystem is always treated as a source of truth upon system boot.
|
|
||||||
|
|
||||||
One final note. The size of the configuration drives is limited to 64MB. This is not a limit of Bifrost, but a limit due to the code utilized to write the configuration drive out.
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
------------
|
|
||||||
|
|
||||||
This role is expected to be executed on a system that has had the ironic-install role executed upon it, however as the configuration drive creation step is fairly self contained, it can be executed as a separate step.
|
|
||||||
|
|
||||||
Example Playbook
|
|
||||||
----------------
|
|
||||||
|
|
||||||
- hosts: localhost
|
|
||||||
connection: local
|
|
||||||
sudo: no
|
|
||||||
roles:
|
|
||||||
- role: bifrost-configdrives
|
|
||||||
|
|
||||||
License
|
|
||||||
-------
|
|
||||||
|
|
||||||
Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
Author Information
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Ironic Developers
|
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# defaults file for bifrost-configdrives
|
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# handlers file for bifrost-configdrives
|
|
@ -1,116 +0,0 @@
|
|||||||
---
|
|
||||||
galaxy_info:
|
|
||||||
author: Ironic Developers
|
|
||||||
description: Creates a basic configdrive for Bifrost
|
|
||||||
company: OpenStack
|
|
||||||
license: Apache
|
|
||||||
min_ansible_version: 1.9
|
|
||||||
#
|
|
||||||
# Below are all platforms currently available. Just uncomment
|
|
||||||
# the ones that apply to your role. If you don't see your
|
|
||||||
# platform on this list, let us know and we'll get it added!
|
|
||||||
#
|
|
||||||
platforms:
|
|
||||||
#- name: EL
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 5
|
|
||||||
# - 6
|
|
||||||
# - 7
|
|
||||||
#- name: GenericUNIX
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: Fedora
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 16
|
|
||||||
# - 17
|
|
||||||
# - 18
|
|
||||||
# - 19
|
|
||||||
# - 20
|
|
||||||
#- name: SmartOS
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: opensuse
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 12.1
|
|
||||||
# - 12.2
|
|
||||||
# - 12.3
|
|
||||||
# - 13.1
|
|
||||||
# - 13.2
|
|
||||||
#- name: Amazon
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 2013.03
|
|
||||||
# - 2013.09
|
|
||||||
#- name: GenericBSD
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: FreeBSD
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 8.0
|
|
||||||
# - 8.1
|
|
||||||
# - 8.2
|
|
||||||
# - 8.3
|
|
||||||
# - 8.4
|
|
||||||
# - 9.0
|
|
||||||
# - 9.1
|
|
||||||
# - 9.1
|
|
||||||
# - 9.2
|
|
||||||
#- name: Ubuntu
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - lucid
|
|
||||||
# - maverick
|
|
||||||
# - natty
|
|
||||||
# - oneiric
|
|
||||||
# - precise
|
|
||||||
# - quantal
|
|
||||||
# - raring
|
|
||||||
# - saucy
|
|
||||||
- trusty
|
|
||||||
#- name: SLES
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 10SP3
|
|
||||||
# - 10SP4
|
|
||||||
# - 11
|
|
||||||
# - 11SP1
|
|
||||||
# - 11SP2
|
|
||||||
# - 11SP3
|
|
||||||
#- name: GenericLinux
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: Debian
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - etch
|
|
||||||
# - lenny
|
|
||||||
# - squeeze
|
|
||||||
# - wheezy
|
|
||||||
#
|
|
||||||
# Below are all categories currently available. Just as with
|
|
||||||
# the platforms above, uncomment those that apply to your role.
|
|
||||||
#
|
|
||||||
categories:
|
|
||||||
- cloud
|
|
||||||
- cloud:openstack
|
|
||||||
#- cloud:gce
|
|
||||||
#- cloud:rax
|
|
||||||
#- clustering
|
|
||||||
#- database
|
|
||||||
#- database:nosql
|
|
||||||
#- database:sql
|
|
||||||
#- development
|
|
||||||
#- monitoring
|
|
||||||
#- networking
|
|
||||||
#- packaging
|
|
||||||
#- system
|
|
||||||
#- web
|
|
||||||
dependencies: []
|
|
@ -1,66 +0,0 @@
|
|||||||
# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
---
|
|
||||||
- name: "Identify ssh_public_key if ssh_public_key_path is defined"
|
|
||||||
include: ssh_public_key_path.yaml
|
|
||||||
when: ssh_public_key is undefined and ssh_public_key_path is defined
|
|
||||||
- name: "Name Make Temporary folder to build configdrive"
|
|
||||||
local_action: command mktemp -d
|
|
||||||
register: variable_configdrive_location
|
|
||||||
- name: "Make Metadata folder - /openstack/2012-08-10"
|
|
||||||
local_action: file state=directory name={{ variable_configdrive_location.stdout }}/{{item.split(',')[9]}}/openstack/2012-08-10/
|
|
||||||
with_lines:
|
|
||||||
- cat {{ baremetal_csv_file }}
|
|
||||||
- name: "Make Metadata folder - /openstack/latest"
|
|
||||||
local_action: file state=directory name={{ variable_configdrive_location.stdout }}/{{item.split(',')[9]}}/openstack/latest/
|
|
||||||
with_lines:
|
|
||||||
- cat {{ baremetal_csv_file }}
|
|
||||||
- name: "Place template in each openstack/2012-08-10 folder"
|
|
||||||
local_action: template src=openstack_meta_data.json.j2 dest={{ variable_configdrive_location.stdout }}/{{item.split(',')[9]}}/openstack/2012-08-10/meta_data.json
|
|
||||||
with_lines:
|
|
||||||
- cat {{ baremetal_csv_file }}
|
|
||||||
- name: "Place template in each openstack/latest folder"
|
|
||||||
local_action: template src=openstack_meta_data.json.j2 dest={{ variable_configdrive_location.stdout }}/{{item.split(',')[9]}}/openstack/latest/meta_data.json
|
|
||||||
with_lines:
|
|
||||||
- cat {{ baremetal_csv_file }}
|
|
||||||
- name: "Place network info template in each openstack/latest folder"
|
|
||||||
local_action: template src=network_info.json.j2 dest={{ variable_configdrive_location.stdout }}/{{item.split(',')[9]}}/openstack/latest/network_info.json
|
|
||||||
with_lines:
|
|
||||||
- cat {{ baremetal_csv_file }}
|
|
||||||
- name: "Make Metadata folder - /openstack/latest"
|
|
||||||
local_action: file state=directory name={{ variable_configdrive_location.stdout }}/{{item.split(',')[9]}}/openstack/content/
|
|
||||||
with_lines:
|
|
||||||
- cat {{ baremetal_csv_file }}
|
|
||||||
- name: "Write network interface template"
|
|
||||||
local_action: template src=interfaces.j2 dest={{ variable_configdrive_location.stdout }}/{{item.split(',')[9]}}/openstack/content/0000
|
|
||||||
with_lines:
|
|
||||||
- cat {{ baremetal_csv_file }}
|
|
||||||
- name: "Make config drive files"
|
|
||||||
sudo: yes
|
|
||||||
local_action: command mkisofs -R -V config-2 -o {{http_boot_folder}}/configdrive-{{item.split(',')[9]}}.iso {{ variable_configdrive_location.stdout }}/{{item.split(',')[9]}}
|
|
||||||
with_lines:
|
|
||||||
- cat {{ baremetal_csv_file }}
|
|
||||||
- name: "Make config drive files base64 encoded and gzip compressed"
|
|
||||||
sudo: yes
|
|
||||||
local_action: shell gzip -c {{http_boot_folder}}/configdrive-{{item.split(',')[9]}}.iso | base64 > {{http_boot_folder}}/configdrive-{{item.split(',')[9]}}.iso.gz
|
|
||||||
with_lines:
|
|
||||||
- cat {{ baremetal_csv_file }}
|
|
||||||
- name: "Cleanup configdrive .iso files"
|
|
||||||
sudo: yes
|
|
||||||
local_action: file state=absent name={{http_boot_folder}}/configdrive-{{item.split(',')[9]}}.iso
|
|
||||||
with_lines:
|
|
||||||
- cat {{ baremetal_csv_file }}
|
|
||||||
- name: "Cleanup configdrive temp folder"
|
|
||||||
sudo: yes
|
|
||||||
local_action: file state=absent force=yes name={{ variable_configdrive_location.stdout }}
|
|
@ -1,23 +0,0 @@
|
|||||||
# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
---
|
|
||||||
- name: "Defined ssh_public_key_path - Check to see if there is a file where the ssh_public_key_path is defined"
|
|
||||||
local_action: stat path={{ ssh_public_key_path }}
|
|
||||||
register: test_ssh_public_key_path
|
|
||||||
when: ssh_public_key_path is defined
|
|
||||||
- name: "Defined ssh_public_key_path - Error if ssh_public_key_path is not valid"
|
|
||||||
local_action: fail msg="ssh_public_key_path is not valid."
|
|
||||||
when: test_ssh_public_key_path.stat.exists == false
|
|
||||||
- name: "Defined ssh_public_key_path - Read ssh public key in"
|
|
||||||
set_fact: ssh_public_key="{{ lookup('file', ssh_public_key_path ) }}"
|
|
@ -1,10 +0,0 @@
|
|||||||
# interfaces(5) file used by ifup(8) and ifdown(8)
|
|
||||||
auto lo
|
|
||||||
iface lo inet loopback
|
|
||||||
|
|
||||||
auto {{ node_default_network_interface }}
|
|
||||||
iface {{ node_default_network_interface }} inet static
|
|
||||||
address {{ item.split(',')[11] }}
|
|
||||||
netmask {{ ipv4_subnet_mask }}
|
|
||||||
gateway {{ ipv4_gateway }}
|
|
||||||
dns-nameservers {{ ipv4_nameserver }}
|
|
@ -1,35 +0,0 @@
|
|||||||
{
|
|
||||||
"links": [
|
|
||||||
{
|
|
||||||
"id": "{{node_default_network_interface}}",
|
|
||||||
"type": "phy",
|
|
||||||
"ethernet_mac_address": "{{item.split(',')[0]}}",
|
|
||||||
"mtu":{{network_mtu}}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"networks": [
|
|
||||||
{
|
|
||||||
"id": "publicnet-ipv",
|
|
||||||
"type": "ipv4",
|
|
||||||
"link": "{{ node_default_network_interface }}",
|
|
||||||
"ip_address": "{{item.split(',')[11]}}",
|
|
||||||
"netmask": "{{ipv4_subnet_mask}}",
|
|
||||||
"dns_nameservers": [
|
|
||||||
"{{ipv4_nameserver}}"
|
|
||||||
],
|
|
||||||
"routes": [
|
|
||||||
{
|
|
||||||
"network": "0.0.0.0",
|
|
||||||
"netmask": "0.0.0.0",
|
|
||||||
"gateway": "{{ipv4_gateway}}"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"services": [
|
|
||||||
{
|
|
||||||
"type": "dns",
|
|
||||||
"address": "{{ipv4_nameserver}}"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
"availability_zone": "",
|
|
||||||
"files": [
|
|
||||||
{
|
|
||||||
"content_path": "/content/0000",
|
|
||||||
"path": "/etc/network/interfaces"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"hostname": "{{item.split(',')[10]}}",
|
|
||||||
"name": "{{item.split(',')[10]}}",
|
|
||||||
"meta": {},
|
|
||||||
"public_keys": {
|
|
||||||
"mykey": "{{ ssh_public_key }}"
|
|
||||||
},
|
|
||||||
"uuid": "{{item.split(',')[9]}}"
|
|
||||||
}
|
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# vars file for bifrost-configdrives
|
|
@ -1,56 +0,0 @@
|
|||||||
bifrost-prepare-for-test
|
|
||||||
========================
|
|
||||||
|
|
||||||
Enrolls nodes that have been stood up by the deployment module in Bifrost, into the in-memory inventory for basic testing as hosts in the testvm group.
|
|
||||||
|
|
||||||
Requirements
|
|
||||||
------------
|
|
||||||
|
|
||||||
This role requires the baremetal_csv_file variable which is utilized to add entries to the in-memory inventory.
|
|
||||||
|
|
||||||
Role Variables
|
|
||||||
--------------
|
|
||||||
|
|
||||||
baremetal_csv_file: This is the CSV file that defines the list of nodes to enroll and deploy as part of Bifrost.
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
------------
|
|
||||||
|
|
||||||
This role is dependent upon an environment having been installed with the install-ironic role, as well as by the bifrost-config-drives and bifrost-setup-nodes roles.
|
|
||||||
|
|
||||||
As this role is purely for testing, dependencies are not hard coded into the role.
|
|
||||||
|
|
||||||
Example Playbook
|
|
||||||
----------------
|
|
||||||
|
|
||||||
- hosts: localhost
|
|
||||||
connection: local
|
|
||||||
name: "Executes install, enrollment, and testing in one playbook"
|
|
||||||
sudo: no
|
|
||||||
gather_facts: yes
|
|
||||||
roles:
|
|
||||||
- role: bifrost-configdrives
|
|
||||||
- role: bifrost-setup-nodes
|
|
||||||
- role: bifrost-prepare-for-test
|
|
||||||
|
|
||||||
License
|
|
||||||
-------
|
|
||||||
|
|
||||||
Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
Author Information
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Ironic Developers
|
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# defaults file for bifrost-prepare-for-test
|
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# handlers file for bifrost-prepare-for-test
|
|
@ -1,116 +0,0 @@
|
|||||||
---
|
|
||||||
galaxy_info:
|
|
||||||
author: Ironic Developers
|
|
||||||
description: Prepare for basic bifrost testing.
|
|
||||||
company: OpenStack
|
|
||||||
license: Apache
|
|
||||||
min_ansible_version: 1.9
|
|
||||||
#
|
|
||||||
# Below are all platforms currently available. Just uncomment
|
|
||||||
# the ones that apply to your role. If you don't see your
|
|
||||||
# platform on this list, let us know and we'll get it added!
|
|
||||||
#
|
|
||||||
platforms:
|
|
||||||
#- name: EL
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 5
|
|
||||||
# - 6
|
|
||||||
# - 7
|
|
||||||
#- name: GenericUNIX
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: Fedora
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 16
|
|
||||||
# - 17
|
|
||||||
# - 18
|
|
||||||
# - 19
|
|
||||||
# - 20
|
|
||||||
#- name: SmartOS
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: opensuse
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 12.1
|
|
||||||
# - 12.2
|
|
||||||
# - 12.3
|
|
||||||
# - 13.1
|
|
||||||
# - 13.2
|
|
||||||
#- name: Amazon
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 2013.03
|
|
||||||
# - 2013.09
|
|
||||||
#- name: GenericBSD
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: FreeBSD
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 8.0
|
|
||||||
# - 8.1
|
|
||||||
# - 8.2
|
|
||||||
# - 8.3
|
|
||||||
# - 8.4
|
|
||||||
# - 9.0
|
|
||||||
# - 9.1
|
|
||||||
# - 9.1
|
|
||||||
# - 9.2
|
|
||||||
#- name: Ubuntu
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - lucid
|
|
||||||
# - maverick
|
|
||||||
# - natty
|
|
||||||
# - oneiric
|
|
||||||
# - precise
|
|
||||||
# - quantal
|
|
||||||
# - raring
|
|
||||||
# - saucy
|
|
||||||
- trusty
|
|
||||||
#- name: SLES
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 10SP3
|
|
||||||
# - 10SP4
|
|
||||||
# - 11
|
|
||||||
# - 11SP1
|
|
||||||
# - 11SP2
|
|
||||||
# - 11SP3
|
|
||||||
#- name: GenericLinux
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: Debian
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - etch
|
|
||||||
# - lenny
|
|
||||||
# - squeeze
|
|
||||||
# - wheezy
|
|
||||||
#
|
|
||||||
# Below are all categories currently available. Just as with
|
|
||||||
# the platforms above, uncomment those that apply to your role.
|
|
||||||
#
|
|
||||||
categories:
|
|
||||||
- cloud
|
|
||||||
- cloud:openstack
|
|
||||||
#- cloud:gce
|
|
||||||
#- cloud:rax
|
|
||||||
#- clustering
|
|
||||||
#- database
|
|
||||||
#- database:nosql
|
|
||||||
#- database:sql
|
|
||||||
#- development
|
|
||||||
#- monitoring
|
|
||||||
#- networking
|
|
||||||
#- packaging
|
|
||||||
#- system
|
|
||||||
#- web
|
|
||||||
dependencies: []
|
|
@ -1,34 +0,0 @@
|
|||||||
# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
---
|
|
||||||
- name: "Waiting for the base testvm machine to become available."
|
|
||||||
wait_for: state=started port=22 host={{ item.split(',')[11] }} timeout=900
|
|
||||||
with_lines:
|
|
||||||
- cat {{ baremetal_csv_file }}
|
|
||||||
- name: "Pausing for 4 seconds to allow testvm to become fully operational and to avoid any potential sshd startup race."
|
|
||||||
# NOTE(TheJulia): AFAIK sshd opens it's socket and then loads/generates
|
|
||||||
# keys, which can become visible as a race, hence the four second pause.
|
|
||||||
pause: seconds=4
|
|
||||||
- name: "Adding testvms to Ansible Inventory"
|
|
||||||
add_host: name="{{ item.split(',')[11] }}:22" groups=testvm
|
|
||||||
with_lines:
|
|
||||||
- cat {{ baremetal_csv_file }}
|
|
||||||
- name: "Removing testvm hosts from ssh known_hosts file."
|
|
||||||
command: ssh-keygen -R "{{ item.split(',')[11] }}"
|
|
||||||
with_lines:
|
|
||||||
- cat {{ baremetal_csv_file }}
|
|
||||||
- name: "Adding testvm hosts from ssh known_hosts file."
|
|
||||||
shell: ssh-keyscan "{{ item.split(',')[11] }}" >> "{{ ansible_env.HOME }}/.ssh/known_hosts"
|
|
||||||
with_lines:
|
|
||||||
- cat {{ baremetal_csv_file }}
|
|
@ -1,4 +0,0 @@
|
|||||||
---
|
|
||||||
cleaning: false
|
|
||||||
testing: true
|
|
||||||
baremetal_csv_file: "/tmp/baremetal.csv"
|
|
@ -1,57 +0,0 @@
|
|||||||
bifrost-unprovision-nodes
|
|
||||||
=========================
|
|
||||||
|
|
||||||
This role unprovisions nodes. Essentially calls `ironic node-set-provisioned-state <uuid> deleted`
|
|
||||||
|
|
||||||
|
|
||||||
Requirements
|
|
||||||
------------
|
|
||||||
|
|
||||||
An enrolled node, and a baremetal.csv file provided via the environment variable baremetal_csv_file.
|
|
||||||
|
|
||||||
The os_ironic_node module is required.
|
|
||||||
|
|
||||||
Role Variables
|
|
||||||
--------------
|
|
||||||
|
|
||||||
baremetal_csv_file: This is the path to the CSV file which is enumerated through for nodes to be acted upon.
|
|
||||||
|
|
||||||
ironic_url: The setting defining the URL to the Ironic API. Presently defaulted to: "http://localhost:6385/"
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
------------
|
|
||||||
|
|
||||||
This role has no roles that it is directly dependent upon directly, but expects that the environment has been installed with the ironic-install role.
|
|
||||||
|
|
||||||
Example Playbook
|
|
||||||
----------------
|
|
||||||
|
|
||||||
- hosts: localhost
|
|
||||||
connection: local
|
|
||||||
name: "Unprovisions the test node"
|
|
||||||
sudo: no
|
|
||||||
gather_facts: no
|
|
||||||
roles:
|
|
||||||
- role: bifrost-unprovision-nodes
|
|
||||||
|
|
||||||
License
|
|
||||||
-------
|
|
||||||
|
|
||||||
Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
Author Information
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Ironic Developers
|
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
ironic_url: "http://localhost:6385/"
|
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# handlers file for bifrost-unprovision-nodes
|
|
@ -1,116 +0,0 @@
|
|||||||
---
|
|
||||||
galaxy_info:
|
|
||||||
author: Ironic Developers
|
|
||||||
description: Unprovisions nodes in Ironic
|
|
||||||
company: OpenStack
|
|
||||||
license: Apache
|
|
||||||
min_ansible_version: 2.0
|
|
||||||
#
|
|
||||||
# Below are all platforms currently available. Just uncomment
|
|
||||||
# the ones that apply to your role. If you don't see your
|
|
||||||
# platform on this list, let us know and we'll get it added!
|
|
||||||
#
|
|
||||||
platforms:
|
|
||||||
#- name: EL
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 5
|
|
||||||
# - 6
|
|
||||||
# - 7
|
|
||||||
#- name: GenericUNIX
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: Fedora
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 16
|
|
||||||
# - 17
|
|
||||||
# - 18
|
|
||||||
# - 19
|
|
||||||
# - 20
|
|
||||||
#- name: SmartOS
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: opensuse
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 12.1
|
|
||||||
# - 12.2
|
|
||||||
# - 12.3
|
|
||||||
# - 13.1
|
|
||||||
# - 13.2
|
|
||||||
#- name: Amazon
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 2013.03
|
|
||||||
# - 2013.09
|
|
||||||
#- name: GenericBSD
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: FreeBSD
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 8.0
|
|
||||||
# - 8.1
|
|
||||||
# - 8.2
|
|
||||||
# - 8.3
|
|
||||||
# - 8.4
|
|
||||||
# - 9.0
|
|
||||||
# - 9.1
|
|
||||||
# - 9.1
|
|
||||||
# - 9.2
|
|
||||||
#- name: Ubuntu
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - lucid
|
|
||||||
# - maverick
|
|
||||||
# - natty
|
|
||||||
# - oneiric
|
|
||||||
# - precise
|
|
||||||
# - quantal
|
|
||||||
# - raring
|
|
||||||
# - saucy
|
|
||||||
- trusty
|
|
||||||
#- name: SLES
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 10SP3
|
|
||||||
# - 10SP4
|
|
||||||
# - 11
|
|
||||||
# - 11SP1
|
|
||||||
# - 11SP2
|
|
||||||
# - 11SP3
|
|
||||||
#- name: GenericLinux
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: Debian
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - etch
|
|
||||||
# - lenny
|
|
||||||
# - squeeze
|
|
||||||
# - wheezy
|
|
||||||
#
|
|
||||||
# Below are all categories currently available. Just as with
|
|
||||||
# the platforms above, uncomment those that apply to your role.
|
|
||||||
#
|
|
||||||
categories:
|
|
||||||
- cloud
|
|
||||||
- cloud:openstack
|
|
||||||
#- cloud:gce
|
|
||||||
#- cloud:rax
|
|
||||||
#- clustering
|
|
||||||
#- database
|
|
||||||
#- database:nosql
|
|
||||||
#- database:sql
|
|
||||||
#- development
|
|
||||||
#- monitoring
|
|
||||||
#- networking
|
|
||||||
#- packaging
|
|
||||||
#- system
|
|
||||||
#- web
|
|
||||||
dependencies: []
|
|
@ -1,25 +0,0 @@
|
|||||||
# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
---
|
|
||||||
- name: "Unprovision node"
|
|
||||||
os_ironic_node:
|
|
||||||
auth_type: None
|
|
||||||
auth: None
|
|
||||||
ironic_url: "{{ ironic_url }}"
|
|
||||||
uuid: "{{item.split(',')[9]}}"
|
|
||||||
state: absent
|
|
||||||
instance_info: "{}"
|
|
||||||
delegate_to: localhost
|
|
||||||
with_lines:
|
|
||||||
- cat {{ baremetal_csv_file }}
|
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# vars file for bifrost-unprovision-nodes
|
|
@ -1,54 +0,0 @@
|
|||||||
ironic-delete
|
|
||||||
=============
|
|
||||||
|
|
||||||
Removes nodes from Ironic utilizing the os_ironic Ansible module that is installed by Bifrost.
|
|
||||||
|
|
||||||
Requirements
|
|
||||||
------------
|
|
||||||
|
|
||||||
This role expects an environment installed with ironic-install role, although the os_ironic ansible module and baremetal_csv_file variable are ultimately required.
|
|
||||||
|
|
||||||
Role Variables
|
|
||||||
--------------
|
|
||||||
|
|
||||||
baremetal_csv_file: This is the CSV file of nodes that is enumerated through for operations.
|
|
||||||
|
|
||||||
ironic_url: This is the url for the ironic server to connect to. It is presently defaulted to "http://localhost:6385/".
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
------------
|
|
||||||
|
|
||||||
This role has no direct role dependencies although is expected to be executed as part of Bifrost's test sequence.
|
|
||||||
|
|
||||||
Example Playbook
|
|
||||||
----------------
|
|
||||||
|
|
||||||
- hosts: localhost
|
|
||||||
connection: local
|
|
||||||
name: "Unprovisions the test node"
|
|
||||||
sudo: no
|
|
||||||
gather_facts: no
|
|
||||||
roles:
|
|
||||||
- role: ironic-delete
|
|
||||||
|
|
||||||
License
|
|
||||||
-------
|
|
||||||
|
|
||||||
Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
Author Information
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Ironic Developers
|
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
ironic_url: "http://localhost:6385/"
|
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# handlers file for ironic-delete
|
|
@ -1,116 +0,0 @@
|
|||||||
---
|
|
||||||
galaxy_info:
|
|
||||||
author: Ironic Developers
|
|
||||||
description: Removes enrolled nodes from Ironic
|
|
||||||
company: OpenStack
|
|
||||||
license: Apache
|
|
||||||
min_ansible_version: 2.0
|
|
||||||
#
|
|
||||||
# Below are all platforms currently available. Just uncomment
|
|
||||||
# the ones that apply to your role. If you don't see your
|
|
||||||
# platform on this list, let us know and we'll get it added!
|
|
||||||
#
|
|
||||||
platforms:
|
|
||||||
#- name: EL
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 5
|
|
||||||
# - 6
|
|
||||||
# - 7
|
|
||||||
#- name: GenericUNIX
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: Fedora
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 16
|
|
||||||
# - 17
|
|
||||||
# - 18
|
|
||||||
# - 19
|
|
||||||
# - 20
|
|
||||||
#- name: SmartOS
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: opensuse
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 12.1
|
|
||||||
# - 12.2
|
|
||||||
# - 12.3
|
|
||||||
# - 13.1
|
|
||||||
# - 13.2
|
|
||||||
#- name: Amazon
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 2013.03
|
|
||||||
# - 2013.09
|
|
||||||
#- name: GenericBSD
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: FreeBSD
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 8.0
|
|
||||||
# - 8.1
|
|
||||||
# - 8.2
|
|
||||||
# - 8.3
|
|
||||||
# - 8.4
|
|
||||||
# - 9.0
|
|
||||||
# - 9.1
|
|
||||||
# - 9.1
|
|
||||||
# - 9.2
|
|
||||||
#- name: Ubuntu
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - lucid
|
|
||||||
# - maverick
|
|
||||||
# - natty
|
|
||||||
# - oneiric
|
|
||||||
# - precise
|
|
||||||
# - quantal
|
|
||||||
# - raring
|
|
||||||
# - saucy
|
|
||||||
- trusty
|
|
||||||
#- name: SLES
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 10SP3
|
|
||||||
# - 10SP4
|
|
||||||
# - 11
|
|
||||||
# - 11SP1
|
|
||||||
# - 11SP2
|
|
||||||
# - 11SP3
|
|
||||||
#- name: GenericLinux
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: Debian
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - etch
|
|
||||||
# - lenny
|
|
||||||
# - squeeze
|
|
||||||
# - wheezy
|
|
||||||
#
|
|
||||||
# Below are all categories currently available. Just as with
|
|
||||||
# the platforms above, uncomment those that apply to your role.
|
|
||||||
#
|
|
||||||
categories:
|
|
||||||
- cloud
|
|
||||||
- cloud:openstack
|
|
||||||
#- cloud:gce
|
|
||||||
#- cloud:rax
|
|
||||||
#- clustering
|
|
||||||
#- database
|
|
||||||
#- database:nosql
|
|
||||||
#- database:sql
|
|
||||||
#- development
|
|
||||||
#- monitoring
|
|
||||||
#- networking
|
|
||||||
#- packaging
|
|
||||||
#- system
|
|
||||||
#- web
|
|
||||||
dependencies: []
|
|
@ -1,37 +0,0 @@
|
|||||||
# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
---
|
|
||||||
- name: "Error if variable baremetal_csv_file is not defined"
|
|
||||||
fail: msg="baremetal_csv_file must be defined for this playbook to execute, please pass option '-e baremetal_csv_file=<path/to/file>'"
|
|
||||||
when: baremetal_csv_file is not defined
|
|
||||||
- name: "Validate that CSV file exists"
|
|
||||||
stat: path={{ baremetal_csv_file }}
|
|
||||||
register: test_baremetal_csv_file
|
|
||||||
- name: "Error if file does not exist."
|
|
||||||
fail: msg="The variable defined for baremetal_csv_file is not to a file. Please define a file and try again."
|
|
||||||
when: test_baremetal_csv_file.stat.isreg == false
|
|
||||||
- name: "Delete Hardware"
|
|
||||||
os_ironic:
|
|
||||||
auth_type: None
|
|
||||||
auth: None
|
|
||||||
ironic_url: "{{ ironic_url }}"
|
|
||||||
driver: "agent_ipmitool"
|
|
||||||
uuid: "{{item.split(',')[9]}}"
|
|
||||||
state: absent
|
|
||||||
nics:
|
|
||||||
- mac: "{{item.split(',')[0]}}"
|
|
||||||
driver_info: "{}"
|
|
||||||
delegate_to: localhost
|
|
||||||
with_lines:
|
|
||||||
- cat {{ baremetal_csv_file }}
|
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# vars file for ironic-delete
|
|
@ -1,79 +0,0 @@
|
|||||||
ironic-enroll
|
|
||||||
=============
|
|
||||||
|
|
||||||
Enrolls nodes into Ironic utilizing the os_ironic Ansible module that is installed by Bifrost.
|
|
||||||
|
|
||||||
Requirements
|
|
||||||
------------
|
|
||||||
|
|
||||||
This role is dependent upon the os-ironic ansible module, which is dependent upon shade (https://git.openstack.org/cgit/openstack-infra/shade), which in this case is presently dependent upon the Ironic Python Client Library (http://git.openstack.org/cgit/openstack/python-ironicclient/).
|
|
||||||
|
|
||||||
Role Variables
|
|
||||||
--------------
|
|
||||||
|
|
||||||
baremetal_csv_file: This variable is the path to a CSV file which contains a list of nodes to enroll into Ironic. This file has a particular format based on columns, which will be listed below, however the base playbooks are easily modifiable to utilize less information as some of the information is not presently required.
|
|
||||||
|
|
||||||
The CSV file has the following columns:
|
|
||||||
|
|
||||||
0. MAC Address
|
|
||||||
1. Management username
|
|
||||||
2. Management password
|
|
||||||
3. Management Address
|
|
||||||
4. CPU Count
|
|
||||||
5. Memory size in MB
|
|
||||||
6. Disk Storage in GB
|
|
||||||
7. Flavor (Not Used)
|
|
||||||
8. Type (Not Used)
|
|
||||||
9. Host UUID
|
|
||||||
10. Host or Node name
|
|
||||||
11. Host IP Address to be set
|
|
||||||
12. ipmi_target_channel - Requires: ipmi_bridging set to single
|
|
||||||
13. ipmi_target_address - Requires: ipmi_bridging set to single
|
|
||||||
14. ipmi_transit_channel - Requires: ipmi_bridging set to dual
|
|
||||||
15. ipmi_transit_address - Requires: ipmi_bridging set to dual
|
|
||||||
|
|
||||||
testing: This setting coupled with the previously mentioned baremetal_csv_file enrolls all nodes defined in the baremetal.csv file utilizing the Ironic agent_ssh driver instead of the agent_ipmitool driver which Bifrost uses by default. The default setting for this role is false.
|
|
||||||
|
|
||||||
ipmi_bridging: The setting is by default undefined, and is utilized when access to a host's IPMI interface is bridged, such as a cartridge or blade in a chassis that has a single management address. It has two options when defined, "single" or "dual", and is utilized to execute the appropriate task in order to feed the appropriate IPMI bridging information based on the CSV file into Ironic.
|
|
||||||
|
|
||||||
ironic_url: The setting defining the URL to the Ironic API. Presently defaulted to: "http://localhost:6385/"
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
------------
|
|
||||||
|
|
||||||
This role is presently dependent upon the ironic-install role which installs the necessary requirements.
|
|
||||||
|
|
||||||
Example Playbook
|
|
||||||
----------------
|
|
||||||
|
|
||||||
- hosts: localhost
|
|
||||||
connection: local
|
|
||||||
gather_facts: yes
|
|
||||||
pre_tasks:
|
|
||||||
- set_fact: baremetal_csv_file="/tmp/baremetal.csv"
|
|
||||||
when: baremetal_csv_file is not defined
|
|
||||||
roles:
|
|
||||||
- role: ironic-enroll
|
|
||||||
testing: true
|
|
||||||
|
|
||||||
License
|
|
||||||
-------
|
|
||||||
|
|
||||||
Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
Author Information
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Ironic Developers
|
|
@ -1,4 +0,0 @@
|
|||||||
---
|
|
||||||
ipmi_bridging: "no"
|
|
||||||
testing: false
|
|
||||||
ironic_url: "http://localhost:6385/"
|
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# handlers file for ironic-enroll
|
|
@ -1,116 +0,0 @@
|
|||||||
---
|
|
||||||
galaxy_info:
|
|
||||||
author: Ironic Developers
|
|
||||||
description: Enrolls nodes into Ironic
|
|
||||||
company: OpenStack
|
|
||||||
license: Apache
|
|
||||||
min_ansible_version: 2.0
|
|
||||||
#
|
|
||||||
# Below are all platforms currently available. Just uncomment
|
|
||||||
# the ones that apply to your role. If you don't see your
|
|
||||||
# platform on this list, let us know and we'll get it added!
|
|
||||||
#
|
|
||||||
platforms:
|
|
||||||
#- name: EL
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 5
|
|
||||||
# - 6
|
|
||||||
# - 7
|
|
||||||
#- name: GenericUNIX
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: Fedora
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 16
|
|
||||||
# - 17
|
|
||||||
# - 18
|
|
||||||
# - 19
|
|
||||||
# - 20
|
|
||||||
#- name: SmartOS
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: opensuse
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 12.1
|
|
||||||
# - 12.2
|
|
||||||
# - 12.3
|
|
||||||
# - 13.1
|
|
||||||
# - 13.2
|
|
||||||
#- name: Amazon
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 2013.03
|
|
||||||
# - 2013.09
|
|
||||||
#- name: GenericBSD
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: FreeBSD
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 8.0
|
|
||||||
# - 8.1
|
|
||||||
# - 8.2
|
|
||||||
# - 8.3
|
|
||||||
# - 8.4
|
|
||||||
# - 9.0
|
|
||||||
# - 9.1
|
|
||||||
# - 9.1
|
|
||||||
# - 9.2
|
|
||||||
#- name: Ubuntu
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - lucid
|
|
||||||
# - maverick
|
|
||||||
# - natty
|
|
||||||
# - oneiric
|
|
||||||
# - precise
|
|
||||||
# - quantal
|
|
||||||
# - raring
|
|
||||||
# - saucy
|
|
||||||
- trusty
|
|
||||||
#- name: SLES
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 10SP3
|
|
||||||
# - 10SP4
|
|
||||||
# - 11
|
|
||||||
# - 11SP1
|
|
||||||
# - 11SP2
|
|
||||||
# - 11SP3
|
|
||||||
#- name: GenericLinux
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - any
|
|
||||||
#- name: Debian
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - etch
|
|
||||||
# - lenny
|
|
||||||
# - squeeze
|
|
||||||
# - wheezy
|
|
||||||
#
|
|
||||||
# Below are all categories currently available. Just as with
|
|
||||||
# the platforms above, uncomment those that apply to your role.
|
|
||||||
#
|
|
||||||
categories:
|
|
||||||
- cloud
|
|
||||||
- cloud:openstack
|
|
||||||
#- cloud:gce
|
|
||||||
#- cloud:rax
|
|
||||||
#- clustering
|
|
||||||
#- database
|
|
||||||
#- database:nosql
|
|
||||||
#- database:sql
|
|
||||||
#- development
|
|
||||||
#- monitoring
|
|
||||||
#- networking
|
|
||||||
#- packaging
|
|
||||||
#- system
|
|
||||||
#- web
|
|
||||||
dependencies: []
|
|
@ -1,64 +0,0 @@
|
|||||||
# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
---
|
|
||||||
- name: "Enroll Hardware"
|
|
||||||
# The variable definitions below seem far from ideal, however there
|
|
||||||
# seems to be no better way to handle CSV files for looping at this time.
|
|
||||||
#
|
|
||||||
# Ideally with_lines would be used with an include, however that support was removed in
|
|
||||||
# Ansible 1.6 and no direct replacement exists.
|
|
||||||
#
|
|
||||||
# mac_address: "{{item.split(',')[1]}}"
|
|
||||||
# username: "{{item.split(',')[2]}}"
|
|
||||||
# password: "{{item.split(',')[3]}}"
|
|
||||||
# management_address: "{{item.split(',')[4]}}"
|
|
||||||
# cpu_cores: "{{item.split(',')[5]}}"
|
|
||||||
# memory_MB: "{{item.split(',')[6]}}"
|
|
||||||
# disk_MB: "{{item.split(',')[7]}}"
|
|
||||||
# ipmi_target_channel: "{{item.split(',')[12]}}"
|
|
||||||
# ipmi_target_address: "{{item.split(',')[13]}}"
|
|
||||||
# ipmi_transit_channel: "{{item.split(',')[14]}}"
|
|
||||||
# ipmi_transit_address: "{{item.split(',')[15]}}"
|
|
||||||
#
|
|
||||||
os_ironic:
|
|
||||||
auth_type: None
|
|
||||||
auth: None
|
|
||||||
ironic_url: "{{ ironic_url }}"
|
|
||||||
driver: "agent_ipmitool"
|
|
||||||
# UUID determination TBD for mass enrollment.
|
|
||||||
uuid: "{{item.split(',')[9]}}"
|
|
||||||
state: present
|
|
||||||
nics:
|
|
||||||
- mac: "{{item.split(',')[0]}}"
|
|
||||||
properties:
|
|
||||||
cpus: "{{item.split(',')[4]}}"
|
|
||||||
cpu_arch: "x86_64"
|
|
||||||
ram: "{{item.split(',')[5]}}"
|
|
||||||
disk_size: "{{item.split(',')[6]}}"
|
|
||||||
driver_info:
|
|
||||||
power:
|
|
||||||
ipmi_address: "{{item.split(',')[3]}}"
|
|
||||||
ipmi_username: "{{item.split(',')[1]}}"
|
|
||||||
ipmi_password: "{{item.split(',')[2]}}"
|
|
||||||
ipmi_bridging: "dual"
|
|
||||||
ipmi_target_channel: "{{item.split(',')[12]}}"
|
|
||||||
ipmi_target_address: "{{item.split(',')[13]}}"
|
|
||||||
ipmi_transit_channel: "{{item.split(',')[14]}}"
|
|
||||||
ipmi_transit_address: "{{item.split(',')[15]}}"
|
|
||||||
deploy:
|
|
||||||
deploy_kernel: "{{ deploy_kernel_url }}"
|
|
||||||
deploy_ramdisk: "{{ deploy_ramdisk_url }}"
|
|
||||||
delegate_to: localhost
|
|
||||||
with_lines:
|
|
||||||
- cat {{ baremetal_csv_file }}
|
|
@ -1,59 +0,0 @@
|
|||||||
# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
---
|
|
||||||
- name: "Enroll Hardware"
|
|
||||||
# The variable definitions below seem far from ideal, however there
|
|
||||||
# seems to be no better way to handle CSV files for looping at this time.
|
|
||||||
#
|
|
||||||
# Ideally with_lines would be used with an include, however that support was removed in
|
|
||||||
# Ansible 1.6 and no direct replacement exists.
|
|
||||||
#
|
|
||||||
# mac_address: "{{item.split(',')[1]}}"
|
|
||||||
# username: "{{item.split(',')[2]}}"
|
|
||||||
# password: "{{item.split(',')[3]}}"
|
|
||||||
# management_address: "{{item.split(',')[4]}}"
|
|
||||||
# cpu_cores: "{{item.split(',')[5]}}"
|
|
||||||
# memory_MB: "{{item.split(',')[6]}}"
|
|
||||||
# disk_MB: "{{item.split(',')[7]}}"
|
|
||||||
# ipmi_target_channel: "{{item.split(',')[12]}}"
|
|
||||||
# ipmi_target_address: "{{item.split(',')[13]}}"
|
|
||||||
os_ironic:
|
|
||||||
auth_type: None
|
|
||||||
auth: None
|
|
||||||
ironic_url: "{{ ironic_url }}"
|
|
||||||
driver: "agent_ipmitool"
|
|
||||||
# UUID determination TBD for mass enrollment.
|
|
||||||
uuid: "{{item.split(',')[9]}}"
|
|
||||||
state: present
|
|
||||||
nics:
|
|
||||||
- mac: "{{item.split(',')[0]}}"
|
|
||||||
properties:
|
|
||||||
cpus: "{{item.split(',')[4]}}"
|
|
||||||
cpu_arch: "x86_64"
|
|
||||||
ram: "{{item.split(',')[5]}}"
|
|
||||||
disk_size: "{{item.split(',')[6]}}"
|
|
||||||
driver_info:
|
|
||||||
power:
|
|
||||||
ipmi_address: "{{item.split(',')[3]}}"
|
|
||||||
ipmi_username: "{{item.split(',')[1]}}"
|
|
||||||
ipmi_password: "{{item.split(',')[2]}}"
|
|
||||||
ipmi_bridging: "single"
|
|
||||||
ipmi_target_channel: "{{item.split(',')[12]}}"
|
|
||||||
ipmi_target_address: "{{item.split(',')[13]}}"
|
|
||||||
deploy:
|
|
||||||
deploy_kernel: "{{ deploy_kernel_url }}"
|
|
||||||
deploy_ramdisk: "{{ deploy_ramdisk_url }}"
|
|
||||||
delegate_to: localhost
|
|
||||||
with_lines:
|
|
||||||
- cat {{ baremetal_csv_file }}
|
|
@ -1,35 +0,0 @@
|
|||||||
# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
---
|
|
||||||
- name: "Error if variable baremetal_csv_file is not defined"
|
|
||||||
fail: msg="baremetal_csv_file must be defined for this playbook to execute, please pass option '-e baremetal_csv_file=<path/to/file>'"
|
|
||||||
when: baremetal_csv_file is not defined
|
|
||||||
- name: "Validate that CSV file exists"
|
|
||||||
stat: path={{ baremetal_csv_file }}
|
|
||||||
register: test_baremetal_csv_file
|
|
||||||
- name: "Error if file does not exist."
|
|
||||||
fail: msg="The variable defined for baremetal_csv_file is not to a file. Please define a file and try again."
|
|
||||||
when: test_baremetal_csv_file.stat.isreg == false
|
|
||||||
- name: "If testing, enroll virtual machines."
|
|
||||||
include: virtual_enroll.yaml
|
|
||||||
when: testing == true
|
|
||||||
- name: "If no ipmi_bridging value set, or a value of no exists, execute standard sequence."
|
|
||||||
include: standard_enroll.yaml
|
|
||||||
when: (ipmi_bridging != "single" and ipmi_bridging != "dual") and (testing != true )
|
|
||||||
- name: "If ipmi_bridging is set to single, execute single bridge enrollment sequence.."
|
|
||||||
include: ipmi_bridging_single_enroll.yaml
|
|
||||||
when: testing != true and (ipmi_bridging is defined and ipmi_bridging == "single")
|
|
||||||
- name: "If ipmi_bridging is set to single, execute dual bridge enrollment sequence.."
|
|
||||||
include: ipmi_bridging_dual_enroll.yaml
|
|
||||||
when: testing != true and (ipmi_bridging is defined and ipmi_bridging == "dual")
|
|
@ -1,54 +0,0 @@
|
|||||||
# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
---
|
|
||||||
- name: "Enroll Hardware"
|
|
||||||
# The variable definitions below seem far from ideal, however there
|
|
||||||
# seems to be no better way to handle CSV files for looping at this time.
|
|
||||||
#
|
|
||||||
# Ideally with_lines would be used with an include, however that support was removed in
|
|
||||||
# Ansible 1.6 and no direct replacement exists.
|
|
||||||
#
|
|
||||||
# mac_address: "{{item.split(',')[1]}}"
|
|
||||||
# username: "{{item.split(',')[2]}}"
|
|
||||||
# password: "{{item.split(',')[3]}}"
|
|
||||||
# management_address: "{{item.split(',')[4]}}"
|
|
||||||
# cpu_cores: "{{item.split(',')[5]}}"
|
|
||||||
# memory_MB: "{{item.split(',')[6]}}"
|
|
||||||
# disk_MB: "{{item.split(',')[7]}}"
|
|
||||||
os_ironic:
|
|
||||||
auth_type: None
|
|
||||||
auth: None
|
|
||||||
ironic_url: "{{ ironic_url }}"
|
|
||||||
driver: "agent_ipmitool"
|
|
||||||
# UUID determination TBD for mass enrollment.
|
|
||||||
uuid: "{{item.split(',')[9]}}"
|
|
||||||
state: present
|
|
||||||
nics:
|
|
||||||
- mac: "{{item.split(',')[0]}}"
|
|
||||||
properties:
|
|
||||||
cpus: "{{item.split(',')[4]}}"
|
|
||||||
cpu_arch: "x86_64"
|
|
||||||
ram: "{{item.split(',')[5]}}"
|
|
||||||
disk_size: "{{item.split(',')[6]}}"
|
|
||||||
driver_info:
|
|
||||||
power:
|
|
||||||
ipmi_address: "{{item.split(',')[3]}}"
|
|
||||||
ipmi_username: "{{item.split(',')[1]}}"
|
|
||||||
ipmi_password: "{{item.split(',')[2]}}"
|
|
||||||
deploy:
|
|
||||||
deploy_kernel: "{{ deploy_kernel_url }}"
|
|
||||||
deploy_ramdisk: "{{ deploy_ramdisk_url }}"
|
|
||||||
delegate_to: localhost
|
|
||||||
with_lines:
|
|
||||||
- cat {{ baremetal_csv_file }}
|
|
@ -1,56 +0,0 @@
|
|||||||
# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
---
|
|
||||||
- name: "Enroll Virtual Machines"
|
|
||||||
os_ironic:
|
|
||||||
# The variable definitions below seem far from ideal, however there
|
|
||||||
# seems to be no better way to handle CSV files for looping at this time.
|
|
||||||
#
|
|
||||||
# Ideally with_lines would be used with an include, however that support was removed in
|
|
||||||
# Ansible 1.6 and no direct replacement exists.
|
|
||||||
#
|
|
||||||
# mac_address: "{{item.split(',')[1]}}"
|
|
||||||
# username: "{{item.split(',')[2]}}"
|
|
||||||
# password: "{{item.split(',')[3]}}"
|
|
||||||
# management_address: "{{item.split(',')[4]}}"
|
|
||||||
# cpu_cores: "{{item.split(',')[5]}}"
|
|
||||||
# memory_MB: "{{item.split(',')[6]}}"
|
|
||||||
# disk_MB: "{{item.split(',')[7]}}"
|
|
||||||
auth_type: None
|
|
||||||
auth: None
|
|
||||||
ironic_url: "{{ ironic_url }}"
|
|
||||||
driver: "agent_ssh"
|
|
||||||
uuid: "{{item.split(',')[9]}}"
|
|
||||||
state: present
|
|
||||||
nics:
|
|
||||||
- mac: "{{item.split(',')[0]}}"
|
|
||||||
properties:
|
|
||||||
cpus: "{{item.split(',')[4]}}"
|
|
||||||
cpu_arch: "x86_64"
|
|
||||||
ram: "{{item.split(',')[5]}}"
|
|
||||||
disk_size: "{{item.split(',')[6]}}"
|
|
||||||
driver_info:
|
|
||||||
power:
|
|
||||||
ssh_virt_type: "virsh"
|
|
||||||
ssh_address: 127.0.0.1
|
|
||||||
ssh_port: 22
|
|
||||||
ssh_username: ironic
|
|
||||||
ssh_key_filename: /home/ironic/.ssh/id_rsa
|
|
||||||
deploy:
|
|
||||||
deploy_kernel: "{{ deploy_kernel_url }}"
|
|
||||||
deploy_ramdisk: "{{ deploy_ramdisk_url }}"
|
|
||||||
delegate_to: localhost
|
|
||||||
with_lines:
|
|
||||||
- cat {{ baremetal_csv_file }}
|
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# vars file for ironic-enroll
|
|
@ -1,76 +0,0 @@
|
|||||||
---
|
|
||||||
- hosts: localhost
|
|
||||||
connection: local
|
|
||||||
name: "Executes install, enrollment, and testing in one playbook"
|
|
||||||
sudo: yes
|
|
||||||
gather_facts: yes
|
|
||||||
pre_tasks:
|
|
||||||
- name: "Set default baremetal.csv file if not already defined"
|
|
||||||
set_fact:
|
|
||||||
baremetal_csv_file: "/tmp/baremetal.csv"
|
|
||||||
when: baremetal_csv_file is not defined
|
|
||||||
- name: "Set OpenStack CI settings if it appears we are running in upstream OpenStack CI"
|
|
||||||
set_fact:
|
|
||||||
ci_testing: true
|
|
||||||
ci_testing_zuul: true
|
|
||||||
ironic_git_folder: /opt/git/openstack/ironic
|
|
||||||
ironicclient_git_folder: /opt/git/openstack/python-ironicclient
|
|
||||||
shade_git_folder: /opt/git/openstack-infra/shade
|
|
||||||
when: lookup('env', 'ZUUL_BRANCH') != ""
|
|
||||||
- name: "Set ci_testing_zuul_changes if ZUUL_CHANGES is set"
|
|
||||||
set_fact:
|
|
||||||
ci_testing_zuul_changes: true
|
|
||||||
when: lookup('env', 'ZUUL_CHANGES') != ""
|
|
||||||
- name: "Collect process list if running in OpenStack CI"
|
|
||||||
command: ps aux
|
|
||||||
when: ci_testing_zuul is defined
|
|
||||||
- name: "Collect list of listening network sockets if running in OpenStack CI"
|
|
||||||
shell: netstat -apn|grep LISTEN
|
|
||||||
when: ci_testing_zuul is defined
|
|
||||||
roles:
|
|
||||||
- role: bifrost-create-vm-nodes
|
|
||||||
- { role: bifrost-prep-for-install, when: skip_install is not defined }
|
|
||||||
- { role: bifrost-openstack-ci-prep, when: ci_testing_zuul is defined }
|
|
||||||
- role: ironic-install
|
|
||||||
cleaning: false
|
|
||||||
testing: true
|
|
||||||
- { role: bifrost-create-dib-image, when: create_image_via_dib == true and transform_boot_image == false }
|
|
||||||
- { role: bifrost-create-bootable-image, when: create_image_via_dib == false and transform_boot_image == true }
|
|
||||||
- role: ironic-enroll
|
|
||||||
testing: true
|
|
||||||
- role: bifrost-validate-host-for-deploy
|
|
||||||
environment:
|
|
||||||
http_proxy: "{{ lookup('env','http_proxy') }}"
|
|
||||||
https_proxy: "{{ lookup('env','https_proxy') }}"
|
|
||||||
- hosts: localhost
|
|
||||||
connection: local
|
|
||||||
name: "Executes install, enrollment, and testing in one playbook"
|
|
||||||
sudo: no
|
|
||||||
gather_facts: yes
|
|
||||||
roles:
|
|
||||||
- role: bifrost-configdrives
|
|
||||||
- role: bifrost-setup-nodes
|
|
||||||
- role: bifrost-prepare-for-test
|
|
||||||
# The testvm Host group is added by bifrost-prepare-for-test based
|
|
||||||
# on the contents of the CSV file.
|
|
||||||
- hosts: testvm
|
|
||||||
name: "Tests connectivity to the VM"
|
|
||||||
sudo: no
|
|
||||||
gather_facts: no
|
|
||||||
remote_user: "{{testing_user}}"
|
|
||||||
roles:
|
|
||||||
- role: bifrost-test-vm
|
|
||||||
- hosts: localhost
|
|
||||||
connection: local
|
|
||||||
name: "Unprovisions the test node"
|
|
||||||
sudo: no
|
|
||||||
gather_facts: no
|
|
||||||
roles:
|
|
||||||
- role: bifrost-unprovision-nodes
|
|
||||||
- hosts: localhost
|
|
||||||
connection: local
|
|
||||||
name: "Unprovisions the test node"
|
|
||||||
sudo: no
|
|
||||||
gather_facts: no
|
|
||||||
roles:
|
|
||||||
- role: ironic-delete
|
|
@ -19,9 +19,6 @@ set -x
|
|||||||
# Change working directory
|
# Change working directory
|
||||||
cd $BIFROST_HOME/playbooks
|
cd $BIFROST_HOME/playbooks
|
||||||
|
|
||||||
# Perform a syntax check
|
|
||||||
ansible-playbook -vvvv -i inventory/localhost test-bifrost.yaml --syntax-check --list-tasks
|
|
||||||
|
|
||||||
# Syntax check of dynamic inventory test path
|
# Syntax check of dynamic inventory test path
|
||||||
ansible-playbook -vvvv -i inventory/localhost test-bifrost-create-vm.yaml --syntax-check --list-tasks
|
ansible-playbook -vvvv -i inventory/localhost test-bifrost-create-vm.yaml --syntax-check --list-tasks
|
||||||
ansible-playbook -vvvv -i inventory/localhost test-bifrost-dynamic.yaml --syntax-check --list-tasks
|
ansible-playbook -vvvv -i inventory/localhost test-bifrost-dynamic.yaml --syntax-check --list-tasks
|
||||||
|
Loading…
Reference in New Issue
Block a user