tripleo-heat-templates/deployment/ironic/ironic-pxe-container-puppet.yaml
Takashi Kajinami 881334004a Ironic: Use generated dnsmasq conf file
Current puppet-ironic supports generating config file to run dnsmasq
as tftp server.

This change replaces usage of hiera CLI by the generated file to reduce
usage of deprecated hiera CLI.

Change-Id: Id5c6cf3e41e22ee5275d0fd822b313333bfa1b33
2022-03-10 20:20:24 +09:00

211 lines
7.6 KiB
YAML

heat_template_version: wallaby
description: >
OpenStack containerized Ironic PXE service
parameters:
ContainerIronicPxeImage:
description: image
type: string
tags:
- role_specific
ContainerIronicConfigImage:
description: The container image to use for the ironic config_volume
type: string
tags:
- role_specific
EndpointMap:
default: {}
description: Mapping of service endpoint -> protocol. Typically set
via parameter_defaults in the resource registry.
type: json
ServiceData:
default: {}
description: Dictionary packing service data
type: json
ServiceNetMap:
default: {}
description: Mapping of service_name -> network name. Typically set
via parameter_defaults in the resource registry. Use
parameter_merge_strategies to merge it with the defaults.
type: json
RoleName:
default: ''
description: Role name on which the service is applied
type: string
RoleParameters:
default: {}
description: Parameters specific to the role
type: json
resources:
ContainersCommon:
type: ../containers-common.yaml
RoleParametersValue:
type: OS::Heat::Value
properties:
type: json
value:
map_replace:
- map_replace:
- ContainerIronicPxeImage: ContainerIronicPxeImage
ContainerIronicConfigImage: ContainerIronicConfigImage
- values: {get_param: [RoleParameters]}
- values:
ContainerIronicPxeImage: {get_param: ContainerIronicPxeImage}
ContainerIronicConfigImage: {get_param: ContainerIronicConfigImage}
outputs:
role_data:
description: Role data for the Ironic PXE role.
value:
service_name: ironic_pxe
config_settings:
ironic::pxe::tftp_use_xinetd: false
service_config_settings: {}
# BEGIN DOCKER SETTINGS
puppet_config:
config_volume: ironic
puppet_tags: ironic_config
step_config: ''
config_image: {get_attr: [RoleParametersValue, value, ContainerIronicConfigImage]}
kolla_config:
/var/lib/kolla/config_files/ironic_pxe_http.json:
command: /usr/sbin/httpd -DFOREGROUND
config_files:
- source: "/var/lib/kolla/config_files/src/etc/httpd/conf.d"
dest: "/etc/httpd/conf.d"
merge: false
preserve_properties: true
- source: "/var/lib/kolla/config_files/src/etc/httpd/conf.modules.d"
dest: "/etc/httpd/conf.modules.d"
merge: false
preserve_properties: true
- source: "/var/lib/kolla/config_files/src/*"
dest: "/"
merge: true
preserve_properties: true
permissions:
- path: /var/log/ironic
owner: ironic:ironic
recurse: true
- path: /var/lib/ironic
owner: ironic:ironic
recurse: true
/var/lib/kolla/config_files/ironic_pxe_tftp.json:
command: /usr/sbin/dnsmasq -k --log-facility=/var/log/ironic/dnsmasq.log --user=root --conf-file=/etc/ironic/dnsmasq-tftp-server.conf
config_files:
- source: "/var/lib/kolla/config_files/src/*"
dest: "/"
merge: true
preserve_properties: true
permissions:
- path: /var/log/ironic
owner: ironic:ironic
recurse: true
- path: /var/lib/ironic
owner: ironic:ironic
recurse: true
upgrade_tasks:
- when: step|int == 0
tags: common
block:
- name: drop tftp from xinetd supervision
file:
path: /etc/xinetd.d/tftp
state: absent
- name: query if xinetd is active
failed_when: false
shell: systemctl is-active xinetd
register: xinetd_active_result
- name: restart xinetd in order to free tftp port
service:
name: xinetd
state: restarted
when: xinetd_active_result.rc == 0
- name: Check if ironic_pxe_tftp is enabled
command: systemctl is-enabled --quiet ironic_pxe_tftp
failed_when: false
register: ironic_pxe_tftp_enabled_result
- name: Set fact ironic_pxe_tftp_enabled
set_fact:
ironic_pxe_tftp_enabled: "{{ ironic_pxe_tftp_enabled_result.rc == 0 }}"
- name: Stop ironic_pxe_tftp service
when:
- step|int == 1
- ironic_pxe_tftp_enabled_result|bool
service: name=ironic_pxe_tftp state=stopped enabled=no
docker_config:
step_4:
ironic_pxe_tftp:
start_order: 90
image: &ironic_pxe_image {get_attr: [RoleParametersValue, value, ContainerIronicPxeImage]}
net: host
cap_add:
- NET_ADMIN
- NET_RAW
- SETUID
privileged: false
restart: always
healthcheck:
test: /openstack/healthcheck
volumes:
list_concat:
- {get_attr: [ContainersCommon, volumes]}
- - /var/lib/kolla/config_files/ironic_pxe_tftp.json:/var/lib/kolla/config_files/config.json:ro
- /var/lib/config-data/puppet-generated/ironic:/var/lib/kolla/config_files/src:ro
- /var/lib/ironic:/var/lib/ironic:shared,z
- /var/log/containers/ironic:/var/log/ironic:z
- /var/log/containers/httpd/ironic-pxe:/var/log/httpd:z
environment:
KOLLA_CONFIG_STRATEGY: COPY_ALWAYS
ironic_pxe_http:
start_order: 91
image: *ironic_pxe_image
net: host
privileged: false
security_opt:
- label=disable
restart: always
healthcheck:
test: /openstack/healthcheck
volumes:
list_concat:
- {get_attr: [ContainersCommon, volumes]}
- - /var/lib/kolla/config_files/ironic_pxe_http.json:/var/lib/kolla/config_files/config.json:ro
- /var/lib/config-data/puppet-generated/ironic:/var/lib/kolla/config_files/src:ro
- /var/lib/ironic:/var/lib/ironic:shared,z
- /var/log/containers/ironic:/var/log/ironic:z
- /var/log/containers/httpd/ironic-pxe:/var/log/httpd:z
environment:
KOLLA_CONFIG_STRATEGY: COPY_ALWAYS
host_prep_tasks:
- name: create persistent directories
file:
path: "{{ item.path }}"
state: directory
setype: "{{ item.setype }}"
mode: "{{ item.mode|default(omit) }}"
with_items:
- { 'path': /var/lib/ironic, 'setype': container_file_t, 'mode': 'g+s' }
- { 'path': /var/log/containers/ironic, 'setype': container_file_t, 'mode': '0750' }
- { 'path': /var/log/containers/httpd/ironic-pxe, 'setype': container_file_t, 'mode': '0750' }
external_upgrade_tasks:
- when:
- step|int == 1
tags:
- never
- system_upgrade_transfer_data
- system_upgrade_stop_services
block:
- name: Stop ironic pxe container
import_role:
name: tripleo_container_stop
vars:
tripleo_containers_to_stop:
- ironic_pxe_tftp
- ironic_pxe_http
tripleo_delegate_to: "{{ groups['ironic_pxe'] | default([]) }}"