aboutsummaryrefslogtreecommitdiffstats
path: root/docker/ansible
diff options
context:
space:
mode:
authorKamil Wiatrowski <kamilx.wiatrowski@intel.com>2018-06-07 05:13:01 +0100
committerKamil Wiatrowski <kamilx.wiatrowski@intel.com>2018-09-28 16:47:42 +0200
commit24c5124e304b8e2854d98284f6ee4715a75ee735 (patch)
tree420ff7e0158e3a8c68d3e2710469fbcb9c06c853 /docker/ansible
parentb52c942a4fbfc5023780d23954de953b817c6dc0 (diff)
WIP: Add role to auto install docker on hosts
Auto install docker with dependencies on hosts: apt install python apt install python-pip pip install docker-py apt install docker.io Set docker proxy using host proxy settings. Updated documentation. Change-Id: Ibec7e0a7e484d5a9a8656cd3598c3acc7c2e2184 Signed-off-by: Kamil Wiatrowski <kamilx.wiatrowski@intel.com>
Diffstat (limited to 'docker/ansible')
-rw-r--r--docker/ansible/collectd_service.yml20
-rw-r--r--docker/ansible/collectd_ves.yml20
-rw-r--r--docker/ansible/default.inv18
-rw-r--r--docker/ansible/roles/config_files/tasks/ipmi.yml32
-rw-r--r--docker/ansible/roles/config_files/tasks/main.yml6
-rw-r--r--docker/ansible/roles/config_files/tasks/mcelog.yml17
-rw-r--r--docker/ansible/roles/config_files/tasks/uuid.yml (renamed from docker/ansible/roles/config_files/tasks/types_db.yml)11
-rw-r--r--docker/ansible/roles/config_files/templates/default_read_plugins.conf.j21
-rw-r--r--docker/ansible/roles/config_files/templates/uuid.conf.j220
-rw-r--r--docker/ansible/roles/config_files/vars/main.yml5
-rw-r--r--docker/ansible/roles/install_docker/tasks/centos.yml45
-rw-r--r--docker/ansible/roles/install_docker/tasks/main.yml31
-rw-r--r--docker/ansible/roles/install_docker/tasks/proxy.yml55
-rw-r--r--docker/ansible/roles/install_docker/tasks/ubuntu.yml47
-rw-r--r--docker/ansible/roles/install_docker/vars/main.yml18
-rw-r--r--docker/ansible/roles/run_grafana/vars/main.yml4
16 files changed, 316 insertions, 34 deletions
diff --git a/docker/ansible/collectd_service.yml b/docker/ansible/collectd_service.yml
index bc484d31..965ec8ee 100644
--- a/docker/ansible/collectd_service.yml
+++ b/docker/ansible/collectd_service.yml
@@ -13,18 +13,28 @@
# limitations under the License.
---
+- hosts: collectd_hosts influxdb_hosts grafana_hosts
+ become: true
+ become_user: root
+ gather_facts: true
+ roles:
+ - install_docker
+
- hosts: collectd_hosts
- remote_user: root
+ become: true
+ become_user: root
roles:
- config_files
- run_collectd
- hosts: influxdb_hosts
- remote_user: root
+ become: true
+ become_user: root
roles:
- - run_influxdb
+ - run_influxdb
- hosts: grafana_hosts
- remote_user: root
+ become: true
+ become_user: root
roles:
- - run_grafana
+ - run_grafana
diff --git a/docker/ansible/collectd_ves.yml b/docker/ansible/collectd_ves.yml
index aa3f3ffa..f6140a5f 100644
--- a/docker/ansible/collectd_ves.yml
+++ b/docker/ansible/collectd_ves.yml
@@ -13,18 +13,28 @@
# limitations under the License.
---
+- hosts: collectd_hosts kafka_hosts ves_hosts
+ become: true
+ become_user: root
+ gather_facts: true
+ roles:
+ - install_docker
+
- hosts: collectd_hosts
- remote_user: root
+ become: true
+ become_user: root
roles:
- config_files
- run_collectd
- hosts: kafka_hosts
- remote_user: root
+ become: true
+ become_user: root
roles:
- - run_kafka
+ - run_kafka
- hosts: ves_hosts
- remote_user: root
+ become: true
+ become_user: root
roles:
- - run_ves
+ - run_ves
diff --git a/docker/ansible/default.inv b/docker/ansible/default.inv
new file mode 100644
index 00000000..b3b21c35
--- /dev/null
+++ b/docker/ansible/default.inv
@@ -0,0 +1,18 @@
+[collectd_hosts]
+localhost
+
+[collectd_hosts:vars]
+install_mcelog=true
+insert_ipmi_modules=true
+
+[influxdb_hosts]
+#localhost
+
+[grafana_hosts]
+#localhost
+
+[kafka_hosts]
+#localhost
+
+[ves_hosts]
+#localhost
diff --git a/docker/ansible/roles/config_files/tasks/ipmi.yml b/docker/ansible/roles/config_files/tasks/ipmi.yml
index 5ea62c47..c7359fbf 100644
--- a/docker/ansible/roles/config_files/tasks/ipmi.yml
+++ b/docker/ansible/roles/config_files/tasks/ipmi.yml
@@ -13,14 +13,6 @@
# limitations under the License.
---
-- name: Check if /dev/ipmi0 exists
- stat:
- path: /dev/ipmi0
- register: ipmi0_exists
- ignore_errors: True
- tags:
- - ipmi
-
- name: check ipmi_devintf is loaded
shell: "lsmod | cut -d' ' -f1 | grep ipmi_devintf"
register: ipmi_devintf
@@ -35,6 +27,30 @@
tags:
- ipmi
+- name: insert ipmi module ipmi_devintf
+ command: "modprobe ipmi_devintf"
+ register: ipmi_devintf
+ ignore_errors: true
+ when: ipmi_devintf|failed and insert_ipmi_modules|default(false)|bool
+ tags:
+ - ipmi
+
+- name: insert ipmi module ipmi_si
+ command: "modprobe ipmi_si"
+ register: ipmi_devsi
+ ignore_errors: true
+ when: ipmi_devsi|failed and insert_ipmi_modules|default(false)|bool
+ tags:
+ - ipmi
+
+- name: Check if /dev/ipmi0 exists
+ stat:
+ path: /dev/ipmi0
+ register: ipmi0_exists
+ ignore_errors: true
+ tags:
+ - ipmi
+
- name: enable ipmi plugin
template:
src: ipmi.conf.j2
diff --git a/docker/ansible/roles/config_files/tasks/main.yml b/docker/ansible/roles/config_files/tasks/main.yml
index 9a9cb300..4bf81f81 100644
--- a/docker/ansible/roles/config_files/tasks/main.yml
+++ b/docker/ansible/roles/config_files/tasks/main.yml
@@ -74,8 +74,8 @@
- name: enable ipmi plugin
include: ipmi.yml
+- name: enable uuid plugin
+ include: uuid.yml
+
- name: copy additional config files
include: additional_configs.yml
-
-- name: copy types.db to target
- include: types_db.yml
diff --git a/docker/ansible/roles/config_files/tasks/mcelog.yml b/docker/ansible/roles/config_files/tasks/mcelog.yml
index 9c935e3e..bab4b142 100644
--- a/docker/ansible/roles/config_files/tasks/mcelog.yml
+++ b/docker/ansible/roles/config_files/tasks/mcelog.yml
@@ -13,6 +13,23 @@
# limitations under the License.
---
+- name: install mcelog package
+ package:
+ name: mcelog
+ state: present
+ when: install_mcelog|default(false)|bool
+ tags:
+ - mcelogs
+
+- name: start mcelog daemon if not running
+ service:
+ name: mcelog
+ state: started
+ enabled: true
+ when: install_mcelog|default(false)|bool
+ tags:
+ - mcelogs
+
- name: check if mcelog running on host
shell: ps -ef | grep mcelog | grep -v grep > /dev/null
register: mcelog_running
diff --git a/docker/ansible/roles/config_files/tasks/types_db.yml b/docker/ansible/roles/config_files/tasks/uuid.yml
index 7603bdcf..25cfa128 100644
--- a/docker/ansible/roles/config_files/tasks/types_db.yml
+++ b/docker/ansible/roles/config_files/tasks/uuid.yml
@@ -13,10 +13,9 @@
# limitations under the License.
---
-- name: copy types.db to target system
- copy:
- src: types.db
- dest: "{{ typesdb_dir }}/types.db"
- ignore_errors: True
+- name: enable uuid plugin
+ template:
+ src: uuid.conf.j2
+ dest: "{{ config_file_dir }}/uuid.conf"
tags:
- - typesdb
+ - uuid
diff --git a/docker/ansible/roles/config_files/templates/default_read_plugins.conf.j2 b/docker/ansible/roles/config_files/templates/default_read_plugins.conf.j2
index fd941a76..48beb0be 100644
--- a/docker/ansible/roles/config_files/templates/default_read_plugins.conf.j2
+++ b/docker/ansible/roles/config_files/templates/default_read_plugins.conf.j2
@@ -30,6 +30,5 @@ Interval "{{ interval_value }}"
#LoadPlugin processes
#LoadPlugin swap
#LoadPlugin turbostat
-#LoadPlugin uuid
#LoadPlugin uptime
diff --git a/docker/ansible/roles/config_files/templates/uuid.conf.j2 b/docker/ansible/roles/config_files/templates/uuid.conf.j2
new file mode 100644
index 00000000..a9a84e71
--- /dev/null
+++ b/docker/ansible/roles/config_files/templates/uuid.conf.j2
@@ -0,0 +1,20 @@
+#Copyright 2018 OPNFV and Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LoadPlugin uuid
+
+#<Plugin uuid>
+# UUIDFile "/etc/uuid"
+#</Plugin>
+
diff --git a/docker/ansible/roles/config_files/vars/main.yml b/docker/ansible/roles/config_files/vars/main.yml
index 37120d86..bfa0fd68 100644
--- a/docker/ansible/roles/config_files/vars/main.yml
+++ b/docker/ansible/roles/config_files/vars/main.yml
@@ -23,7 +23,7 @@ interval_value: 10
#network plugin vars
network_port: 25826
-network_ip_addr: localhost
+network_ip_addr: "{{ (groups['influxdb_hosts']|default({}))[0] | default('localhost') }}"
#ovs event and stats plugin vars
ovs_event_interval: 1
@@ -54,6 +54,3 @@ write_per_sec: 50
#additional configuration files path
additional_configs_path: ""
-
-#directory to copy types.db file to
-typesdb_dir: "/opt/collectd/share/collectd/"
diff --git a/docker/ansible/roles/install_docker/tasks/centos.yml b/docker/ansible/roles/install_docker/tasks/centos.yml
new file mode 100644
index 00000000..b84d98f2
--- /dev/null
+++ b/docker/ansible/roles/install_docker/tasks/centos.yml
@@ -0,0 +1,45 @@
+#Copyright 2018 OPNFV and Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+---
+
+- name: install dependencies for docker
+ package:
+ name: "{{ packages }}"
+ state: present
+ vars:
+ packages:
+ - python
+ - yum-utils
+ - device-mapper-persistent-data
+ - lvm2
+
+- name: set up docker repository
+ command: "yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo"
+
+- name: install docker-py
+ package:
+ name: python-docker-py
+ state: present
+
+- name: install docker
+ package:
+ name: docker-ce
+ state: present
+
+- name: start docker daemon
+ systemd:
+ name: docker
+ daemon_reload: true
+ state: started
+ enabled: true
diff --git a/docker/ansible/roles/install_docker/tasks/main.yml b/docker/ansible/roles/install_docker/tasks/main.yml
new file mode 100644
index 00000000..7e015bbc
--- /dev/null
+++ b/docker/ansible/roles/install_docker/tasks/main.yml
@@ -0,0 +1,31 @@
+#Copyright 2018 OPNFV and Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+---
+
+- name: proxy configuration for docker
+ tags:
+ - install_docker
+ import_tasks: proxy.yml
+
+- name: install docker for ubuntu
+ tags:
+ - install_docker
+ import_tasks: ubuntu.yml
+ when: ansible_distribution == "Ubuntu"
+
+- name: install docker for centos
+ tags:
+ - install_docker
+ import_tasks: centos.yml
+ when: ansible_distribution == "CentOS"
diff --git a/docker/ansible/roles/install_docker/tasks/proxy.yml b/docker/ansible/roles/install_docker/tasks/proxy.yml
new file mode 100644
index 00000000..397bed4c
--- /dev/null
+++ b/docker/ansible/roles/install_docker/tasks/proxy.yml
@@ -0,0 +1,55 @@
+#Copyright 2018 OPNFV and Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+---
+
+- name: create docker proxy configuration file
+ tags:
+ - add_docker_proxy
+ lineinfile:
+ path: "{{ docker_proxy_conf }}"
+ line: "[Service]"
+ create: yes
+
+- name: add docker http_proxy
+ tags:
+ - add_docker_proxy
+ lineinfile:
+ path: "{{ docker_proxy_conf }}"
+ line: "Environment=\"HTTP_PROXY={{ ansible_env.http_proxy }}\""
+ when: ansible_env.http_proxy is defined
+
+- name: add docker https_proxy
+ tags:
+ - add_docker_proxy
+ lineinfile:
+ path: "{{ docker_proxy_conf }}"
+ line: "Environment=\"HTTPS_PROXY={{ ansible_env.https_proxy }}\""
+ when: ansible_env.https_proxy is defined
+
+- name: add docker ftp_proxy
+ tags:
+ - add_docker_proxy
+ lineinfile:
+ path: "{{ docker_proxy_conf }}"
+ line: "Environment=\"FTP_PROXY={{ ansible_env.ftp_proxy }}\""
+ when: ansible_env.ftp_proxy is defined
+
+- name: add docker no_proxy
+ tags:
+ - add_docker_proxy
+ lineinfile:
+ path: "{{ docker_proxy_conf }}"
+ line: "Environment=\"NO_PROXY={{ ansible_env.no_proxy }}\""
+ when: ansible_env.no_proxy is defined
+
diff --git a/docker/ansible/roles/install_docker/tasks/ubuntu.yml b/docker/ansible/roles/install_docker/tasks/ubuntu.yml
new file mode 100644
index 00000000..44156873
--- /dev/null
+++ b/docker/ansible/roles/install_docker/tasks/ubuntu.yml
@@ -0,0 +1,47 @@
+#Copyright 2018 OPNFV and Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+---
+
+- name: update package manager cache
+ tags:
+ - cache_update
+ package:
+ update_cache: yes
+
+- name: install python
+ package:
+ name: python
+ state: present
+
+- name: install python-pip
+ package:
+ name: python-pip
+ state: present
+
+- name: install docker-py
+ pip:
+ name: docker-py
+ state: present
+
+- name: install docker
+ package:
+ name: docker.io
+ state: present
+
+- name: start docker daemon
+ systemd:
+ name: docker
+ daemon_reload: true
+ state: started
+ enabled: true
diff --git a/docker/ansible/roles/install_docker/vars/main.yml b/docker/ansible/roles/install_docker/vars/main.yml
new file mode 100644
index 00000000..0673a63a
--- /dev/null
+++ b/docker/ansible/roles/install_docker/vars/main.yml
@@ -0,0 +1,18 @@
+#Copyright 2018 OPNFV and Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+---
+
+#docker proxy configuration file
+docker_proxy_conf: "/etc/systemd/system/docker.service.d/proxy.conf"
+
diff --git a/docker/ansible/roles/run_grafana/vars/main.yml b/docker/ansible/roles/run_grafana/vars/main.yml
index 0975b598..5caf45da 100644
--- a/docker/ansible/roles/run_grafana/vars/main.yml
+++ b/docker/ansible/roles/run_grafana/vars/main.yml
@@ -13,5 +13,5 @@
# limitations under the License.
---
-influxdb_hostname: localhost
-influxdb_host_ip: 127.0.0.1
+influxdb_hostname: influxdb_host
+influxdb_host_ip: "{{ (groups['influxdb_hosts']|default({}))[0] | default('localhost') }}"