diff options
Diffstat (limited to 'playbooks/adhoc')
| -rw-r--r-- | playbooks/adhoc/create_pv/create_pv.yaml | 142 | ||||
| -rw-r--r-- | playbooks/adhoc/create_pv/pv-template.j2 | 16 | ||||
| -rw-r--r-- | playbooks/adhoc/zabbix_setup/clean_zabbix.yml | 51 | ||||
| -rw-r--r-- | playbooks/adhoc/zabbix_setup/create_app.yml | 34 | ||||
| -rw-r--r-- | playbooks/adhoc/zabbix_setup/create_application.yml | 18 | ||||
| -rw-r--r-- | playbooks/adhoc/zabbix_setup/create_template.yml | 57 | ||||
| l--------- | playbooks/adhoc/zabbix_setup/filter_plugins | 1 | ||||
| l--------- | playbooks/adhoc/zabbix_setup/roles | 1 | ||||
| -rw-r--r-- | playbooks/adhoc/zabbix_setup/setup_zabbix.yml | 38 | ||||
| -rw-r--r-- | playbooks/adhoc/zabbix_setup/vars/template_heartbeat.yml | 11 | ||||
| -rw-r--r-- | playbooks/adhoc/zabbix_setup/vars/template_host.yml | 27 | ||||
| -rw-r--r-- | playbooks/adhoc/zabbix_setup/vars/template_master.yml | 27 | ||||
| -rw-r--r-- | playbooks/adhoc/zabbix_setup/vars/template_node.yml | 27 | ||||
| -rw-r--r-- | playbooks/adhoc/zabbix_setup/vars/template_os_linux.yml | 120 | ||||
| -rw-r--r-- | playbooks/adhoc/zabbix_setup/vars/template_router.yml | 27 | 
15 files changed, 597 insertions, 0 deletions
| diff --git a/playbooks/adhoc/create_pv/create_pv.yaml b/playbooks/adhoc/create_pv/create_pv.yaml new file mode 100644 index 000000000..684a0ca72 --- /dev/null +++ b/playbooks/adhoc/create_pv/create_pv.yaml @@ -0,0 +1,142 @@ +--- +#example run:  +# ansible-playbook -e "cli_volume_size=1" \ +#                  -e "cli_device_name=/dev/xvdf" \ +#                  -e "cli_hosttype=master" \ +#                  -e "cli_environment=ops" \ +#                  create_pv.yaml +# FIXME: we need to change "environment" to "clusterid" as that's what it really is now. +# +- name: Create a volume and attach it to master +  hosts: localhost +  gather_facts: no +  vars: +    cli_volume_type: gp2 +    cli_volume_iops: '' +    oo_name: "{{ groups['tag_host-type_' ~ cli_hosttype] | +                 intersect(groups['tag_environment_' ~ cli_environment]) | +                 first }}" +  pre_tasks: +  - fail: +      msg: "This playbook requires {{item}} to be set." +    when: "{{ item }} is not defined or {{ item }} == ''" +    with_items: +    - cli_volume_size +    - cli_device_name +    - cli_hosttype +    - cli_environment + +  - name: set oo_name fact +    set_fact: +      oo_name: "{{ oo_name }}" + + +  - name: Select a single master to run this on +    add_host: +      hostname: "{{ oo_name }}" +      ansible_ssh_host: "{{ hostvars[oo_name].ec2_public_dns_name }}" +      groups: oo_master + +  - name: Create a volume and attach it +    ec2_vol: +      state: present +      instance: "{{ hostvars[oo_name]['ec2_id'] }}" +      region: "{{ hostvars[oo_name]['ec2_region'] }}" +      volume_size: "{{ cli_volume_size }}" +      volume_type: "{{ cli_volume_type }}" +      device_name: "{{ cli_device_name }}" +      iops: "{{ cli_volume_iops }}" +    register: vol + +  - debug: var=vol + +- name: Configure the drive +  gather_facts: no +  hosts: oo_master +  user: root +  connection: ssh +  vars: +    pv_tmpdir: /tmp/persistentvolumes + +  post_tasks: +  - name: Setting facts for template +    set_fact: +      pv_name: "pv-{{cli_volume_size}}-{{ hostvars[hostvars.localhost.oo_name]['ec2_tag_Name'] }}-{{hostvars.localhost.vol.volume_id }}" +      vol_az: "{{ hostvars[hostvars.localhost.oo_name]['ec2_placement'] }}" +      vol_id: "{{ hostvars.localhost.vol.volume_id }}" +      vol_size: "{{ cli_volume_size }}" +      pv_mntdir: "{{ pv_tmpdir }}/mnt-{{ 1000 | random }}" + +  - set_fact: +      pv_template: "{{ pv_tmpdir }}/{{ pv_name }}.yaml" + +  - name: "Mkdir {{ pv_tmpdir }}" +    file: +      state: directory +      path: "{{ pv_tmpdir }}" +      mode: '0750' + +  - name: "Mkdir {{ pv_mntdir }}" +    file: +      state: directory +      path: "{{ pv_mntdir }}" +      mode: '0750' + +  - name: Create pv file from template +    template: +      src: ./pv-template.j2 +      dest: "{{ pv_template }}" +      owner: root +      mode: '0640' + +  - name: mkfs +    filesystem: +      dev: "{{ cli_device_name }}" +      fstype: ext4 +     +  - name: Mount the dev +    mount: +      name: "{{ pv_mntdir }}" +      src: "{{ cli_device_name }}" +      fstype: ext4 +      state: mounted + +  - name: chgrp g+rwXs +    file:  +      path: "{{ pv_mntdir }}" +      mode: 'g+rwXs' +      recurse: yes +      seuser: system_u +      serole: object_r +      setype: svirt_sandbox_file_t +      selevel: s0 + +  - name: umount +    mount: +      name: "{{ pv_mntdir }}" +      src: "{{ cli_device_name }}" +      state: unmounted +      fstype: ext4 + +  - name: detach drive +    delegate_to: localhost +    ec2_vol: +      region: "{{ hostvars[hostvars.localhost.oo_name].ec2_region }}" +      id: "{{ hostvars.localhost.vol.volume_id }}" +      instance: None + +  - name: "Remove {{ pv_mntdir }}" +    file: +      state: absent +      path: "{{ pv_mntdir }}" + +  # We have to use the shell module because we can't set env vars with the command module. +  - name: "Place PV into oc" +    shell: "KUBECONFIG=/etc/openshift/master/admin.kubeconfig oc create -f {{ pv_template | quote }}" +    register: oc_output + +  - debug: var=oc_output + +  - fail:  +      msg: "Failed to add {{ pv_template }} to master." +    when: oc_output.rc != 0 diff --git a/playbooks/adhoc/create_pv/pv-template.j2 b/playbooks/adhoc/create_pv/pv-template.j2 new file mode 100644 index 000000000..5654ef6c4 --- /dev/null +++ b/playbooks/adhoc/create_pv/pv-template.j2 @@ -0,0 +1,16 @@ +--- +apiVersion: v1 +kind: PersistentVolume +metadata: +  name: {{ pv_name }} +  labels: +    type: ebs +spec: +  capacity: +    storage: {{ vol_size }}Gi +  accessModes: +    - ReadWriteOnce +  persistentVolumeReclaimPolicy: Recycle +  awsElasticBlockStore: +    volumeID: aws://{{ vol_az }}/{{ vol_id }} +    fsType: ext4 diff --git a/playbooks/adhoc/zabbix_setup/clean_zabbix.yml b/playbooks/adhoc/zabbix_setup/clean_zabbix.yml new file mode 100644 index 000000000..a31cbef65 --- /dev/null +++ b/playbooks/adhoc/zabbix_setup/clean_zabbix.yml @@ -0,0 +1,51 @@ +--- +- hosts: localhost +  gather_facts: no +  vars: +    g_zserver: http://localhost/zabbix/api_jsonrpc.php +    g_zuser: Admin +    g_zpassword: zabbix +  roles: +  - ../../../roles/os_zabbix +  post_tasks: + +  - zbx_template: +      server: "{{ g_zserver }}" +      user: "{{ g_zuser }}" +      password: "{{ g_zpassword }}" +      state: list +      name: 'Template Heartbeat' +    register: templ_heartbeat + +  - zbx_template: +      server: "{{ g_zserver }}" +      user: "{{ g_zuser }}" +      password: "{{ g_zpassword }}" +      state: list +      name: 'Template App Zabbix Server' +    register: templ_zabbix_server + +  - zbx_template: +      server: "{{ g_zserver }}" +      user: "{{ g_zuser }}" +      password: "{{ g_zpassword }}" +      state: list +      name: 'Template App Zabbix Agent' +    register: templ_zabbix_agent + +  - zbx_template: +      server: "{{ g_zserver }}" +      user: "{{ g_zuser }}" +      password: "{{ g_zpassword }}" +      state: list +    register: templates + +  - debug: var=templ_heartbeat.results + +  - zbx_template: +      server: "{{ g_zserver }}" +      user: "{{ g_zuser }}" +      password: "{{ g_zpassword }}" +      state: absent +    with_items: "{{ templates.results | difference(templ_zabbix_agent.results) | difference(templ_zabbix_server.results) | oo_collect('host') }}" +    when:  templ_heartbeat.results | length == 0 diff --git a/playbooks/adhoc/zabbix_setup/create_app.yml b/playbooks/adhoc/zabbix_setup/create_app.yml new file mode 100644 index 000000000..3a08b2301 --- /dev/null +++ b/playbooks/adhoc/zabbix_setup/create_app.yml @@ -0,0 +1,34 @@ +--- +- hosts: localhost +  gather_facts: no +  vars_files: +  - vars/template_heartbeat.yml +  - vars/template_os_linux.yml +  vars: +    g_zserver: http://oso-rhel7-zabbix-web.kwoodsontest2.opstest.online.openshift.com/zabbix/api_jsonrpc.php +    g_zuser: Admin +    g_zpassword: zabbix +  roles: +  - ../roles/os_zabbix +  post_tasks: +  - zbxapi: +      server: "{{ g_zserver }}" +      user: "{{ g_zuser }}" +      password: "{{ g_zpassword }}" +      zbx_class: Template +      state: list +      params: +        output: extend +    register: templates + +  - debug: var=templates + +  - name: Create app +    include: create_application.yml +    vars: +      ctp_template: "{{ g_template_heartbeat }}" +      ctp_zserver: "{{ g_zserver }}" +      ctp_zuser: "{{ g_zuser }}" +      ctp_zpassword: "{{ g_zpassword }}" + + diff --git a/playbooks/adhoc/zabbix_setup/create_application.yml b/playbooks/adhoc/zabbix_setup/create_application.yml new file mode 100644 index 000000000..aa6c40ed8 --- /dev/null +++ b/playbooks/adhoc/zabbix_setup/create_application.yml @@ -0,0 +1,18 @@ +--- +- debug: var=ctp_template + +- name: Create Application +  zbxapi: +    server: "{{ ctp_zserver }}" +    user: "{{ ctp_zuser }}" +    password: "{{ ctp_zpassword }}" +    zbx_class: Application +    state: present +    params: +      name: "{{ ctp_template.application['name'] }}" +      hostid: 10085 +      search: +        name: "{{ ctp_template.application['name'] }}" +  register: ctp_created_application + +- debug: var=ctp_created_application diff --git a/playbooks/adhoc/zabbix_setup/create_template.yml b/playbooks/adhoc/zabbix_setup/create_template.yml new file mode 100644 index 000000000..60fb27666 --- /dev/null +++ b/playbooks/adhoc/zabbix_setup/create_template.yml @@ -0,0 +1,57 @@ +--- +- debug: var=ctp_template + +- name: Create Template +  zbx_template: +    server: "{{ ctp_zserver }}" +    user: "{{ ctp_zuser }}" +    password: "{{ ctp_zpassword }}" +    name: "{{ ctp_template.name }}" +  register: ctp_created_template + +- debug: var=ctp_created_template + +#- name: Create Application +#  zbxapi: +#    server: "{{ ctp_zserver }}" +#    user: "{{ ctp_zuser }}" +#    password: "{{ ctp_zpassword }}" +#    zbx_class: Application +#    state: present +#    params: +#      name: "{{ ctp_template.application.name}}" +#      hostid: "{{ ctp_created_template.results[0].templateid }}" +#      search: +#        name: "{{ ctp_template.application.name}}" +#  register: ctp_created_application + +#- debug: var=ctp_created_application + +- name: Create Items +  zbx_item: +    server: "{{ ctp_zserver }}" +    user: "{{ ctp_zuser }}" +    password: "{{ ctp_zpassword }}" +    name: "{{ item.name }}" +    key: "{{ item.key }}" +    value_type: "{{ item.value_type | default('int') }}" +    template_name: "{{ ctp_template.name }}" +  with_items: ctp_template.zitems +  register: ctp_created_items + +#- debug: var=ctp_created_items + +- name: Create Triggers +  zbx_trigger: +    server: "{{ ctp_zserver }}" +    user: "{{ ctp_zuser }}" +    password: "{{ ctp_zpassword }}" +    description: "{{ item.description }}" +    expression: "{{ item.expression }}" +    priority: "{{ item.priority }}" +  with_items: ctp_template.ztriggers +  when: ctp_template.ztriggers is defined + +#- debug: var=ctp_created_triggers + + diff --git a/playbooks/adhoc/zabbix_setup/filter_plugins b/playbooks/adhoc/zabbix_setup/filter_plugins new file mode 120000 index 000000000..99a95e4ca --- /dev/null +++ b/playbooks/adhoc/zabbix_setup/filter_plugins @@ -0,0 +1 @@ +../../../filter_plugins
\ No newline at end of file diff --git a/playbooks/adhoc/zabbix_setup/roles b/playbooks/adhoc/zabbix_setup/roles new file mode 120000 index 000000000..e2b799b9d --- /dev/null +++ b/playbooks/adhoc/zabbix_setup/roles @@ -0,0 +1 @@ +../../../roles/
\ No newline at end of file diff --git a/playbooks/adhoc/zabbix_setup/setup_zabbix.yml b/playbooks/adhoc/zabbix_setup/setup_zabbix.yml new file mode 100644 index 000000000..1729194b5 --- /dev/null +++ b/playbooks/adhoc/zabbix_setup/setup_zabbix.yml @@ -0,0 +1,38 @@ +--- +- hosts: localhost +  gather_facts: no +  vars_files: +  - vars/template_heartbeat.yml +  - vars/template_os_linux.yml +  vars: +    g_zserver: http://localhost/zabbix/api_jsonrpc.php +    g_zuser: Admin +    g_zpassword: zabbix +  roles: +  - ../../../roles/os_zabbix +  post_tasks: +  - zbx_template: +      server: "{{ g_zserver }}" +      user: "{{ g_zuser }}" +      password: "{{ g_zpassword }}" +      state: list +    register: templates + +  - debug: var=templates + +  - name: Include Template +    include: create_template.yml +    vars: +      ctp_template: "{{ g_template_heartbeat }}" +      ctp_zserver: "{{ g_zserver }}" +      ctp_zuser: "{{ g_zuser }}" +      ctp_zpassword: "{{ g_zpassword }}" + +  - name: Include Template +    include: create_template.yml +    vars: +      ctp_template: "{{ g_template_os_linux }}" +      ctp_zserver: "{{ g_zserver }}" +      ctp_zuser: "{{ g_zuser }}" +      ctp_zpassword: "{{ g_zpassword }}" + diff --git a/playbooks/adhoc/zabbix_setup/vars/template_heartbeat.yml b/playbooks/adhoc/zabbix_setup/vars/template_heartbeat.yml new file mode 100644 index 000000000..22cc75554 --- /dev/null +++ b/playbooks/adhoc/zabbix_setup/vars/template_heartbeat.yml @@ -0,0 +1,11 @@ +--- +g_template_heartbeat: +  name: Template Heartbeat +  zitems: +  - name: Heartbeat Ping +    hostid: +    key: heartbeat.ping +  ztriggers: +  - description: 'Heartbeat.ping has failed on {HOST.NAME}' +    expression: '{Template Heartbeat:heartbeat.ping.last()}<>0' +    priority: avg diff --git a/playbooks/adhoc/zabbix_setup/vars/template_host.yml b/playbooks/adhoc/zabbix_setup/vars/template_host.yml new file mode 100644 index 000000000..e7cc667cb --- /dev/null +++ b/playbooks/adhoc/zabbix_setup/vars/template_host.yml @@ -0,0 +1,27 @@ +--- +g_template_host: +  params: +    name: Template Host +    host: Template Host +    groups: +    - groupid: 1 # FIXME (not real) +    output: extend +    search: +      name: Template Host +  zitems: +  - name: Host Ping +    hostid:  +    key_: host.ping +    type: 2 +    value_type: 0 +    output: extend +    search: +      key_: host.ping +  ztriggers: +  - description: 'Host ping has failed on {HOST.NAME}' +    expression: '{Template Host:host.ping.last()}<>0' +    priority: 3 +    searchWildcardsEnabled: True +    search: +      description: 'Host ping has failed on*' +    expandExpression: True diff --git a/playbooks/adhoc/zabbix_setup/vars/template_master.yml b/playbooks/adhoc/zabbix_setup/vars/template_master.yml new file mode 100644 index 000000000..5f9b41a4f --- /dev/null +++ b/playbooks/adhoc/zabbix_setup/vars/template_master.yml @@ -0,0 +1,27 @@ +--- +g_template_master: +  params: +    name: Template Master +    host: Template Master +    groups: +    - groupid: 1 # FIXME (not real) +    output: extend +    search: +      name: Template Master +  zitems: +  - name: Master Etcd Ping +    hostid:  +    key_: master.etcd.ping +    type: 2 +    value_type: 0 +    output: extend +    search: +      key_: master.etcd.ping +  ztriggers: +  - description: 'Master Etcd ping has failed on {HOST.NAME}' +    expression: '{Template Master:master.etcd.ping.last()}<>0' +    priority: 3 +    searchWildcardsEnabled: True +    search: +      description: 'Master Etcd ping has failed on*' +    expandExpression: True diff --git a/playbooks/adhoc/zabbix_setup/vars/template_node.yml b/playbooks/adhoc/zabbix_setup/vars/template_node.yml new file mode 100644 index 000000000..98c343a24 --- /dev/null +++ b/playbooks/adhoc/zabbix_setup/vars/template_node.yml @@ -0,0 +1,27 @@ +--- +g_template_node: +  params: +    name: Template Node +    host: Template Node +    groups: +    - groupid: 1 # FIXME (not real) +    output: extend +    search: +      name: Template Node +  zitems: +  - name: Kubelet Ping +    hostid:  +    key_: kubelet.ping +    type: 2 +    value_type: 0 +    output: extend +    search: +      key_: kubelet.ping +  ztriggers: +  - description: 'Kubelet ping has failed on {HOST.NAME}' +    expression: '{Template Node:kubelet.ping.last()}<>0' +    priority: 3 +    searchWildcardsEnabled: True +    search: +      description: 'Kubelet ping has failed on*' +    expandExpression: True diff --git a/playbooks/adhoc/zabbix_setup/vars/template_os_linux.yml b/playbooks/adhoc/zabbix_setup/vars/template_os_linux.yml new file mode 100644 index 000000000..6fab08879 --- /dev/null +++ b/playbooks/adhoc/zabbix_setup/vars/template_os_linux.yml @@ -0,0 +1,120 @@ +--- +g_template_os_linux: +  name: Template OS Linux +  zitems: +  - key: kernel.uname.sysname +    name: kernel.uname.sysname +    value_type: string + +  - key: kernel.all.cpu.wait.total +    name: kernel.all.cpu.wait.total +    value_type: int + +  - key: kernel.all.cpu.irq.hard +    name: kernel.all.cpu.irq.hard +    value_type: int + +  - key: kernel.all.cpu.idle +    name: kernel.all.cpu.idle +    value_type: int + +  - key: kernel.uname.distro +    name: kernel.uname.distro +    value_type: string + +  - key: kernel.uname.nodename +    name: kernel.uname.nodename +    value_type: string + +  - key: kernel.all.cpu.irq.soft +    name: kernel.all.cpu.irq.soft +    value_type: int + +  - key: kernel.all.load.15_minute +    name: kernel.all.load.15_minute +    value_type: float + +  - key: kernel.all.cpu.sys +    name: kernel.all.cpu.sys +    value_type: int + +  - key: kernel.all.load.5_minute +    name: kernel.all.load.5_minute +    value_type: float + +  - key: mem.freemem +    name: mem.freemem +    value_type: int + +  - key: kernel.all.cpu.nice +    name: kernel.all.cpu.nice +    value_type: int + +  - key: mem.util.bufmem +    name: mem.util.bufmem +    value_type: int + +  - key: swap.used +    name: swap.used +    value_type: int + +  - key: kernel.all.load.1_minute +    name: kernel.all.load.1_minute +    value_type: float + +  - key: kernel.uname.version +    name: kernel.uname.version +    value_type: string + +  - key: swap.length +    name: swap.length +    value_type: int + +  - key: mem.physmem +    name: mem.physmem +    value_type: int + +  - key: kernel.all.uptime +    name: kernel.all.uptime +    value_type: int + +  - key: swap.free +    name: swap.free +    value_type: int + +  - key: mem.util.used +    name: mem.util.used +    value_type: int + +  - key: kernel.all.cpu.user +    name: kernel.all.cpu.user +    value_type: int + +  - key: kernel.uname.machine +    name: kernel.uname.machine +    value_type: string + +  - key: hinv.ncpu +    name: hinv.ncpu +    value_type: int + +  - key: mem.util.cached +    name: mem.util.cached +    value_type: int + +  - key: kernel.all.cpu.steal +    name: kernel.all.cpu.steal +    value_type: int + + +  - key: kernel.all.pswitch +    name: kernel.all.pswitch +    value_type: int + +  - key: kernel.uname.release +    name: kernel.uname.release +    value_type: string + +  - key: proc.nprocs +    name: proc.nprocs +    value_type: int diff --git a/playbooks/adhoc/zabbix_setup/vars/template_router.yml b/playbooks/adhoc/zabbix_setup/vars/template_router.yml new file mode 100644 index 000000000..4dae7da1e --- /dev/null +++ b/playbooks/adhoc/zabbix_setup/vars/template_router.yml @@ -0,0 +1,27 @@ +--- +g_template_router: +  params: +    name: Template Router +    host: Template Router +    groups: +    - groupid: 1 # FIXME (not real) +    output: extend +    search: +      name: Template Router +  zitems: +  - name: Router Backends down +    hostid:  +    key_: router.backends.down +    type: 2 +    value_type: 0 +    output: extend +    search: +      key_: router.backends.down +  ztriggers: +  - description: 'Number of router backends down on {HOST.NAME}' +    expression: '{Template Router:router.backends.down.last()}<>0' +    priority: 3 +    searchWildcardsEnabled: True +    search: +      description: 'Number of router backends down on {HOST.NAME}' +    expandExpression: True | 
