summaryrefslogtreecommitdiffstats
path: root/ansible_collections/cisco/intersight/playbooks/derive_profiles.yml
diff options
context:
space:
mode:
Diffstat (limited to 'ansible_collections/cisco/intersight/playbooks/derive_profiles.yml')
-rw-r--r--ansible_collections/cisco/intersight/playbooks/derive_profiles.yml72
1 files changed, 72 insertions, 0 deletions
diff --git a/ansible_collections/cisco/intersight/playbooks/derive_profiles.yml b/ansible_collections/cisco/intersight/playbooks/derive_profiles.yml
new file mode 100644
index 000000000..9f8ef51f8
--- /dev/null
+++ b/ansible_collections/cisco/intersight/playbooks/derive_profiles.yml
@@ -0,0 +1,72 @@
+---
+#
+# include_tasks for deriving profiles from a template
+#
+# Get the Organization Moid
+- name: "Get {{ template_name }}_DERIVED-{{ item }} Profile Moid"
+ intersight_rest_api:
+ api_private_key: "{{ api_private_key | default(omit) }}"
+ api_key_id: "{{ api_key_id | default(omit) }}"
+ api_uri: "{{ api_uri | default(omit) }}"
+ validate_certs: "{{ validate_certs | default(omit) }}"
+ state: "{{ state | default(omit) }}"
+ resource_path: /server/Profiles
+ query_params:
+ $filter: "Name eq '{{ template_name }}_DERIVED-{{ item }}'"
+ register: profile_resp
+# Derive profiles from template (if profiles don't already exist)
+- name: "POST to derive {{ template_name }}_DERIVED-{{ item }}"
+ intersight_rest_api:
+ api_private_key: "{{ api_private_key | default(omit) }}"
+ api_key_id: "{{ api_key_id | default(omit) }}"
+ api_uri: "{{ api_uri | default(omit) }}"
+ validate_certs: "{{ validate_certs | default(omit) }}"
+ state: "{{ state | default(omit) }}"
+ resource_path: /bulk/MoCloners
+ update_method: post
+ api_body: {
+ "Sources": [
+ {
+ "ClassId": "mo.MoRef",
+ "ObjectType": "server.ProfileTemplate",
+ "Moid": "{{ template_resp.api_response.Moid }}"
+ }
+ ],
+ "Targets": [
+ {
+ "Name": "{{ template_name }}_DERIVED-{{ item }}",
+ "ObjectType": "server.Profile",
+ "Organization": {
+ "Moid": "{{ org_resp.api_response.Moid }}"
+ },
+ "ClassId": "server.Profile"
+ }
+ ]
+ }
+ when: profile_resp.api_response is not defined or not profile_resp.api_response
+# POST updates to derived profiles if template was changed
+- name: "POST to update {{ template_name }}_DERIVED-{{ item }}"
+ intersight_rest_api:
+ api_private_key: "{{ api_private_key | default(omit) }}"
+ api_key_id: "{{ api_key_id | default(omit) }}"
+ api_uri: "{{ api_uri | default(omit) }}"
+ validate_certs: "{{ validate_certs | default(omit) }}"
+ state: "{{ state | default(omit) }}"
+ resource_path: /bulk/MoMergers
+ update_method: post
+ api_body: {
+ "Sources": [
+ {
+ "ObjectType": "server.ProfileTemplate",
+ "Moid": "{{ template_resp.api_response.Moid }}"
+ }
+ ],
+ "Targets": [
+ {
+ "ObjectType": "server.Profile",
+ "Moid": "{{ profile_resp.api_response.Moid }}"
+ }
+ ],
+ "MergeAction":"Replace"
+ }
+ when: profile_resp.api_response and template_resp.changed