From 60b9a9917e987e321b97b0f611fc2c77813be8b0 Mon Sep 17 00:00:00 2001 From: Markos Chandras Date: Thu, 31 Aug 2017 15:29:15 +0100 Subject: [PATCH] playbooks: roles: bifrost-ironic-install: Set defaults for /etc/hosts If /etc/hosts is not properly configured for localhost, then mysql will fail with the following error: Aug 31 16:06:43 vagrant-openSUSE-Leap mysql-systemd-helper[20301]: Creating MySQL privilege database... Aug 31 16:06:43 vagrant-openSUSE-Leap mysql-systemd-helper[20301]: Neither host 'vagrant-openSUSE-Leap' nor 'localhost' could be looked up with Aug 31 16:06:43 vagrant-openSUSE-Leap mysql-systemd-helper[20301]: '/usr/bin/resolveip' Aug 31 16:06:43 vagrant-openSUSE-Leap mysql-systemd-helper[20301]: Please configure the 'hostname' command to return a correct Aug 31 16:06:43 vagrant-openSUSE-Leap mysql-systemd-helper[20301]: hostname. Aug 31 16:06:43 vagrant-openSUSE-Leap mysql-systemd-helper[20301]: If you want to solve this at a later stage, restart this script Aug 31 16:06:43 vagrant-openSUSE-Leap mysql-systemd-helper[20301]: with the --force option Aug 31 16:06:43 vagrant-openSUSE-Leap systemd[1]: mysql.service: Control process exited, code=exited status=1 Aug 31 16:06:43 vagrant-openSUSE-Leap systemd[1]: Failed to start MySQL server. As such, we need to ensure that /etc/hosts is configured before starting the mysql service. Change-Id: I5f1151ab86b6190cf2310bd7fade5290d88abc1e --- .../bifrost-ironic-install/tasks/bootstrap.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/playbooks/roles/bifrost-ironic-install/tasks/bootstrap.yml b/playbooks/roles/bifrost-ironic-install/tasks/bootstrap.yml index aa5c3ea3e..ee43136dc 100644 --- a/playbooks/roles/bifrost-ironic-install/tasks/bootstrap.yml +++ b/playbooks/roles/bifrost-ironic-install/tasks/bootstrap.yml @@ -27,21 +27,21 @@ enable_venv: true when: lookup('env', 'VENV') | length > 0 +- name: "Ensure /etc/hosts has good defaults" + lineinfile: + dest: "/etc/hosts" + regexp: "{{ item.regexp }}.*({{ ansible_hostname }}|localhost).*" + line: "{{ item.contents }}" + with_items: + - { regexp: '^127\.0\.0\.1', contents: '127.0.0.1 {{ ansible_hostname }} {{ ansible_fqdn }} localhost' } + - { regexp: '^::1', contents: '::1 {{ ansible_hostname }} {{ ansible_fqdn }} localhost ipv6-localhost ipv6-loopback' } + # NOTE(sean-k-mooney) only the RabbitMQ server and MySQL db are started # during bootstrapping. all other services are started in the Start phase. - name: "Start database service" service: name={{ mysql_service_name }} state=started enabled=yes when: ironic.database.host == 'localhost' -- name: "RabbitMQ - Testing if hostname is defined in /etc/hosts" - command: grep -i "{{ ansible_hostname }}" /etc/hosts - ignore_errors: yes - register: test_grep_fix_hostname -# NOTE(sean-k-mooney) in a docker container this will fail so /etc/hosts -# should be fixed before running the bootstrap phase in a container. -- name: "RabbitMQ - Fixing /etc/hosts" - command: sed -i 's/localhost/{{ ansible_hostname }} localhost/' /etc/hosts - when: test_grep_fix_hostname.rc != 0 # NOTE(hwoarang): The erlang SUSE package forces epmd to listen on localhost # address which breaks rabbitmq-server when listening on a different address. # Make sure the systemd service and socket are stopped so rabbitmq-server will