Skip to content

Commit

Permalink
Perliminary BILLI intergration
Browse files Browse the repository at this point in the history
  • Loading branch information
nocturnalastro committed Jun 27, 2022
1 parent 82720c6 commit 7374f73
Show file tree
Hide file tree
Showing 19 changed files with 218 additions and 4 deletions.
7 changes: 7 additions & 0 deletions deploy_billi.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
- import_playbook: playbooks/generate_manifests.yml
- import_playbook: playbooks/generate_agent_iso.yml
- import_playbook: playbooks/boot_iso.yml
vars:
discovery_iso_name: "{{ cluster_name}}/agent.iso"

5 changes: 5 additions & 0 deletions playbooks/generate_agent_iso.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
- name: Generate agent iso using BILLI
hosts: localhost
roles:
- generate_agent_iso
14 changes: 14 additions & 0 deletions playbooks/generate_manifests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
- name: Generate manfiests for BILLI
hosts: localhost
vars:
destination_hosts:
- localhost
pre_tasks:
- name: pre-compute need to get hashes
set_fact:
run_get_hash: "{{ image_hashes | default({}) | length == 0 }}"
roles:
- role: get_image_hash
when: run_get_hash
- generate_manifests
3 changes: 2 additions & 1 deletion roles/boot_iso/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
---
boot_iso_url: "{{ discovery_iso_server }}/{{ discovery_iso_name }}"
agent_iso_name: "{{ cluster_name }}/agent.iso"
boot_iso_url: "{{ discovery_iso_server }}/{{ agent_iso_name }}"
5 changes: 5 additions & 0 deletions roles/generate_agent_iso/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
generated_dir: "{{ repo_root_path }}/generated"
cluster_manifest_parent_dir: "{{ generated_dir}}/{{ cluster_name }}"
download_agent_dest_file: "{{ cluster_name }}/agent.iso"
download_dest_path: "{{ iso_download_dest_path | default('/opt/http_store/data') }}"
billi_executable: "{{ repo_root_path }}/../billi"
22 changes: 22 additions & 0 deletions roles/generate_agent_iso/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
- name: Generate iso
ansible.builtin.shell:
cmd: "{{ billi_executable }} agent create image"
chdir: "{{ cluster_manifest_parent_dir }}"


- name: Put discovery iso in http store
block:
- name: Create discovery directory
file:
path: "{{ download_dest_path + '/' + download_agent_dest_file | dirname }}"
recurse: yes
state: directory
become: true

- name: Create discovery directory
ansible.builtin.copy:
src: "{{ cluster_manifest_parent_dir }}/agent.iso"
dest: "{{ download_dest_path + '/' + download_agent_dest_file }}"
mode: 0644
delegate_to: http_store
become: true
6 changes: 6 additions & 0 deletions roles/generate_manifests/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
generated_dir: "{{ repo_root_path }}/generated"
cluster_manifest_parent_dir: "{{ generated_dir}}/{{ cluster_name }}"
cluster_manifest_dir: "{{ cluster_manifest_parent_dir }}/cluster-manifests"
mac_interface_default_mapping: "interfaces[?(name != null && mac != null)].{logical_nic_name: name, mac_address: mac}"
static_network_config: {}
version_filter: "[?(openshift_version == '4.10') && (cpu_architecture == 'x86_64')]"
25 changes: 25 additions & 0 deletions roles/generate_manifests/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
-

- name: Render nmstate
include_tasks: static.yml
loop: "{{ groups['nodes'] }}"

- name: Make cluster-manifests dir
file:
name: "{{ cluster_manifest_dir }}"
mode: 0775
recurse: yes
state: directory

- name: Render templates
template:
src: "{{ item }}"
dest: "{{ cluster_manifest_dir }}/{{ item.split('.')[:-1] | join('.') }}"
mode: 0644
loop:
- agent-cluster-install.yaml.j2
- cluster-deployment.yaml.j2
- cluster-image-set.yaml.j2
- infraenv.yaml.j2
- nmstateconfig.yaml.j2
- pull-secret.yaml.j2
29 changes: 29 additions & 0 deletions roles/generate_manifests/tasks/static.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
- name: "Set network config for {{ item }}"
set_fact:
item_network_config: "{{ hostvars[item].network_config }}"

- name: "Set default value of mac_interface_map for {{ item }}"
set_fact:
mac_interface_map: "{{ hostvars[item].mac_interface_map | default([]) }}"

- name: "Set mac_interface_map for {{ item }} using query"
set_fact:
mac_interface_map: "{{ item_network_config | json_query( network_config.mapping_query | default(mac_interface_default_mapping) ) }}"
when: hostvars[item].mac_interface_map is not defined

- name: Process network_config
import_role:
name: process_nmstate
vars:
network_config: "{{ item_network_config }}"
target_name: "{{ item }}"

- name: "Set static network config for {{ item }}"
set_fact:
static_network_config_entry:
network_yaml: "{{ rendered_nmstate_yml }}"
mac_interface_map: "{{ mac_interface_map }}"

