Browse Source

Created role to deploy ops host monitoring

oso_host_monitoring to config/run host monitoring container(s)
Joel Diaz 9 years ago
parent
commit
ea3c029d5d

+ 50 - 0
roles/oso_host_monitoring/README.md

@@ -0,0 +1,50 @@
+Role Name
+=========
+
+Applies local host monitoring container(s).
+
+Requirements
+------------
+
+None.
+
+Role Variables
+--------------
+
+osohm_zagg_web_url: where to contact monitoring service
+osohm_host_monitoring: name of host monitoring container
+osohm_zagg_client: name of container with zabbix client
+osohm_docker_registry_url: docker repository containing above containers
+osohm_default_zagg_server_user: login info to zabbix server
+osohm_default_zagg_password: password to zabbix server
+
+Dependencies
+------------
+
+None.
+
+Example Playbook
+----------------
+
+Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
+
+    - hosts: servers
+      roles:
+      - oso_host_monitoring
+      vars:
+        osohm_zagg_web_url: "https://..."
+        osohm_host_monitoring: "oso-rhel7-host-monitoring"
+        osohm_zagg_client: "oso-rhel7-zagg-client"
+        osohm_docker_registry_url: "docker-registry.example.com/mon/"
+        osohm_default_zagg_server_user: "zagg-client"
+        osohm_default_zagg_password: "secret"
+
+License
+-------
+
+ASL 2.0
+
+Author Information
+------------------
+
+OpenShift operations, Red Hat, Inc

+ 1 - 0
roles/oso_host_monitoring/defaults/main.yml

@@ -0,0 +1 @@
+---

+ 12 - 0
roles/oso_host_monitoring/handlers/main.yml

@@ -0,0 +1,12 @@
+---
+- name: "Restart the {{ osohm_host_monitoring }} service"
+  service:
+    name: "{{ osohm_host_monitoring }}"
+    state: restarted
+    enabled: yes
+
+- name: "Restart the {{ osohm_zagg_client }} service"
+  service:
+    name: "{{ osohm_zagg_client }}"
+    state: restarted
+    enabled: yes

+ 8 - 0
roles/oso_host_monitoring/meta/main.yml

@@ -0,0 +1,8 @@
+---
+galaxy_info:
+  author: OpenShift
+  description: apply monitoring container(s).
+  company: Red Hat, Inc
+  license: ASL 2.0
+  min_ansible_version: 1.2
+dependencies: []

+ 65 - 0
roles/oso_host_monitoring/tasks/main.yml

@@ -0,0 +1,65 @@
+---
+- fail:
+    msg: "This playbook requires {{item}} to be set."
+  when: "{{ item }} is not defined or {{ item }} == ''"
+  with_items:
+  - osohm_zagg_web_url
+  - osohm_host_monitoring
+  - osohm_zagg_client
+  - osohm_docker_registry_url
+  - osohm_default_zagg_server_user
+  - osohm_default_zagg_server_password
+
+- name: create /etc/docker/ops
+  file:
+    path: /etc/docker/ops
+    state: directory
+    mode: 0770
+    group: root
+    owner: root
+
+- name: Copy dockercfg to /etc/docker/ops
+  template:
+      src: docker-registry.ops.cfg.j2
+      dest: /etc/docker/ops/.dockercfg
+      owner: root
+      group: root
+      mode: 0600
+
+- name: "Copy {{ osohm_host_monitoring }} systemd file"
+  template:
+    src: "{{ osohm_host_monitoring }}.service.j2"
+    dest: "/etc/systemd/system/{{ osohm_host_monitoring }}.service"
+    owner: root
+    group: root
+    mode: 0644
+  notify:
+  - "Restart the {{ osohm_host_monitoring }} service"
+  register: systemd_host_monitoring
+
+- name: "Copy {{ osohm_zagg_client }} systemd file"
+  template:
+    src: "{{ osohm_zagg_client }}.service.j2"
+    dest: "/etc/systemd/system/{{ osohm_zagg_client }}.service"
+    owner: root
+    group: root
+    mode: 0644
+  notify:
+  - "Restart the {{ osohm_zagg_client }} service"
+  register: zagg_systemd
+
+- name: reload systemd
+  command: /usr/bin/systemctl --system daemon-reload
+  when: systemd_host_monitoring | changed or zagg_systemd | changed
+
+- name: "Start the {{ osohm_host_monitoring }} service"
+  service:
+    name: "{{ osohm_host_monitoring }}"
+    state: started
+    enabled: yes
+
+- name: "Start the {{ osohm_zagg_client }} service"
+  service:
+    name: "{{ osohm_zagg_client }}"
+    state: started
+    enabled: yes

+ 1 - 0
roles/oso_host_monitoring/templates/docker-registry.ops.cfg.j2

@@ -0,0 +1 @@
+{"{{ osohm_docker_registry_ops_url }}":{"auth":"{{ osohm_docker_registry_ops_key }}","email":"{{ osohm_docker_registry_ops_email }}"}}

+ 43 - 0
roles/oso_host_monitoring/templates/oso-f22-host-monitoring.service.j2

