bifrost/playbooks/roles/bifrost-ironic-install/tasks/ironic_config.yml
Julia Kreger bfb26a8d6c Follow-up to PXE substrate support
Update to address review comments including rename of the pxe_drivers
setting to enabled_pxe_drivers, and re-use of the variable name for
a list of known pxe drivers that updates the enabled_drivers list.

Change-Id: I85c573a1909ada50c422c0accede056755bd9ce5
2015-12-22 15:14:06 -05:00

190 lines
6.7 KiB
YAML

# 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: "Update driver list if PXE drivers are enabled"
set_fact:
enabled_drivers: "{{ enabled_drivers }},{{ pxe_drivers }}"
when: enable_pxe_drivers | bool == true
- name: "Determine if ironic.conf needs to be put in place."
stat: path=/etc/ironic/ironic.conf
register: test_place_ironic_config
- name: "Copy ironic sample config"
copy:
src="{{ ironic_git_folder }}/etc/ironic/ironic.conf.sample"
dest=/etc/ironic/ironic.conf
owner=ironic
group=ironic
mode=0644
when: test_place_ironic_config.stat.exists == false
- name: "If testing, set agent_ssh as the enabled driver"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[DEFAULT]"
regexp='^(.*)enabled_drivers=(.*)$'
line="enabled_drivers=agent_ssh,pxe_ssh"
when: testing | bool == true
- name: "If not testing, set driver list"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[DEFAULT]"
regexp='^(.*)enabled_drivers=(.*)$'
line="enabled_drivers={{ enabled_drivers }}"
when: testing | bool == false
- name: "Set rabbit user"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[DEFAULT]"
regexp='^(.*)rabbit_userid=(.*)$'
line="rabbit_userid=ironic"
- name: "Set rabbit password"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[DEFAULT]"
regexp='^(.*)rabbit_password=(.*)$'
line="rabbit_password={{ ironic_db_password }}"
- name: "Set auth_strategy to noauth"
command: sed -i 's/#auth_strategy=keystone/auth_strategy=noauth/g' /etc/ironic/ironic.conf
- name: "If testing, enable debug logging"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[DEFAULT]"
regexp='^(.*)debug=(.*)$'
line="debug=true"
when: testing | bool == true
- name: "If not testing, disable debug logging"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[DEFAULT]"
regexp='^(.*)debug=(.*)$'
line="debug=false"
when: testing | bool == false
- name: "For agent, send extra params"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[pxe]"
regexp='^(.*)pxe_append_params=(.*)$'
line="pxe_append_params=systemd.journald.forward_to_console=yes {{extra_kernel_options | default('')}}"
- name: "Configure conductor API url"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[conductor]"
regexp='^(.*)api_url=(.*)$'
line="api_url=http://{{ hostvars[inventory_hostname]['ansible_' + ans_network_interface]['ipv4']['address'] }}:6385/"
- name: "Configure conductor cleaning"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[conductor]"
regexp='^(.*)clean_nodes=(.*)$'
line="clean_nodes={{ cleaning | lower }}"
- name: "Configure database connection"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[database]"
regexp='^(.*)connection=(.*)$'
line="connection=mysql+pymysql://ironic:{{ ironic_db_password }}@localhost/ironic?charset=utf8"
- name: "Configure DHCP provider"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[dhcp]" regexp='^(.*)dhcp_provider=(.*)$'
line="dhcp_provider=none"
- name: "Set PXE pxe_config_template"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[pxe]"
regexp='^(.*)pxe_config_template=(.*)$'
line="pxe_config_template=$pybasedir/drivers/modules/ipxe_config.template"
- name: "Set PXE tftp_server"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[pxe]"
regexp='^(.*)tftp_server=(.*)$'
line="tftp_server={{ hostvars[inventory_hostname]['ansible_' + ans_network_interface]['ipv4']['address'] }}"
- name: "Set PXE tftp_root"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[pxe]"
regexp='^(.*)tftp_root=(.*)$'
line="tftp_root=/tftpboot"
- name: "Set iPXE pxe_bootfile_name"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[pxe]"
regexp='^(.*)pxe_bootfile_name=(.*)$'
line="pxe_bootfile_name=undionly.kpxe"
- name: "Set iPXE http_url"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[pxe]"
regexp='^(.*)http_url=(.*)$'
line="http_url=http://{{ hostvars[inventory_hostname]['ansible_' + ans_network_interface]['ipv4']['address'] }}:{{nginx_port}}/"
- name: "Set iPXE http_root"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[pxe]"
regexp='^(.*)http_root=(.*)$'
line="http_root={{ http_boot_folder }}"
- name: "Set iPXE to be enabled"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[pxe]"
regexp='^(.*)ipxe_enabled=(.*)$'
line="ipxe_enabled=true"
- name: "Set path to ipxe template file"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[pxe]"
regexp='^(.*)ipxe_boot_script=(.*)$'
line="ipxe_boot_script=/etc/ironic/boot.ipxe"
- name: "Configure SSH libvirt URL if testing"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[ssh]"
regexp='^(.*)libvirt_uri=(.*)$'
line="libvirt_uri=qemu:///system"
when: testing | bool == true
- name: "Set CORS allowed_origin if enable_cors is set"
lineinfile:
dest=/etc/ironic/ironic.conf
insertbefore='^(.*)cors.subdomain(.*)$'
regexp='^allowed_origin=(.*)$'
line="allowed_origin={{ cors_allowed_origin | default('allowed_origin=http://localhost:8000')}}"
when: enable_cors | bool
- name: "Set CORS allow_credentials if enable_cors is set"
lineinfile:
dest=/etc/ironic/ironic.conf
insertbefore='^(.*)cors.subdomain(.*)$'
regexp='^allow_credentials=(.*)$'
line="allow_credentials={{ enable_cors_credential_support | default('true')}}"
when: enable_cors | bool
- name: "Set ilo driver to utilize web server"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[ilo]"
regexp='^(.*)use_web_server_for_images=(.*)$'
line="use_web_server_for_images=true"
- name: "Enable Inspector"
lineinfile:
dest=/etc/ironic/ironic.conf
insertafter="[inspector]"
regexp='(^#|^)enabled( |)=(.*)$'
line="enabled = True"
when: enable_inspector | bool
- name: "Set sudoers for PXE driver support if enabled"
lineinfile:
dest: /etc/sudoers
regexp: '^ironic(.*)/etc/ironic/rootwrap.conf(.*)'
line: "ironic ALL = (root) NOPASSWD: /usr/local/bin/ironic-rootwrap /etc/ironic/rootwrap.conf *"
when: enable_pxe_drivers | bool == true