diff options
author | Kamil Wiatrowski <kamilx.wiatrowski@intel.com> | 2018-06-07 05:13:01 +0100 |
---|---|---|
committer | Kamil Wiatrowski <kamilx.wiatrowski@intel.com> | 2018-09-28 16:47:42 +0200 |
commit | 24c5124e304b8e2854d98284f6ee4715a75ee735 (patch) | |
tree | 420ff7e0158e3a8c68d3e2710469fbcb9c06c853 /docker | |
parent | b52c942a4fbfc5023780d23954de953b817c6dc0 (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')
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') }}" |