Refactor bootstrap-os (#10983)
* Remove leftover files for Coreos
Coreos was replaced by flatcar in 058438a25
but the file was copied
instead of moved.
* Remove workarounds for resolved ansible issues
* boostrap: Use first_found to include per distro
Using directly ID and VARIANT_ID with first_found allow for less manual
includes.
Distro "families" are simply handled by symlinks.
* boostrap: don't set ansible_python_interpreter
- Allows users to override the chosen python_interpreter with group_vars
easily (group_vars have lesser precedence than facts)
- Allows us to use vars at the task scope to use a virtual env
Ansible python discovery has improved, so those workarounds should not
be necessary anymore.
Special workaround for Flatcar, due to upstream ansible not willing to
support it.
pull/11035/head
parent
baf4842774
commit
c58497cde9
|
@ -1,37 +0,0 @@
|
||||||
---
|
|
||||||
# CoreOS ships without Python installed
|
|
||||||
|
|
||||||
- name: Check if bootstrap is needed
|
|
||||||
raw: stat /opt/bin/.bootstrapped
|
|
||||||
register: need_bootstrap
|
|
||||||
failed_when: false
|
|
||||||
changed_when: false
|
|
||||||
tags:
|
|
||||||
- facts
|
|
||||||
|
|
||||||
- name: Force binaries directory for Container Linux by CoreOS and Flatcar
|
|
||||||
set_fact:
|
|
||||||
bin_dir: "/opt/bin"
|
|
||||||
tags:
|
|
||||||
- facts
|
|
||||||
|
|
||||||
- name: Run bootstrap.sh
|
|
||||||
script: bootstrap.sh
|
|
||||||
become: true
|
|
||||||
environment: "{{ proxy_env }}"
|
|
||||||
when:
|
|
||||||
- need_bootstrap.rc != 0
|
|
||||||
|
|
||||||
- name: Set the ansible_python_interpreter fact
|
|
||||||
set_fact:
|
|
||||||
ansible_python_interpreter: "{{ bin_dir }}/python"
|
|
||||||
tags:
|
|
||||||
- facts
|
|
||||||
|
|
||||||
- name: Disable auto-upgrade
|
|
||||||
systemd:
|
|
||||||
name: locksmithd.service
|
|
||||||
masked: true
|
|
||||||
state: stopped
|
|
||||||
when:
|
|
||||||
- coreos_locksmithd_disable
|
|
|
@ -55,22 +55,10 @@
|
||||||
raw: apt-get update --allow-releaseinfo-change
|
raw: apt-get update --allow-releaseinfo-change
|
||||||
become: true
|
become: true
|
||||||
when:
|
when:
|
||||||
- '''ID=debian'' in os_release.stdout_lines'
|
- os_release_dict['ID'] == 'debian'
|
||||||
- '''VERSION_ID="10"'' in os_release.stdout_lines or ''VERSION_ID="11"'' in os_release.stdout_lines'
|
- os_release_dict['VERSION_ID'] in ["10", "11"]
|
||||||
register: bootstrap_update_apt_result
|
register: bootstrap_update_apt_result
|
||||||
changed_when:
|
changed_when:
|
||||||
- '"changed its" in bootstrap_update_apt_result.stdout'
|
- '"changed its" in bootstrap_update_apt_result.stdout'
|
||||||
- '"value from" in bootstrap_update_apt_result.stdout'
|
- '"value from" in bootstrap_update_apt_result.stdout'
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
|
|
||||||
- name: Set the ansible_python_interpreter fact
|
|
||||||
set_fact:
|
|
||||||
ansible_python_interpreter: "/usr/bin/python3"
|
|
||||||
|
|
||||||
# Workaround for https://github.com/ansible/ansible/issues/25543
|
|
||||||
- name: Install dbus for the hostname module
|
|
||||||
package:
|
|
||||||
name: dbus
|
|
||||||
state: present
|
|
||||||
use: apt
|
|
||||||
become: true
|
|
|
@ -38,9 +38,3 @@
|
||||||
delay: 5
|
delay: 5
|
||||||
sleep: 5
|
sleep: 5
|
||||||
when: need_bootstrap.rc != 0
|
when: need_bootstrap.rc != 0
|
||||||
|
|
||||||
- name: Store the fact if this is an fedora core os host
|
|
||||||
set_fact:
|
|
||||||
is_fedora_coreos: True
|
|
||||||
tags:
|
|
||||||
- facts
|
|
|
@ -9,12 +9,6 @@
|
||||||
tags:
|
tags:
|
||||||
- facts
|
- facts
|
||||||
|
|
||||||
- name: Force binaries directory for Flatcar Container Linux by Kinvolk
|
|
||||||
set_fact:
|
|
||||||
bin_dir: "/opt/bin"
|
|
||||||
tags:
|
|
||||||
- facts
|
|
||||||
|
|
||||||
- name: Run bootstrap.sh
|
- name: Run bootstrap.sh
|
||||||
script: bootstrap.sh
|
script: bootstrap.sh
|
||||||
become: true
|
become: true
|
||||||
|
@ -22,11 +16,14 @@
|
||||||
when:
|
when:
|
||||||
- need_bootstrap.rc != 0
|
- need_bootstrap.rc != 0
|
||||||
|
|
||||||
- name: Set the ansible_python_interpreter fact
|
# Workaround ansible https://github.com/ansible/ansible/pull/82821
|
||||||
|
# We set the interpreter rather than ansible_python_interpreter to allow
|
||||||
|
# - using virtual env with task level ansible_python_interpreter later
|
||||||
|
# - let users specify an ansible_python_interpreter in group_vars
|
||||||
|
|
||||||
|
- name: Make interpreter discovery works on Flatcar
|
||||||
set_fact:
|
set_fact:
|
||||||
ansible_python_interpreter: "{{ bin_dir }}/python"
|
ansible_interpreter_python_fallback: "{{ ansible_interpreter_python_fallback + [ '/opt/bin/python' ] }}"
|
||||||
tags:
|
|
||||||
- facts
|
|
||||||
|
|
||||||
- name: Disable auto-upgrade
|
- name: Disable auto-upgrade
|
||||||
systemd:
|
systemd:
|
|
@ -6,47 +6,29 @@
|
||||||
# This command should always run, even in check mode
|
# This command should always run, even in check mode
|
||||||
check_mode: false
|
check_mode: false
|
||||||
|
|
||||||
- name: Bootstrap CentOS
|
- name: Include distro specifics vars and tasks
|
||||||
include_tasks: bootstrap-centos.yml
|
vars:
|
||||||
when: '''ID="centos"'' in os_release.stdout_lines or ''ID="ol"'' in os_release.stdout_lines or ''ID="almalinux"'' in os_release.stdout_lines or ''ID="rocky"'' in os_release.stdout_lines or ''ID="kylin"'' in os_release.stdout_lines or ''ID="uos"'' in os_release.stdout_lines or ''ID="openEuler"'' in os_release.stdout_lines'
|
os_release_dict: "{{ os_release.stdout_lines | select('regex', '^.+=.*$') | map('regex_replace', '\"', '') |
|
||||||
|
map('split', '=') | community.general.dict }}"
|
||||||
|
block:
|
||||||
|
- name: Include vars
|
||||||
|
include_vars: "{{ item }}"
|
||||||
|
tags:
|
||||||
|
- facts
|
||||||
|
with_first_found:
|
||||||
|
- &search
|
||||||
|
files:
|
||||||
|
- "{{ os_release_dict['ID'] }}-{{ os_release_dict['VARIANT_ID'] }}.yml"
|
||||||
|
- "{{ os_release_dict['ID'] }}.yml"
|
||||||
|
paths:
|
||||||
|
- vars/
|
||||||
|
skip: True
|
||||||
|
- name: Include tasks
|
||||||
|
include_tasks: "{{ item }}"
|
||||||
|
with_first_found:
|
||||||
|
- <<: *search
|
||||||
|
paths: []
|
||||||
|
|
||||||
- name: Bootstrap Amazon
|
|
||||||
include_tasks: bootstrap-amazon.yml
|
|
||||||
when: '''ID="amzn"'' in os_release.stdout_lines'
|
|
||||||
|
|
||||||
- name: Bootstrap RedHat
|
|
||||||
include_tasks: bootstrap-redhat.yml
|
|
||||||
when: '''ID="rhel"'' in os_release.stdout_lines'
|
|
||||||
|
|
||||||
- name: Bootstrap Clear Linux
|
|
||||||
include_tasks: bootstrap-clearlinux.yml
|
|
||||||
when: '''ID=clear-linux-os'' in os_release.stdout_lines'
|
|
||||||
|
|
||||||
# Fedora CoreOS
|
|
||||||
- name: Bootstrap Fedora CoreOS
|
|
||||||
include_tasks: bootstrap-fedora-coreos.yml
|
|
||||||
when:
|
|
||||||
- '''ID=fedora'' in os_release.stdout_lines'
|
|
||||||
- '''VARIANT_ID=coreos'' in os_release.stdout_lines'
|
|
||||||
|
|
||||||
- name: Bootstrap Flatcar
|
|
||||||
include_tasks: bootstrap-flatcar.yml
|
|
||||||
when: '''ID=flatcar'' in os_release.stdout_lines'
|
|
||||||
|
|
||||||
- name: Bootstrap Debian
|
|
||||||
include_tasks: bootstrap-debian.yml
|
|
||||||
when: '''ID=debian'' in os_release.stdout_lines or ''ID=ubuntu'' in os_release.stdout_lines'
|
|
||||||
|
|
||||||
# Fedora "classic"
|
|
||||||
- name: Boostrap Fedora
|
|
||||||
include_tasks: bootstrap-fedora.yml
|
|
||||||
when:
|
|
||||||
- '''ID=fedora'' in os_release.stdout_lines'
|
|
||||||
- '''VARIANT_ID=coreos'' not in os_release.stdout_lines'
|
|
||||||
|
|
||||||
- name: Bootstrap OpenSUSE
|
|
||||||
include_tasks: bootstrap-opensuse.yml
|
|
||||||
when: '''ID="opensuse-leap"'' in os_release.stdout_lines or ''ID="opensuse-tumbleweed"'' in os_release.stdout_lines'
|
|
||||||
|
|
||||||
- name: Create remote_tmp for it is used by another module
|
- name: Create remote_tmp for it is used by another module
|
||||||
file:
|
file:
|
||||||
|
@ -54,9 +36,7 @@
|
||||||
state: directory
|
state: directory
|
||||||
mode: 0700
|
mode: 0700
|
||||||
|
|
||||||
# Workaround for https://github.com/ansible/ansible/issues/42726
|
- name: Gather facts
|
||||||
# (1/3)
|
|
||||||
- name: Gather host facts to get ansible_os_family
|
|
||||||
setup:
|
setup:
|
||||||
gather_subset: '!all'
|
gather_subset: '!all'
|
||||||
filter: ansible_*
|
filter: ansible_*
|
||||||
|
@ -64,34 +44,7 @@
|
||||||
- name: Assign inventory name to unconfigured hostnames (non-CoreOS, non-Flatcar, Suse and ClearLinux, non-Fedora)
|
- name: Assign inventory name to unconfigured hostnames (non-CoreOS, non-Flatcar, Suse and ClearLinux, non-Fedora)
|
||||||
hostname:
|
hostname:
|
||||||
name: "{{ inventory_hostname }}"
|
name: "{{ inventory_hostname }}"
|
||||||
when:
|
when: override_system_hostname
|
||||||
- override_system_hostname
|
|
||||||
- ansible_os_family not in ['Suse', 'Flatcar', 'Flatcar Container Linux by Kinvolk', 'ClearLinux']
|
|
||||||
- not ansible_distribution == "Fedora"
|
|
||||||
- not is_fedora_coreos
|
|
||||||
|
|
||||||
# (2/3)
|
|
||||||
- name: Assign inventory name to unconfigured hostnames (CoreOS, Flatcar, Suse, ClearLinux and Fedora only)
|
|
||||||
command: "hostnamectl set-hostname {{ inventory_hostname }}"
|
|
||||||
register: hostname_changed
|
|
||||||
become: true
|
|
||||||
changed_when: false
|
|
||||||
when: >
|
|
||||||
override_system_hostname
|
|
||||||
and (ansible_os_family in ['Suse', 'Flatcar', 'Flatcar Container Linux by Kinvolk', 'ClearLinux']
|
|
||||||
or is_fedora_coreos
|
|
||||||
or ansible_distribution == "Fedora")
|
|
||||||
|
|
||||||
# (3/3)
|
|
||||||
- name: Update hostname fact (CoreOS, Flatcar, Suse, ClearLinux and Fedora only)
|
|
||||||
setup:
|
|
||||||
gather_subset: '!all'
|
|
||||||
filter: ansible_hostname
|
|
||||||
when: >
|
|
||||||
override_system_hostname
|
|
||||||
and (ansible_os_family in ['Suse', 'Flatcar', 'Flatcar Container Linux by Kinvolk', 'ClearLinux']
|
|
||||||
or is_fedora_coreos
|
|
||||||
or ansible_distribution == "Fedora")
|
|
||||||
|
|
||||||
- name: Install ceph-commmon package
|
- name: Install ceph-commmon package
|
||||||
package:
|
package:
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
opensuse.yml
|
|
@ -0,0 +1 @@
|
||||||
|
opensuse.yml
|
|
@ -0,0 +1 @@
|
||||||
|
debian.yml
|
|
@ -0,0 +1,2 @@
|
||||||
|
---
|
||||||
|
is_fedora_coreos: True
|
|
@ -0,0 +1,2 @@
|
||||||
|
---
|
||||||
|
bin_dir: "/opt/bin"
|
Loading…
Reference in New Issue