diff --git a/restart-soctools.yml b/restart-soctools.yml new file mode 100644 index 0000000000000000000000000000000000000000..5aa1c94116243ecdf120c17813677b9c59643630 --- /dev/null +++ b/restart-soctools.yml @@ -0,0 +1,52 @@ +--- + +- name: Restart services for haproxy + hosts: haproxy + roles: + - haproxy + +- name: Restart services for mysql + hosts: mysql + roles: + - mysql + +- name: Restart services for Cassandra + hosts: cassandra + roles: + - cassandra + +- name: Restart services for Keycloak + hosts: keycloakcontainers + roles: + - keycloak + +- name: Restart services for NiFi + hosts: nificontainers + roles: + - nifi + +- name: Restart services for OpenDistro for Elasticsearch + hosts: odfeescontainers + roles: + - odfees + +- name: Restart services for OpenDistro Kibana for Elasticsearch + hosts: odfekibanacontainers + roles: + - odfekibana + +- name: Restart services for MISP + hosts: mispcontainers + roles: + - misp + +- name: Restart services for TheHive + hosts: thehive + roles: + - thehive + +- name: Restart services for Cortex + hosts: cortex + roles: + - cortex + diff --git a/roles/build/templates/keycloak/Dockerfile.j2 b/roles/build/templates/keycloak/Dockerfile.j2 index 951493a9935de4bf5702aea4b791d8b6df7d3ba4..f6c1206d5fc3579a7cd43f976feed6f4e0b60f59 100644 --- a/roles/build/templates/keycloak/Dockerfile.j2 +++ b/roles/build/templates/keycloak/Dockerfile.j2 @@ -11,7 +11,7 @@ USER root #ADD /{{role_path}}/templates/keycloak/keycloak-tools /opt/jboss/tools ADD keycloak-tools /opt/jboss/tools #ADD ../templates/keycloak/keycloak-tools /opt/jboss/tools -RUN yum -y install openssl supervisor && yum -y clean all && \ +RUN yum -y install openssl supervisor rsync && yum -y clean all && \ mkdir -p /opt/jboss/ && cd /opt/jboss/ && \ curl -L $KEYCLOAK_DIST | tar zx && \ mv /opt/jboss/keycloak-* /opt/jboss/keycloak && \ diff --git a/roles/keycloak/tasks/main.yml b/roles/keycloak/tasks/main.yml index f061ebc61bdf19b413828fcce4aa0d2e83f71973..644476353f7990ee09a414340cfe70aecaadb67d 100644 --- a/roles/keycloak/tasks/main.yml +++ b/roles/keycloak/tasks/main.yml @@ -1,125 +1,14 @@ --- -- name: Copy certificates in keycloak x509 conf dir - remote_user: jboss - copy: - src: "{{ item.local }}" - dest: "{{ item.remote }}" - mode: "{{ item.mode}}" - with_items: - - local: "files/{{ inventory_hostname }}.crt" - remote: /etc/x509/https/tls.crt - mode: '0644' - - local: "files/{{ inventory_hostname }}.key" - remote: /etc/x509/https/tls.key - mode: '0600' - - local: "files/{{ ca_cn }}.crt" - remote: /etc/x509/ca/ca.crt - mode: '0644' - - local: "files/cacerts.jks" - remote: /opt/jboss/keycloak/cacerts.jks - mode: '0644' - tags: - - start - -- name: Generate Keycloak secure config - remote_user: jboss - command: "/opt/jboss/tools/x509.sh" - environment: - X509_CA_BUNDLE: "/etc/x509/ca/ca.crt" - tags: - - start - -- name: Set admin password - remote_user: jboss - command: /opt/jboss/keycloak/bin/add-user-keycloak.sh --user "admin" --password "{{keycloak_adminpass}}" - tags: - - start - -- name: Configure logging format - remote_user: jboss - lineinfile: #TODO: Change to community.general.xml - path: /opt/jboss/keycloak/standalone/configuration/standalone.xml - regexp: '.*<formatter name="PATTERN">.*' - line: "<formatter name=\"JSON\"><json-formatter date-format=\"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\" pretty-print=\"false\" print-details=\"true\" zone-id=\"UTC\"/></formatter><formatter name=\"PATTERN\">" +- include: start.yml tags: - start - -- name: Enable event logging - remote_user: jboss - lineinfile: - path: /opt/jboss/keycloak/standalone/configuration/standalone.xml - regexp: '.*<spi name="eventsStore">.*' - line: '<spi name="eventsListener"><provider name="jboss-logging" enabled="true"><properties><property name="success-level" value="INFO"/><property name="error-level" value="WARN"/></properties></provider></spi><spi name="eventsStore">' - tags: - - start - -- name: Specify logging format - remote_user: jboss - lineinfile: - path: /opt/jboss/keycloak/standalone/configuration/standalone.xml - regexp: ".*<named-formatter name=.*" - line: '<named-formatter name="JSON"/>' - tags: - - start - -- name: Configure Keycloak start script - remote_user: jboss - template: - src: "{{item}}.j2" - dest: "/opt/jboss/tools/{{item}}" - mode: 0750 - with_items: - - startkeycloak.sh - - initkeycloakrealm.sh - tags: - - start - -- name: Start Keycloak IdP - remote_user: root - command: "supervisorctl start keycloak" - tags: - - start - -- name: Wait for Keycloak - remote_user: jboss - wait_for: - host: "{{groups['keycloakcontainers'][0]}}" - port: 8443 - state: started - delay: 5 - tags: - - start - -- name: Initialize Keycloak realm - remote_user: jboss - command: /opt/jboss/tools/initkeycloakrealm.sh - tags: - - start - -- name: Copy secrets from Keycloak - remote_user: jboss - fetch: - src: "{{ item.remote }}" - dest: "{{ item.local }}" - flat: yes - with_items: - - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/nifisecret" - local: "roles/nifi/files/nifisecret" - - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/kibanasecret" - local: "roles/odfekibana/files/kibanasecret" - - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/mispsecret" - local: "roles/misp/files/mispsecret" - tags: - - start - -- name: Set Autostart for supervisord's services - shell: "sed -i 's/autostart=false/autostart=true/g' /etc/supervisord.conf" - tags: - - start - -- name: Stop Keycloak - remote_user: root - command: "supervisorctl stop keycloak" - tags: - - stop +- include: stop.yml + tags: + - stop +- include: update-config.yml + tags: + - update-config +- include: restart.yml + tags: + - restart diff --git a/roles/keycloak/tasks/restart.yml b/roles/keycloak/tasks/restart.yml new file mode 100644 index 0000000000000000000000000000000000000000..4ea5519d0060b1f287c908e54b021b53c104e588 --- /dev/null +++ b/roles/keycloak/tasks/restart.yml @@ -0,0 +1,13 @@ +--- + +- name: Restart Keycloak + remote_user: root + command: "supervisorctl restart keycloak" + +- name: Wait for Keycloak + remote_user: jboss + wait_for: + host: "{{groups['keycloakcontainers'][0]}}" + port: 8443 + state: started + delay: 5 diff --git a/roles/keycloak/tasks/start.yml b/roles/keycloak/tasks/start.yml new file mode 100644 index 0000000000000000000000000000000000000000..e691b26e100217bfdd9f02390fc57767356b4364 --- /dev/null +++ b/roles/keycloak/tasks/start.yml @@ -0,0 +1,95 @@ +--- + +- name: Copy certificates in keycloak x509 conf dir + remote_user: jboss + copy: + src: "{{ item.local }}" + dest: "{{ item.remote }}" + mode: "{{ item.mode}}" + with_items: + - local: "files/{{ inventory_hostname }}.crt" + remote: /etc/x509/https/tls.crt + mode: '0644' + - local: "files/{{ inventory_hostname }}.key" + remote: /etc/x509/https/tls.key + mode: '0600' + - local: "files/{{ ca_cn }}.crt" + remote: /etc/x509/ca/ca.crt + mode: '0644' + - local: "files/cacerts.jks" + remote: /opt/jboss/keycloak/cacerts.jks + mode: '0644' + +- name: Generate Keycloak secure config + remote_user: jboss + command: "/opt/jboss/tools/x509.sh" + environment: + X509_CA_BUNDLE: "/etc/x509/ca/ca.crt" + +- name: Set admin password + remote_user: jboss + command: /opt/jboss/keycloak/bin/add-user-keycloak.sh --user "admin" --password "{{keycloak_adminpass}}" + +- name: Configure logging format + remote_user: jboss + lineinfile: #TODO: Change to community.general.xml + path: /opt/jboss/keycloak/standalone/configuration/standalone.xml + regexp: '.*<formatter name="PATTERN">.*' + line: "<formatter name=\"JSON\"><json-formatter date-format=\"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\" pretty-print=\"false\" print-details=\"true\" zone-id=\"UTC\"/></formatter><formatter name=\"PATTERN\">" + +- name: Enable event logging + remote_user: jboss + lineinfile: + path: /opt/jboss/keycloak/standalone/configuration/standalone.xml + regexp: '.*<spi name="eventsStore">.*' + line: '<spi name="eventsListener"><provider name="jboss-logging" enabled="true"><properties><property name="success-level" value="INFO"/><property name="error-level" value="WARN"/></properties></provider></spi><spi name="eventsStore">' + +- name: Specify logging format + remote_user: jboss + lineinfile: + path: /opt/jboss/keycloak/standalone/configuration/standalone.xml + regexp: ".*<named-formatter name=.*" + line: '<named-formatter name="JSON"/>' + +- name: Configure Keycloak start script + remote_user: jboss + template: + src: "{{item}}.j2" + dest: "/opt/jboss/tools/{{item}}" + mode: 0750 + with_items: + - startkeycloak.sh + - initkeycloakrealm.sh + +- name: Start Keycloak IdP + remote_user: root + command: "supervisorctl start keycloak" + +- name: Wait for Keycloak + remote_user: jboss + wait_for: + host: "{{groups['keycloakcontainers'][0]}}" + port: 8443 + state: started + delay: 5 + +- name: Initialize Keycloak realm + remote_user: jboss + command: /opt/jboss/tools/initkeycloakrealm.sh + +- name: Copy secrets from Keycloak + remote_user: jboss + fetch: + src: "{{ item.remote }}" + dest: "{{ item.local }}" + flat: yes + with_items: + - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/nifisecret" + local: "roles/nifi/files/nifisecret" + - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/kibanasecret" + local: "roles/odfekibana/files/kibanasecret" + - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/mispsecret" + local: "roles/misp/files/mispsecret" + +- name: Set Autostart for supervisord's services + shell: "sed -i 's/autostart=false/autostart=true/g' /etc/supervisord.conf" diff --git a/roles/keycloak/tasks/stop.yml b/roles/keycloak/tasks/stop.yml new file mode 100644 index 0000000000000000000000000000000000000000..0f9c490c2263352235441f32f3674282d06e7fe0 --- /dev/null +++ b/roles/keycloak/tasks/stop.yml @@ -0,0 +1,5 @@ +--- + +- name: Stop Keycloak + remote_user: root + command: "supervisorctl stop keycloak" diff --git a/roles/keycloak/tasks/update-config.yml b/roles/keycloak/tasks/update-config.yml new file mode 100644 index 0000000000000000000000000000000000000000..1178e33a8714944ccd9f172c2890f0e892f04de9 --- /dev/null +++ b/roles/keycloak/tasks/update-config.yml @@ -0,0 +1,32 @@ +--- + +- name: Configure Keycloak start script + remote_user: jboss + template: + src: "{{item}}.j2" + dest: "/opt/jboss/tools/{{item}}" + mode: 0750 + with_items: + - startkeycloak.sh + - initkeycloakrealm.sh + +- name: Copy keycloak-tools + remote_user: jboss + synchronize: + src: roles/build/templates/keycloak/keycloak-tools/ + dest: /opt/jboss/tools/ + +- name: Copy secrets from Keycloak + remote_user: jboss + fetch: + src: "{{ item.remote }}" + dest: "{{ item.local }}" + flat: yes + with_items: + - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/nifisecret" + local: "roles/nifi/files/nifisecret" + - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/kibanasecret" + local: "roles/odfekibana/files/kibanasecret" + - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/mispsecret" + local: "roles/misp/files/mispsecret" + diff --git a/soctools.yml b/soctools.yml index d5e037443b84ef3f188e038af1490a1ec8d36abe..b798d970dce03e6edda46f5a489dfcf466eb1e23 100644 --- a/soctools.yml +++ b/soctools.yml @@ -8,3 +8,10 @@ import_playbook: stopsoctools.yml when: "'stop' in ansible_run_tags" +- name: Update soctools cluster configs + import_playbook: update-config-soctools.yml + when: "'update-config' in ansible_run_tags" + +- name: restart soctools cluster servics + import_playbook: restart-soctools.yml + when: "'restart' in ansible_run_tags" diff --git a/update-config-soctools.yml b/update-config-soctools.yml new file mode 100644 index 0000000000000000000000000000000000000000..138f664fee2eb1a9d882a7ebf0b8f9e390bb1e72 --- /dev/null +++ b/update-config-soctools.yml @@ -0,0 +1,52 @@ +--- + +- name: Update Configs for haproxy + hosts: haproxy + roles: + - haproxy + +- name: Update Configs for mysql + hosts: mysql + roles: + - mysql + +- name: Update Configs for Cassandra + hosts: cassandra + roles: + - cassandra + +- name: Update Configs for Keycloak + hosts: keycloakcontainers + roles: + - keycloak + +- name: Update Configs for NiFi + hosts: nificontainers + roles: + - nifi + +- name: Update Configs for OpenDistro for Elasticsearch + hosts: odfeescontainers + roles: + - odfees + +- name: Update Configs for OpenDistro Kibana for Elasticsearch + hosts: odfekibanacontainers + roles: + - odfekibana + +- name: Update Configs for MISP + hosts: mispcontainers + roles: + - misp + +- name: Update Configs for TheHive + hosts: thehive + roles: + - thehive + +- name: Update Configs for Cortex + hosts: cortex + roles: + - cortex +