- name: Update static_network_config_items
set_fact:
static_network_config: "{{ static_network_config | combine({item: static_network_config_entry}) }}"
22 changes: 22 additions & 0 deletions roles/generate_manifests/templates/agent-cluster-install.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
apiVersion: extensions.hive.openshift.io/v1beta1
kind: AgentClusterInstall
metadata:
name: {{ cluster_name }}-agent-cluster-install
namespace: cluster0
spec:
apiVIP: {{ api_vip }}
ingressVIP: {{ ingress_vip }}
clusterDeploymentRef:
name: {{ cluster_name }}
imageSetRef:
name: openshift-{{ openshift_version }}
networking:
clusterNetwork:
- cidr: {{ cluster_network_cidr }}
hostPrefix: {{ cluster_network_host_prefix }}
serviceNetwork:
- {{ service_network_cidr }}
provisionRequirements:
controlPlaneAgents: {{ groups['masters'] | length }}
workerAgents: {{ groups['workers'] | length }}
sshPublicKey: {{ ssh_public_key }}
22 changes: 22 additions & 0 deletions roles/generate_manifests/templates/cluster-deployment.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
apiVersion: hive.openshift.io/v1
kind: ClusterDeployment
metadata:
name: {{ cluster_name }}
namespace: cluster0
spec:
baseDomain: {{ base_dns_domain }}
clusterInstallRef:
group: extensions.hive.openshift.io
kind: AgentClusterInstall
name: {{ cluster_name }}-agent-cluster-install
version: v1beta1
clusterName: {{ cluster_name }}
controlPlaneConfig:
servingCertificates: {}
platform:
agentBareMetal:
agentSelector:
matchLabels:
cluster-name: {{ cluster_name }}
pullSecretRef:
name: pull-secret
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: hive.openshift.io/v1
kind: ClusterImageSet
metadata:
name: openshift-{{ openshift_version }}
spec:
releaseImage: {{ (assisted_installer_release_images |json_query(version_filter))[0].url }}
6 changes: 6 additions & 0 deletions roles/generate_manifests/templates/cluster-image-set.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: hive.openshift.io/v1
kind: ClusterImageSet
metadata:
name: openshift-{{ openshift_version }}
spec:
releaseImage: {{ (release_images_defaults |json_query(version_filter))[0].url }}
15 changes: 15 additions & 0 deletions roles/generate_manifests/templates/infraenv.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
apiVersion: agent-install.openshift.io/v1beta1
kind: InfraEnv
metadata:
name: {{ cluster_name }}-infraenv
namespace: cluster0
spec:
clusterRef:
name: {{ cluster_name }}
namespace: cluster0
pullSecretRef:
name: pull-secret
sshAuthorizedKey: {{ ssh_public_key }}
nmStateConfigLabelSelector:
matchLabels:
cluster-name: {{ cluster_name }}
19 changes: 19 additions & 0 deletions roles/generate_manifests/templates/nmstateconfig.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
{% for node in (groups['masters'] + groups['workers']) %}
apiVersion: agent-install.openshift.io/v1beta1
kind: NMStateConfig
metadata:
name: {{ node }}
namespace: openshift-machine-api
labels:
cluster-name: {{ cluster_name }}
spec:
config:
{{ static_network_config[node].network_yaml | indent(4) }}
interfaces:
{% for item in static_network_config[node].mac_interface_map %}
- name: {{ item.logical_nic_name }}
macAddress: {{ item.mac_address}}
{% endfor %}
---
{% endfor %}
8 changes: 8 additions & 0 deletions roles/generate_manifests/templates/pull-secret.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: v1
kind: Secret
type: kubernetes.io/dockerconfigjson
metadata:
name: pull-secret
namespace: cluster0
stringData:
.dockerconfigjson: '{{ pull_secret | to_json }}'
4 changes: 3 additions & 1 deletion roles/get_image_hash/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ os_images:
rootfs_url: https://mirror.openshift.com/pub/openshift-v4/aarch64/dependencies/rhcos/4.10/4.10.3/rhcos-4.10.3-aarch64-live-rootfs.aarch64.img
version: 410.84.202201251210-0

release_images:
release_images_defaults:
- openshift_version: '4.6'
cpu_architecture: x86_64
url: quay.io/openshift-release-dev/ocp-release:4.6.16-x86_64
Expand All @@ -78,6 +78,8 @@ release_images:
url: quay.io/openshift-release-dev/ocp-release:4.10.10-aarch64
version: 4.10.10

release_images: "{{ release_images_defaults }}"

assisted_service_image_repo_url: quay.io/edge-infrastructure

assisted_installer_images:
Expand Down
3 changes: 2 additions & 1 deletion roles/get_image_hash/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,9 @@
set_fact:
assisted_installer_os_images: "{{ os_images }}"
assisted_installer_release_images: "{{ release_images }}"
delegate_to: "assisted_installer"
delegate_to: "{{ item }}"
delegate_facts: true
loop: "{{ destination_hosts }}"

- name: "Set image hashes in {{ item }}"
set_fact:
Expand Down
1 change: 0 additions & 1 deletion roles/setup_ntp/templates/chrony.conf.j2
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,3 @@ server 127.0.0.1
{% for item in ntp_pool_servers %}
server {{ item }}
{% endfor %}

0 comments on commit 7374f73

Please sign in to comment.