c305af301b
Some of these files are already statically defined in the role vars, but cannot be extended. The new variable ironic_tftp_extra_content allows either local files (path:) or files from a web server (url:) to be copied into the tftp server root. A feature like this is needed to copy EFI firmware to the tftp root for ironic node CPU architectures that are different to the ironic control plane nodes. The EFI firmware is sometimes not available from the system package manager for architechtures different to the host CPU. Change-Id: Ie30c009d0704b87c2298088935a7f2ec0d55c6fb
130 lines
3.4 KiB
YAML
130 lines
3.4 KiB
YAML
---
|
|
# Copyright 2015, Rackspace US, Inc.
|
|
#
|
|
# 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: Copy in sample dhcpd.conf file
|
|
copy:
|
|
src: "dhcpd.conf"
|
|
dest: "/etc/dhcp/"
|
|
when: ironic_standalone
|
|
notify:
|
|
- Restart isc-dhcp-server
|
|
|
|
- name: Create tftpboot path
|
|
file:
|
|
path: "{{ ironic_tftpd_root }}"
|
|
state: directory
|
|
owner: "{{ ironic_system_user_name }}"
|
|
group: "{{ ironic_system_group_name }}"
|
|
mode: "0755"
|
|
|
|
- name: Copy in tftpd-hpa config file
|
|
template:
|
|
src: "tftpd-hpa.j2"
|
|
dest: "/etc/default/tftpd-hpa"
|
|
when:
|
|
- ansible_facts['os_family'] == 'Debian'
|
|
notify:
|
|
- Restart tftpd
|
|
|
|
- name: Copy in tftpd map file
|
|
template:
|
|
src: "map-file"
|
|
dest: "{{ ironic_tftpd_root }}/map-file"
|
|
notify:
|
|
- Restart tftpd
|
|
|
|
- name: Copy library modules into tftpboot
|
|
copy:
|
|
src: "{{ item }}"
|
|
dest: "{{ ironic_tftpd_root }}/"
|
|
remote_src: True
|
|
with_items: "{{ ironic_library_modules_paths }}"
|
|
|
|
- name: Ensure grub directory exists in tftpboot
|
|
file:
|
|
path: "{{ ironic_grub_dir }}"
|
|
state: directory
|
|
recurse: yes
|
|
|
|
- name: Copy PXE grub config into tftpboot
|
|
copy:
|
|
src: "grub.conf"
|
|
dest: "{{ ironic_grub_dir }}/grub.cfg"
|
|
mode: "0644"
|
|
owner: "ironic"
|
|
group: "ironic"
|
|
|
|
- name: Copy content into tftpboot (files)
|
|
copy:
|
|
src: "{{ item.path }}"
|
|
dest: "{{ ironic_tftpd_root }}/{{ item.name }}"
|
|
remote_src: True
|
|
with_items: "{{ (ironic_uefi_modules + ironic_tftp_extra_content) | selectattr('path', 'defined') | list }}"
|
|
|
|
- name: Copy content into tftpboot (urls)
|
|
get_url:
|
|
url: "{{ item.url }}"
|
|
dest: "{{ ironic_tftpd_root }}/{{ item.name }}"
|
|
with_items: "{{ (ironic_uefi_modules + ironic_tftp_extra_content) | selectattr('url', 'defined') | list }}"
|
|
|
|
- name: Start up tftp
|
|
service:
|
|
name: "{{ ironic_tftpd_service_name }}"
|
|
state: started
|
|
enabled: true
|
|
|
|
- name: Disable default nginx configuration
|
|
file:
|
|
path: /etc/nginx/sites-enabled/default
|
|
state: absent
|
|
when: "ironic_ipxe_enabled | bool"
|
|
notify:
|
|
- Restart web server
|
|
|
|
- name: Remove default nginx config
|
|
file:
|
|
path: /etc/nginx/conf.d/default.conf
|
|
state: absent
|
|
when: "ironic_ipxe_enabled | bool"
|
|
notify:
|
|
- Restart web server
|
|
|
|
- name: Ensure nginx configuration directories exist
|
|
file:
|
|
path: "{{ item }}"
|
|
state: directory
|
|
when: "ironic_ipxe_enabled | bool"
|
|
with_items:
|
|
- "/etc/nginx/{{ ironic_nginx_conf_path }}"
|
|
|
|
- name: Configure nginx virtual hosts
|
|
template:
|
|
src: ironic-ipxe.conf.j2
|
|
dest: "/etc/nginx/{{ ironic_nginx_conf_path }}/ironic-ipxe.conf"
|
|
when: "ironic_ipxe_enabled | bool"
|
|
notify:
|
|
- Restart web server
|
|
|
|
- name: Link to enable nginx virtual hosts
|
|
file:
|
|
src: "/etc/nginx/sites-available/ironic-ipxe.conf"
|
|
path: "/etc/nginx/sites-enabled/ironic-ipxe.conf"
|
|
state: link
|
|
when:
|
|
- ansible_facts['os_family'] == "Debian"
|
|
- "ironic_ipxe_enabled | bool"
|
|
notify:
|
|
- Restart web server
|