@@ -0,0 +1,43 @@
+# This is a systemd file to run this docker container under systemd.
+# To make this work:
+#  * pull the image (probably from ops docker registry)
+#  * place this file in /etc/systemd/system without the .systemd extension
+#  * run the commands:
+#  systemctl daemon-reload
+#  systemctl enable pcp-docker
+#  systemctl start pcp-docker
+#
+#
+[Unit]
+Description=PCP Collector Contatainer
+Requires=docker.service
+After=docker.service
+
+
+[Service]
+Type=simple
+TimeoutStartSec=5m
+Environment=HOME=/etc/docker/ops
+#Slice=container-small.slice
+
+# systemd syntax '=-' ignore errors from return codes.
+ExecStartPre=-/usr/bin/docker kill "{{ osohm_host_monitoring }}"
+ExecStartPre=-/usr/bin/docker rm "{{ osohm_host_monitoring }}"
+ExecStartPre=-/usr/bin/docker pull "{{ osohm_docker_registry_url }}{{ osohm_host_monitoring }}"
+
+
+ExecStart=/usr/bin/docker run --rm  --name="{{ osohm_host_monitoring }}"      \
+          --privileged --net=host --pid=host --ipc=host                       \
+          -v /sys:/sys:ro  -v /etc/localtime:/etc/localtime:ro                \
+          -v /var/lib/docker:/var/lib/docker:ro -v /run:/run                  \
+          -v /var/log:/var/log                                                \
+          {{ osohm_docker_registry_url }}{{ osohm_host_monitoring }}
+
+ExecReload=-/usr/bin/docker stop "{{ osohm_host_monitoring }}"
+ExecReload=-/usr/bin/docker rm "{{ osohm_host_monitoring }}"
+ExecStop=-/usr/bin/docker stop "{{ osohm_host_monitoring }}"
+Restart=always
+RestartSec=30
+
+[Install]
+WantedBy=default.target

+ 62 - 0
roles/oso_host_monitoring/templates/oso-rhel7-zagg-client.service.j2

@@ -0,0 +1,62 @@
+# This is a systemd file to run this docker container under systemd.
+# To make this work:
+#  * pull the image (probably from ops docker registry)
+#  * place this file in /etc/systemd/system without the .systemd extension
+#  * run the commands:
+#  systemctl daemon-reload
+#  systemctl enable zagg-client-docker
+#  systemctl start zagg-client-docker
+#
+#
+[Unit]
+Description=Zagg Client Contatainer
+Requires=docker.service
+After=docker.service
+
+
+[Service]
+Type=simple
+TimeoutStartSec=5m
+Environment=HOME=/etc/docker/ops
+#Slice=container-small.slice
+
+# systemd syntax '=-' ignore errors from return codes.
+ExecStartPre=-/usr/bin/docker kill "{{ osohm_zagg_client }}"
+ExecStartPre=-/usr/bin/docker rm "{{ osohm_zagg_client }}"
+ExecStartPre=-/usr/bin/docker pull "{{ osohm_docker_registry_url }}{{ osohm_zagg_client }}"
+
+
+ExecStart=/usr/bin/docker run --name {{ osohm_zagg_client }}                                   \
+           --privileged                                                                      \
+           --pid=host                                                                        \
+           --net=host                                                                        \
+           -e ZAGG_URL={{ osohm_zagg_web_url }}                                                    \
+           -e ZAGG_USER={{ osohm_default_zagg_server_user }}                                     \
+           -e ZAGG_PASSWORD={{ osohm_default_zagg_server_password }}                             \
+           -e ZAGG_CLIENT_HOSTNAME={{ ec2_tag_Name }}                                        \
+           -e ZAGG_SSL_VERIFY={{ osohm_zagg_verify_ssl }}                                          \
+           -e OSO_CLUSTER_GROUP={{ cluster_group }}                                          \
+           -e OSO_CLUSTER_ID={{ oo_clusterid }}                                       \
+           -e OSO_HOST_TYPE={{ hostvars[inventory_hostname]['ec2_tag_host-type'] }}          \
+           -e OSO_SUB_HOST_TYPE={{ hostvars[inventory_hostname]['ec2_tag_sub-host-type'] }}  \
+           -v /etc/localtime:/etc/localtime                                                  \
+           -v /run/pcp:/run/pcp                                                              \
+           -v /var/run/docker.sock:/var/run/docker.sock                                      \
+           -v /var/run/openvswitch/db.sock:/var/run/openvswitch/db.sock                      \
+{% if hostvars[inventory_hostname]['ec2_tag_host-type'] == 'master' %}
+           -v /etc/openshift/master/admin.kubeconfig:/etc/openshift/master/admin.kubeconfig  \
+           -v /etc/openshift/master/master.etcd-client.crt:/etc/openshift/master/master.etcd-client.crt \
+           -v /etc/openshift/master/master.etcd-client.key:/etc/openshift/master/master.etcd-client.key \
+           -v /etc/openshift/master/master-config.yaml:/etc/openshift/master/master-config.yaml \
+{% endif %}
+           {{ osohm_docker_registry_url }}{{ osohm_zagg_client }}
+
+
+ExecReload=-/usr/bin/docker stop "{{ osohm_zagg_client }}"
+ExecReload=-/usr/bin/docker rm "{{ osohm_zagg_client }}"
+ExecStop=-/usr/bin/docker stop "{{ osohm_zagg_client }}"
+Restart=always
+RestartSec=30
+
+[Install]
+WantedBy=default.target

+ 1 - 0
roles/oso_host_monitoring/vars/main.yml

@@ -0,0 +1 @@
+---