diff --git a/inventory/sample-multi-clusters.d/files/cluster1/projects/my-project1.param b/inventory/sample-multi-clusters.d/files/cluster1/projects/my-project1.param new file mode 100644 index 0000000..bb0e75f --- /dev/null +++ b/inventory/sample-multi-clusters.d/files/cluster1/projects/my-project1.param @@ -0,0 +1,3 @@ +NAMESPACE=my-project1 +NAMESPACE_DISPLAY_NAME=My Example Project 1 +NAMESPACE_DESCRIPTION=Example of creating a project in cluster 1 diff --git a/inventory/sample-multi-clusters.d/files/cluster2/projects/your-project1.param b/inventory/sample-multi-clusters.d/files/cluster2/projects/your-project1.param new file mode 100644 index 0000000..d7b9931 --- /dev/null +++ b/inventory/sample-multi-clusters.d/files/cluster2/projects/your-project1.param @@ -0,0 +1,3 @@ +NAMESPACE=your-project1 +NAMESPACE_DISPLAY_NAME=Your Example Project 1 +NAMESPACE_DESCRIPTION=Example of creating a project in cluster 2 diff --git a/inventory/sample-multi-clusters.d/inventory/host_vars/cluster1.yml b/inventory/sample-multi-clusters.d/inventory/host_vars/cluster1.yml new file mode 100644 index 0000000..9edabe7 --- /dev/null +++ b/inventory/sample-multi-clusters.d/inventory/host_vars/cluster1.yml @@ -0,0 +1,17 @@ +--- + +ansible_connection: local + +openshift_login_url: https://console.cluster1.example.com +openshift_token: R45tdflgkj123asdf_sdfit +# openshift_insecure: true + + +openshift_cluster_content: +- object: projects + content: + - name: "my project 1" + template: https://raw.githubusercontent.com/redhat-cop/cluster-lifecycle/master/files/projectrequest/template.yml + params: "{{ inventory_dir }}/../files/cluster1/projects/my-project1.param" + template_action: create + diff --git a/inventory/sample-multi-clusters.d/inventory/host_vars/cluster2.yml b/inventory/sample-multi-clusters.d/inventory/host_vars/cluster2.yml new file mode 100644 index 0000000..0804d57 --- /dev/null +++ b/inventory/sample-multi-clusters.d/inventory/host_vars/cluster2.yml @@ -0,0 +1,15 @@ +--- + +ansible_connection: local + +openshift_login_url: https://console.cluster2.example.com +openshift_token: ssdflsdkf34l5jk34l5kjvdf +# openshift_insecure: true + +openshift_cluster_content: +- object: projects + content: + - name: "your project 1" + template: https://raw.githubusercontent.com/redhat-cop/cluster-lifecycle/master/files/projectrequest/template.yml + params: "{{ inventory_dir }}/../files/cluster2/projects/your-project1.param" + template_action: create diff --git a/inventory/sample-multi-clusters.d/inventory/hosts b/inventory/sample-multi-clusters.d/inventory/hosts new file mode 100644 index 0000000..cd09914 --- /dev/null +++ b/inventory/sample-multi-clusters.d/inventory/hosts @@ -0,0 +1,6 @@ + + +[seed-hosts] +cluster1 +cluster2 + diff --git a/playbooks/openshift-cluster-seed.yml b/playbooks/openshift-cluster-seed.yml index b7ca2ad..0946347 100644 --- a/playbooks/openshift-cluster-seed.yml +++ b/playbooks/openshift-cluster-seed.yml @@ -1,4 +1,4 @@ --- -- hosts: seed-hosts[0] +- hosts: seed-hosts roles: - openshift-applier diff --git a/roles/openshift-applier/filter_plugins/applier-filters.pyc b/roles/openshift-applier/filter_plugins/applier-filters.pyc new file mode 100644 index 0000000..81f6dea Binary files /dev/null and b/roles/openshift-applier/filter_plugins/applier-filters.pyc differ diff --git a/roles/openshift-applier/handlers/main.yml b/roles/openshift-applier/handlers/main.yml index 3fae76f..3c7018a 100644 --- a/roles/openshift-applier/handlers/main.yml +++ b/roles/openshift-applier/handlers/main.yml @@ -14,3 +14,7 @@ with_items: - "{{ tmp_dep_dir }}" +- name: "Cleanup OpenShift config" + file: + path: "{{ openshift_config_tempdir.path }}" + state: absent diff --git a/roles/openshift-applier/tasks/main.yml b/roles/openshift-applier/tasks/main.yml index c2bfa55..dd490b6 100644 --- a/roles/openshift-applier/tasks/main.yml +++ b/roles/openshift-applier/tasks/main.yml @@ -15,6 +15,9 @@ when: - ansible_connection != 'local' +- name: "Prep Access to OpenShift environment(s)" + import_tasks: prep-access.yml + - name: "Create OpenShift objects" include_tasks: process-content.yml with_items: diff --git a/roles/openshift-applier/tasks/prep-access.yml b/roles/openshift-applier/tasks/prep-access.yml new file mode 100644 index 0000000..09fce01 --- /dev/null +++ b/roles/openshift-applier/tasks/prep-access.yml @@ -0,0 +1,19 @@ +--- + +- name: "Create temporary dir" + tempfile: + state: directory + prefix: "openshift-{{ ansible_host }}" + register: openshift_config_tempdir + notify: + - "Cleanup OpenShift config" + +- name: "Define temporary config dir" + set_fact: + kubeconfig: "{{ openshift_config_tempdir.path }}/config" + +- name: "Capture OpenShift Config based on token" + command: > + oc login --token={{ openshift_token }} {{ openshift_insecure | ternary('--insecure-skip-tls-verify', '') }} {{ openshift_login_url }} + environment: + KUBECONFIG: "{{ kubeconfig }}" diff --git a/roles/openshift-applier/tasks/process-content.yml b/roles/openshift-applier/tasks/process-content.yml index 275dc33..3698635 100644 --- a/roles/openshift-applier/tasks/process-content.yml +++ b/roles/openshift-applier/tasks/process-content.yml @@ -21,6 +21,8 @@ ignore_errors: true - command: > oc apply -f {{ tmp_inv_dir }}{{ entry.content_dir }} + environment: + KUBECONFIG: "{{ kubeconfig }}" when: - entry.content_dir is defined - entry.content_dir|trim != '' diff --git a/roles/openshift-applier/tasks/process-one-entry.yml b/roles/openshift-applier/tasks/process-one-entry.yml index 200d4c4..620afe9 100644 --- a/roles/openshift-applier/tasks/process-one-entry.yml +++ b/roles/openshift-applier/tasks/process-one-entry.yml @@ -86,6 +86,8 @@ - name: "{{ file_action | capitalize }} OpenShift objects based on static files for '{{ entry.object}} : {{ content.name | default(file | basename) }}'" command: > oc {{ file_action }} {{ target_namespace }} -f {{ file }} {{ (file_action == 'delete') | ternary(' --ignore-not-found', '') }} + environment: + KUBECONFIG: "{{ kubeconfig }}" register: command_result failed_when: - command_result.rc != 0 @@ -101,6 +103,8 @@ {{ target_namespace }} \ --param-file={{ tmp_inv_dir }}{{ content.params }} | \ oc {{ template_action }} {{ target_namespace }} -f - {{ (template_action == 'delete') | ternary(' --ignore-not-found', '') }} + environment: + KUBECONFIG: "{{ kubeconfig }}" register: command_result failed_when: - command_result.rc != 0 @@ -118,6 +122,8 @@ {{ target_namespace }} \ --param-file={{ item }} | \ oc {{ template_action }} {{ target_namespace }} -f - {{ (template_action == 'delete') | ternary(' --ignore-not-found', '') }} + environment: + KUBECONFIG: "{{ kubeconfig }}" register: command_result failed_when: - command_result.rc != 0