Skip to content

Commit 0539998

Browse files
committed
Refactor openshift_node
- Get pull secret from cluster instead of file - Use temp_dir var for temp directory - Remove temp directory - Upgrade: use (updated) local MCD image
1 parent 7797efc commit 0539998

File tree

6 files changed

+52
-59
lines changed

6 files changed

+52
-59
lines changed

README.md

-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ An example inventory can be found in [inventory/hosts.example](inventory/hosts.e
3838
Required variables include:
3939

4040
- `openshift_kubeconfig_path` - Path to the kubeconfig for the cluster
41-
- `openshift_pull_secret_path` - Path to the pull secret to the image registry
4241

4342
## Run the RHEL node scaleup playbook
4443

images/installer/root/usr/local/bin/entrypoint-provider

-3
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,6 @@ if ! whoami &>/dev/null; then
2424
echo "${USER:-default}:x:$(id -u):$(id -g):Default User:$HOME:/sbin/nologin" >> /etc/passwd
2525
fi
2626

27-
# Provide a path to the pull secret
28-
mkdir -p "${WORK}/inventory/dynamic/${TYPE}/group_vars/all"
29-
echo "openshift_pull_secret_path: \"${FILES}/pull-secret\"" > "${WORK}/inventory/dynamic/${TYPE}/group_vars/all/00_pull_secret_path.yml"
3027
# Add any injected variable files into the group vars directory
3128
find "${FILES}" \( -name '*.yml' -or -name '*.yaml' -or -name vars \) -print0 | xargs -0 -L1 -I {} ln -fs {} "${WORK}/inventory/dynamic/${TYPE}/group_vars/all"
3229
# Avoid sudo when running locally - nothing in the image requires it.

inventory/hosts.example

-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ ansible_user=root
1212
# Required configuration variables #
1313
###############################################################################
1414
openshift_kubeconfig_path="~/.kube/config"
15-
openshift_pull_secret_path="~/pull-secret.txt"
1615

1716
# For running RHEL worker upgrades
1817
[workers]

roles/openshift_node/defaults/main.yml

-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
---
2-
openshift_pull_secret_path: '~/pull-secret.txt'
3-
42
openshift_node_machineconfigpool: 'worker'
53
openshift_node_tls_verify: false
64

roles/openshift_node/tasks/apply_machine_config.yml

+19-38
Original file line numberDiff line numberDiff line change
@@ -37,54 +37,35 @@
3737
content: "{{ (oc_get.stdout | from_json).spec.config }}"
3838
dest: "{{ temp_dir.path }}/worker_ignition_config.json"
3939

40-
- name: Copy pull secret
41-
copy:
42-
src: "{{ openshift_pull_secret_path }}"
43-
dest: "{{ temp_dir.path }}/pull-secret.json"
44-
45-
- name: Get release image
40+
- name: Get machine-config-daemon image
4641
command: >
47-
oc get clusterversion
42+
oc get daemonset machine-config-daemon
4843
--config={{ openshift_node_kubeconfig_path }}
49-
--output=jsonpath='{.items[0].status.desired.image}'
44+
--namespace=openshift-machine-config-operator
45+
--output=jsonpath='{.spec.template.spec.containers[?(@.name=="machine-config-daemon")].image}'
5046
delegate_to: localhost
5147
register: oc_get
5248
until:
5349
- oc_get.stdout != ''
5450
retries: 36
5551
delay: 5
5652

57-
- name: Set openshift_release_image fact
53+
- name: Set l_mcd_image fact
5854
set_fact:
59-
openshift_release_image: "{{ oc_get.stdout }}"
60-
61-
- name: Pull release image
62-
command: "podman pull --tls-verify={{ openshift_node_tls_verify }} --authfile {{ temp_dir.path }}/pull-secret.json {{ openshift_release_image }}"
63-
64-
- name: Get machine controller daemon image from release image
65-
command: "podman run --rm {{ openshift_release_image }} image machine-config-daemon"
66-
register: release_image_mcd
67-
68-
- block:
69-
- name: Pull MCD image
70-
command: "podman pull --tls-verify={{ openshift_node_tls_verify }} --authfile {{ temp_dir.path }}/pull-secret.json {{ release_image_mcd.stdout }}"
71-
72-
- name: Apply machine config
73-
command: "podman run {{ podman_mounts }} {{ podman_flags }} {{ mcd_command }}"
74-
vars:
75-
podman_flags: "--privileged --rm -ti {{ release_image_mcd.stdout }}"
76-
podman_mounts: "-v /:/rootfs -v /var/run/dbus:/var/run/dbus -v /run/systemd:/run/systemd"
77-
mcd_command: "start --node-name {{ ansible_hostname }} --once-from {{ temp_dir.path }}/worker_ignition_config.json --skip-reboot"
55+
l_mcd_image: "{{ oc_get.stdout }}"
7856

79-
- name: Remove temp directory
80-
file:
81-
path: "{{ temp_dir.path }}"
82-
state: absent
57+
- name: Apply machine config
58+
command: "podman run {{ podman_mounts }} {{ podman_flags }} {{ mcd_command }}"
59+
vars:
60+
podman_flags: "--privileged --rm -ti {{ l_mcd_image }}"
61+
podman_mounts: "-v /:/rootfs -v /var/run/dbus:/var/run/dbus -v /run/systemd:/run/systemd"
62+
mcd_command: "start --node-name {{ ansible_hostname }} --once-from {{ temp_dir.path }}/worker_ignition_config.json --skip-reboot"
8363

84-
- name: Reboot the host and wait for it to come back
85-
reboot:
86-
# reboot_timeout: 600 # default, 10 minutes
64+
- name: Remove temp directory
65+
file:
66+
path: "{{ temp_dir.path }}"
67+
state: absent
8768

88-
rescue:
89-
- fail:
90-
msg: "Machine config apply failed"
69+
- name: Reboot the host and wait for it to come back
70+
reboot:
71+
# reboot_timeout: 600 # default, 10 minutes

roles/openshift_node/tasks/config.yml

+33-14
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
# The atomic-openshift-node service will set this parameter on
1010
# startup, but if the network service is restarted this setting is
1111
# lost. Reference: https://bugzilla.redhat.com/show_bug.cgi?id=1372388
12-
- sysctl:
12+
- name: Enable IP Forwarding
13+
sysctl:
1314
name: net.ipv4.ip_forward
1415
value: 1
1516
sysctl_file: "/etc/sysctl.d/99-openshift.conf"
@@ -21,10 +22,10 @@
2122
state: yes
2223
persistent: yes
2324

24-
- name: create temp directory
25+
- name: Create temp directory
2526
tempfile:
2627
state: directory
27-
register: tempfile
28+
register: temp_dir
2829

2930
- name: Wait for bootstrap endpoint to show up
3031
uri:
@@ -40,15 +41,28 @@
4041
- name: Fetch bootstrap ignition file locally
4142
uri:
4243
url: "{{ openshift_node_bootstrap_endpoint }}"
43-
dest: "{{ tempfile.path }}/bootstrap.ign"
44+
dest: "{{ temp_dir.path }}/bootstrap.ign"
4445
validate_certs: false
4546

46-
- name: Copy pull secret in the directory
47+
- name: Get cluster pull-secret
48+
command: >
49+
oc get secret pull-secret
50+
--config={{ openshift_node_kubeconfig_path }}
51+
--namespace=openshift-config
52+
--output=jsonpath='{.data.\.dockerconfigjson}'
53+
delegate_to: localhost
54+
register: oc_get
55+
until:
56+
- oc_get.stdout != ''
57+
retries: 36
58+
delay: 5
59+
60+
- name: Write pull-secret to file
4761
copy:
48-
src: "{{ openshift_pull_secret_path }}"
49-
dest: "{{ tempfile.path }}/pull-secret.json"
62+
content: "{{ oc_get.stdout | b64decode }}"
63+
dest: "{{ temp_dir.path }}/pull-secret.json"
5064

51-
- name: Get release image
65+
- name: Get cluster release image
5266
command: >
5367
oc get clusterversion
5468
--config={{ openshift_node_kubeconfig_path }}
@@ -60,27 +74,32 @@
6074
retries: 36
6175
delay: 5
6276

63-
- name: Set openshift_release_image fact
77+
- name: Set l_release_image fact
6478
set_fact:
65-
openshift_release_image: "{{ oc_get.stdout }}"
79+
l_release_image: "{{ oc_get.stdout }}"
6680

6781
- name: Pull release image
68-
command: "podman pull --tls-verify={{ openshift_node_tls_verify }} --authfile {{ tempfile.path }}/pull-secret.json {{ openshift_release_image }}"
82+
command: "podman pull --tls-verify={{ openshift_node_tls_verify }} --authfile {{ temp_dir.path }}/pull-secret.json {{ l_release_image }}"
6983

7084
- name: Get machine controller daemon image from release image
71-
command: "podman run --rm {{ openshift_release_image }} image machine-config-daemon"
85+
command: "podman run --rm {{ l_release_image }} image machine-config-daemon"
7286
register: release_image_mcd
7387

7488
- block:
7589
- name: Pull MCD image
76-
command: "podman pull --tls-verify={{ openshift_node_tls_verify }} --authfile {{ tempfile.path }}/pull-secret.json {{ release_image_mcd.stdout }}"
90+
command: "podman pull --tls-verify={{ openshift_node_tls_verify }} --authfile {{ temp_dir.path }}/pull-secret.json {{ release_image_mcd.stdout }}"
7791

7892
- name: Apply ignition manifest
7993
command: "podman run {{ podman_mounts }} {{ podman_flags }} {{ mcd_command }}"
8094
vars:
8195
podman_flags: "--privileged --rm -ti {{ release_image_mcd.stdout }}"
8296
podman_mounts: "-v /:/rootfs -v /var/run/dbus:/var/run/dbus -v /run/systemd:/run/systemd"
83-
mcd_command: "start --node-name {{ ansible_hostname }} --once-from {{ tempfile.path }}/bootstrap.ign --skip-reboot"
97+
mcd_command: "start --node-name {{ ansible_hostname }} --once-from {{ temp_dir.path }}/bootstrap.ign --skip-reboot"
98+
99+
- name: Remove temp directory
100+
file:
101+
path: "{{ temp_dir.path }}"
102+
state: absent
84103

85104
- name: Reboot the host and wait for it to come back
86105
reboot:

0 commit comments

Comments
 (0)