diff --git a/.gitignore b/.gitignore index 723ef36..d48c759 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -.idea \ No newline at end of file +.idea +.vscode \ No newline at end of file diff --git a/playbook/ansible.cfg b/playbook/ansible.cfg new file mode 100644 index 0000000..ae2f3cd --- /dev/null +++ b/playbook/ansible.cfg @@ -0,0 +1,3 @@ +[defaults] +host_key_checking = False +inventory = inventory.ini \ No newline at end of file diff --git a/playbook/compose_down_playbook.yml b/playbook/compose_down_playbook.yml new file mode 100644 index 0000000..cfdd951 --- /dev/null +++ b/playbook/compose_down_playbook.yml @@ -0,0 +1,82 @@ +- hosts: server + become: yes + become_method: sudo + + + tasks: + + - docker_host_info: + images: yes + containers: yes + register: docker_objects + + - docker_container: + name: "{{ item.Id }}" + state: absent + loop: "{{ docker_objects.containers }}" + loop_control: + label: "{{ item.Id }}" + + - docker_image: + name: item.RepoTags | first + state: absent + force_absent: yes + loop: "{{ docker_objects.images }}" + loop_control: + label: "{{ item.RepoTags | first }}" + + +- hosts: client + become: yes + become_method: sudo + + tasks: + + - docker_host_info: + images: yes + containers: yes + register: docker_objects + + - docker_container: + name: "{{ item.Id }}" + state: absent + loop: "{{ docker_objects.containers }}" + loop_control: + label: "{{ item.Id }}" + + - docker_image: + name: item.RepoTags | first + state: absent + force_absent: yes + loop: "{{ docker_objects.images }}" + loop_control: + label: "{{ item.RepoTags | first }}" + + +- hosts: gateway + become: yes + become_method: sudo + + tasks: + + - docker_host_info: + images: yes + containers: yes + register: docker_objects + + - docker_container: + name: "{{ item.Id }}" + state: absent + loop: "{{ docker_objects.containers }}" + loop_control: + label: "{{ item.Id }}" + + - docker_image: + name: item.RepoTags | first + state: absent + force_absent: yes + loop: "{{ docker_objects.images }}" + loop_control: + label: "{{ item.RepoTags | first }}" + + \ No newline at end of file diff --git a/playbook/deploy-playbook.yml b/playbook/deploy-playbook.yml new file mode 100644 index 0000000..1ddca89 --- /dev/null +++ b/playbook/deploy-playbook.yml @@ -0,0 +1,192 @@ +- hosts: gateway + become: yes + become_method: sudo + vars: + packages: + - net-tools + - docker.io + - docker-compose + + + tasks: + + - name: installing packages + ansible.builtin.apt: + pkg: "{{packages}}" + state: latest + + # - name: import netplan cfg for gateway + # ansible.builtin.template: + # src: "{{gateway_net_src}}" + # dest: "{{gateway_net_dest}}" + # owner: root + # group: root + # mode: '0644' + + - docker_host_info: + images: yes + containers: yes + register: docker_objects + + - docker_container: + name: "{{ item.Id }}" + state: absent + loop: "{{ docker_objects.containers }}" + loop_control: + label: "{{ item.Id }}" + + - docker_image: + name: item.RepoTags | first + state: absent + force_absent: yes + loop: "{{ docker_objects.images }}" + loop_control: + label: "{{ item.RepoTags | first }}" + + + - name: copying broker + ansible.builtin.copy: + src: "{{broker_src}}" + dest: "{{broker_dest}}" + owner: root + group: root + mode: '0644' + + - name: starting mqtt broker + docker_container: + name: broker + image: eclipse-mosquitto + state: started + ports: + - "1883:1883" + volumes: + - "{{mosquitto_src}}" + + +- hosts: server + become: yes + become_method: sudo + vars: + packages: + - net-tools + - python3-pip + - docker.io + - docker-compose + + tasks: + + - name: installing pkg + ansible.builtin.apt: + pkg: "{{ packages }}" + state: latest + + - name: copying grafana and telegraf + ansible.builtin.copy: + src: "{{server_infra}}" + dest: "{{docker_src_server}}" + owner: "{{server_user}}" + group: "{{server_user}}" + mode: '0644' + + # - name: restarting net adapter + # shell: ifconfig enp0s8 down + + # - name: Update netplan cfg on server + # ansible.builtin.template: + # src: "{{server_net_src}}" + # dest: "{{server_net_dest}}" + # owner: root + # group: root + # mode: '0644' + + - docker_host_info: + images: yes + containers: yes + register: docker_objects + + - docker_container: + name: "{{ item.Id }}" + state: absent + loop: "{{ docker_objects.containers }}" + loop_control: + label: "{{ item.Id }}" + + - docker_image: + name: item.RepoTags | first + state: absent + force_absent: yes + loop: "{{ docker_objects.images }}" + loop_control: + label: "{{ item.RepoTags | first }}" + + - name: docker-compose up on server + docker_compose: + project_src: "{{docker_src_server}}" + + # - name: netplan apply + # shell: netplan apply + + +- hosts: client + become: yes + become_method: sudo + vars: + packages: + - net-tools + - python3-pip + - docker.io + - docker-compose + + tasks: + + + - name: installing pkg + ansible.builtin.apt: + pkg: "{{ packages }}" + state: latest + + - name: copying simulator + ansible.builtin.copy: + src: "{{simulator_src}}" + dest: "{{simulator_dest}}" + owner: "{{client_user}}" + group: "{{client_user}}" + mode: '0644' + + # - name: restarting net adapter + # shell: ifconfig enp0s8 down + + # - name: cfg for client host + # ansible.builtin.template: + # src: "{{client_cfg_src}}" + # dest: "{{client_cfg_dest}}" + # owner: root + # group: root + # mode: '0644' + + - docker_host_info: + images: yes + containers: yes + register: docker_objects + + - docker_container: + name: "{{ item.Id }}" + state: absent + loop: "{{ docker_objects.containers }}" + loop_control: + label: "{{ item.Id }}" + + - docker_image: + name: item.RepoTags | first + state: absent + force_absent: yes + loop: "{{ docker_objects.images }}" + loop_control: + label: "{{ item.RepoTags | first }}" + + - name: docker-compose up on client + docker_compose: + project_src: "{{docker_src_client}}" + + + diff --git a/playbook/group_vars/client_host b/playbook/group_vars/client_host new file mode 100644 index 0000000..4f69031 --- /dev/null +++ b/playbook/group_vars/client_host @@ -0,0 +1,7 @@ +--- +client_cfg_src: vms/client/00-installer-config.yaml +client_cfg_dest: /etc/netplan/00-installer-config.yaml +simulator_src: vms/client/simulator/ +simulator_dest: /home/armitage/remote +client_user: armitage +docker_src_client: /home/armitage/remote \ No newline at end of file diff --git a/playbook/group_vars/gateway_host b/playbook/group_vars/gateway_host new file mode 100644 index 0000000..cd7a4e4 --- /dev/null +++ b/playbook/group_vars/gateway_host @@ -0,0 +1,9 @@ +--- +gateway_net_src: vms/gateway/00-installer-config.yaml +gateway_net_dest: /etc/netplan/00-installer-config.yaml +gateway_rules_src: vms/gateway/rules.v4 +gateway_rules_dest: /etc/iptables/rules.v4 +broker_src: vms/gateway/ +broker_dest: /home/armitage/remote +gateway_user: armitage +mosquitto_src: /home/armitage/remote/mosquitto:/mosquitto/config \ No newline at end of file diff --git a/playbook/group_vars/server_host b/playbook/group_vars/server_host new file mode 100644 index 0000000..7e56f1d --- /dev/null +++ b/playbook/group_vars/server_host @@ -0,0 +1,6 @@ +--- +server_net_src: vms/server/00-installer-config.yaml +server_net_dest: /etc/netplan/00-installer-config.yaml +server_infra: vms/server/infra/ +server_user: armitage +docker_src_server: /home/armitage/remote diff --git a/playbook/inventory.ini b/playbook/inventory.ini new file mode 100644 index 0000000..fa0ce8a --- /dev/null +++ b/playbook/inventory.ini @@ -0,0 +1,26 @@ +[cluster:vars] +ansible_ssh_pass = '{{my_ssh_pass}}' +ansible_sudo_pass= '{{my_cluster_sudo_pass}}' + +[cluster] +server +gateway +client + +[server_host:vars] +ansible_ssh_pass = '{{my_ssh_pass}}' +ansible_sudo_pass= '{{my_cluster_sudo_pass}}' +[server_host] +server ansible_host=192.168.0.167 ansible_ssh_user=armitage ansible_become=true StrictHostKeyChecking=no + +[gateway_host:vars] +ansible_ssh_pass = '{{my_ssh_pass}}' +ansible_sudo_pass= '{{my_cluster_sudo_pass}}' +[gateway_host] +gateway ansible_host=192.168.0.144 ansible_ssh_user=armitage ansible_become=true + +[client_host:vars] +ansible_ssh_pass = '{{my_ssh_pass}}' +ansible_sudo_pass= '{{my_cluster_sudo_pass}}' +[client_host] +client ansible_host=192.168.0.168 ansible_ssh_user=armitage ansible_become=true diff --git a/playbook/vms/client/00-installer-config.yaml b/playbook/vms/client/00-installer-config.yaml new file mode 100644 index 0000000..6dbf119 --- /dev/null +++ b/playbook/vms/client/00-installer-config.yaml @@ -0,0 +1,9 @@ +network: + ethernets: + enp0s3: + dhcp4: true + enp0s8: + dhcp4: no + addresses: [ 192.168.5.10/24 ] + gateway4: 192.168.5.1 + version: 2 \ No newline at end of file diff --git a/playbook/vms/client/simulator/.env b/playbook/vms/client/simulator/.env new file mode 100644 index 0000000..95db3d0 --- /dev/null +++ b/playbook/vms/client/simulator/.env @@ -0,0 +1 @@ +SIM_HOST_IP=192.168.0.144 \ No newline at end of file diff --git a/vms/client/simulator/Dockerfile b/playbook/vms/client/simulator/Dockerfile similarity index 100% rename from vms/client/simulator/Dockerfile rename to playbook/vms/client/simulator/Dockerfile diff --git a/playbook/vms/client/simulator/docker-compose.yml b/playbook/vms/client/simulator/docker-compose.yml new file mode 100644 index 0000000..1a75b2c --- /dev/null +++ b/playbook/vms/client/simulator/docker-compose.yml @@ -0,0 +1,24 @@ +version: "3" + +services: + temp_sensor: + image: wuwun9/simulator + environment: + - SIM_HOST=$SIM_HOST_IP + - SIM_NAME=SIM_TEMPERATURE + - SIM_PERIOD=5 + - SIM_TYPE=temperature + pressure_sensor: + image: wuwun9/simulator + environment: + - SIM_HOST=$SIM_HOST_IP + - SIM_NAME=SIM_PRESSURE + - SIM_PERIOD=10 + - SIM_TYPE=pressure + current_sensor: + image: wuwun9/simulator + environment: + - SIM_HOST=$SIM_HOST_IP + - SIM_NAME=SIM_CURRENT + - SIM_PERIOD=1 + - SIM_TYPE=current \ No newline at end of file diff --git a/vms/client/simulator/entity/__init__.py b/playbook/vms/client/simulator/entity/__init__.py similarity index 100% rename from vms/client/simulator/entity/__init__.py rename to playbook/vms/client/simulator/entity/__init__.py diff --git a/playbook/vms/client/simulator/entity/__pycache__/__init__.cpython-310.pyc b/playbook/vms/client/simulator/entity/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..aa83e3b Binary files /dev/null and b/playbook/vms/client/simulator/entity/__pycache__/__init__.cpython-310.pyc differ diff --git a/playbook/vms/client/simulator/entity/__pycache__/sensor.cpython-310.pyc b/playbook/vms/client/simulator/entity/__pycache__/sensor.cpython-310.pyc new file mode 100644 index 0000000..c7b068a Binary files /dev/null and b/playbook/vms/client/simulator/entity/__pycache__/sensor.cpython-310.pyc differ diff --git a/vms/client/simulator/entity/sensor.py b/playbook/vms/client/simulator/entity/sensor.py similarity index 100% rename from vms/client/simulator/entity/sensor.py rename to playbook/vms/client/simulator/entity/sensor.py diff --git a/vms/client/simulator/main.py b/playbook/vms/client/simulator/main.py similarity index 100% rename from vms/client/simulator/main.py rename to playbook/vms/client/simulator/main.py diff --git a/vms/client/simulator/requirements.txt b/playbook/vms/client/simulator/requirements.txt similarity index 100% rename from vms/client/simulator/requirements.txt rename to playbook/vms/client/simulator/requirements.txt diff --git a/playbook/vms/gateway/00-installer-config.yaml b/playbook/vms/gateway/00-installer-config.yaml new file mode 100644 index 0000000..2f0cb02 --- /dev/null +++ b/playbook/vms/gateway/00-installer-config.yaml @@ -0,0 +1,11 @@ +network: + ethernets: + enp0s3: + dhcp4: true + enp0s8: + dhcp4: no + addresses: [ 192.168.7.1/24 ] + enp0s9: + dhcp4: no + addresses: [ 192.168.5.1/24 ] + version: 2 \ No newline at end of file diff --git a/vms/gateway/mosquitto/mosquitto.conf b/playbook/vms/gateway/mosquitto/mosquitto.conf similarity index 100% rename from vms/gateway/mosquitto/mosquitto.conf rename to playbook/vms/gateway/mosquitto/mosquitto.conf diff --git a/playbook/vms/server/00-installer-config.yaml b/playbook/vms/server/00-installer-config.yaml new file mode 100644 index 0000000..fc3a37b --- /dev/null +++ b/playbook/vms/server/00-installer-config.yaml @@ -0,0 +1,9 @@ +network: + ethernets: + enp0s3: + dhcp4: true + enp0s8: + dhcp4: no + addresses: [ 192.168.7.10/24 ] + gateway4: 192.168.7.1 + version: 2 \ No newline at end of file diff --git a/vms/server/infra/docker-compose.yml b/playbook/vms/server/infra/docker-compose.yml similarity index 100% rename from vms/server/infra/docker-compose.yml rename to playbook/vms/server/infra/docker-compose.yml diff --git a/vms/server/infra/grafana/grafana.ini b/playbook/vms/server/infra/grafana/grafana.ini similarity index 100% rename from vms/server/infra/grafana/grafana.ini rename to playbook/vms/server/infra/grafana/grafana.ini diff --git a/vms/server/infra/grafana/provisioning/dashboards/default.yaml b/playbook/vms/server/infra/grafana/provisioning/dashboards/default.yaml similarity index 100% rename from vms/server/infra/grafana/provisioning/dashboards/default.yaml rename to playbook/vms/server/infra/grafana/provisioning/dashboards/default.yaml diff --git a/vms/server/infra/grafana/provisioning/dashboards/mqtt.json b/playbook/vms/server/infra/grafana/provisioning/dashboards/mqtt.json similarity index 100% rename from vms/server/infra/grafana/provisioning/dashboards/mqtt.json rename to playbook/vms/server/infra/grafana/provisioning/dashboards/mqtt.json diff --git a/vms/server/infra/grafana/provisioning/datasources/default.yaml b/playbook/vms/server/infra/grafana/provisioning/datasources/default.yaml similarity index 100% rename from vms/server/infra/grafana/provisioning/datasources/default.yaml rename to playbook/vms/server/infra/grafana/provisioning/datasources/default.yaml diff --git a/vms/server/infra/influxdb/scripts/influxdb-init.iql b/playbook/vms/server/infra/influxdb/scripts/influxdb-init.iql similarity index 100% rename from vms/server/infra/influxdb/scripts/influxdb-init.iql rename to playbook/vms/server/infra/influxdb/scripts/influxdb-init.iql diff --git a/vms/server/infra/telegraf/telegraf.conf b/playbook/vms/server/infra/telegraf/telegraf.conf similarity index 99% rename from vms/server/infra/telegraf/telegraf.conf rename to playbook/vms/server/infra/telegraf/telegraf.conf index ddd8b05..690ea0a 100644 --- a/vms/server/infra/telegraf/telegraf.conf +++ b/playbook/vms/server/infra/telegraf/telegraf.conf @@ -8558,7 +8558,7 @@ password = "telegraf" # "telegraf/+/mem", # "sensors/#", # ] -servers = ["tcp://192.168.26.1:1883"] # адрес vm с mqtt-брокером +servers = ["tcp://192.168.0.144:1883"] # адрес vm с mqtt-брокером topics = [ "sensors/#" ] diff --git a/report.md b/report.md new file mode 100644 index 0000000..e69de29 diff --git a/vms/client/simulator/docker-compose.yml b/vms/client/simulator/docker-compose.yml deleted file mode 100644 index ec2fe79..0000000 --- a/vms/client/simulator/docker-compose.yml +++ /dev/null @@ -1,24 +0,0 @@ -version: "3" - -services: - temp_sensor: - image: antonaleks/data-simulator - environment: - - SIM_HOST=192.168.1.1 - - SIM_NAME=TIRCAHL24 - - SIM_PERIOD=5 - - SIM_TYPE=temperature - pressure_sensor: - image: antonaleks/data-simulator - environment: - - SIM_HOST=192.168.1.1 - - SIM_NAME=PIRCAHL11 - - SIM_PERIOD=10 - - SIM_TYPE=pressure - current_sensor: - image: antonaleks/data-simulator - environment: - - SIM_HOST=192.168.1.1 - - SIM_NAME=A0_CURRENT - - SIM_PERIOD=1 - - SIM_TYPE=current \ No newline at end of file