diff --git a/Pipfile b/Pipfile index 4a393c5a..e7b1b5c0 100644 --- a/Pipfile +++ b/Pipfile @@ -14,19 +14,12 @@ molecule = "==2.20.2" python_version = "2.7" [scripts] -# Normal Case -test ="molecule test" +test ="molecule test --destroy=never" agent ="molecule test -s wazuh-agent" -elasticsearch ="molecule test -s elasticsearch" +elasticsearch ="molecule test -s elasticsearch --destroy=never" filebeat ="molecule test -s filebeat" kibana ="molecule test -s kibana" -# Do Not destroy the created containers afte the test execution ends. -test_still ="molecule test --destroy=never" -agent_still ="molecule test -s wazuh-agent --destroy=never" -elasticsearch_still ="molecule test -s elasticsearch --destroy=never" -filebeat_still ="molecule test -s filebeat --destroy=never" -kibana_still ="molecule test -s kibana --destroy=never" - # Destroy all the existing containers ' Created by Molecule ' +destroy_elasticsearch ="molecule destroy -s elasticsearch" destroy ="molecule destroy" diff --git a/molecule/default/create.yml b/molecule/default/create.yml index 0fba5542..f69ab910 100644 --- a/molecule/default/create.yml +++ b/molecule/default/create.yml @@ -44,16 +44,15 @@ - name: Create docker network(s) docker_network: - name: "{{ item }}" - docker_host: "{{ item.docker_host | default('unix://var/run/docker.sock') }}" + name: "new_network" state: present - with_items: "{{ molecule_yml.platforms | molecule_get_docker_networks }}" + - name: Create molecule instance(s) docker_container: - name: "manager" + name: "{{ item.name }}" docker_host: "{{ item.docker_host | default('unix://var/run/docker.sock') }}" - hostname: "manager" + hostname: "{{ item.name }}" image: "molecule_local/{{ item.image }}" state: started recreate: false @@ -65,7 +64,8 @@ exposed_ports: "{{ item.exposed_ports | default(omit) }}" published_ports: "{{ item.published_ports | default(omit) }}" ulimits: "{{ item.ulimits | default(omit) }}" - networks: "{{ item.networks | default(omit) }}" + networks: + - name: "new_network" dns_servers: "{{ item.dns_servers | default(omit) }}" register: server with_items: "{{ molecule_yml.platforms }}" @@ -78,4 +78,4 @@ register: docker_jobs until: docker_jobs.finished retries: 300 - with_items: "{{ server.results }}" + with_items: "{{ server.results }}" \ No newline at end of file diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml index 67c54a5b..2e5dfa0d 100644 --- a/molecule/default/molecule.yml +++ b/molecule/default/molecule.yml @@ -7,7 +7,7 @@ lint: name: yamllint enabled: false platforms: - - name: bionic + - name: manager image: solita/ubuntu-systemd:bionic command: /sbin/init ulimits: diff --git a/molecule/default/playbook.yml b/molecule/default/playbook.yml index 242a3777..f181f59a 100644 --- a/molecule/default/playbook.yml +++ b/molecule/default/playbook.yml @@ -3,4 +3,5 @@ hosts: all roles: - role: wazuh/ansible-wazuh-manager + - { role: wazuh/ansible-filebeat, filebeat_output_elasticsearch_hosts: 'elasticsearch:9200' } diff --git a/molecule/elasticsearch/molecule.yml b/molecule/elasticsearch/molecule.yml index ebf47ccb..109e2f4f 100644 --- a/molecule/elasticsearch/molecule.yml +++ b/molecule/elasticsearch/molecule.yml @@ -9,13 +9,14 @@ lint: config-data: ignore: .virtualenv platforms: - #- name: bionic - # image: solita/ubuntu-systemd:bionic - # command: /sbin/init - # ulimits: - # - nofile:262144:262144 - # privileged: true - # memory_reservation: 2048m + - name: elasticsearch + image: solita/ubuntu-systemd:bionic + command: /sbin/init + ulimits: + - nofile:262144:262144 + privileged: true + memory_reservation: 2048m + #- name: xenial # image: solita/ubuntu-systemd:xenial # privileged: true @@ -35,12 +36,12 @@ platforms: # memory_reservation: 2048m # ulimits: # - nofile:262144:262144 - - name: centos7 - image: milcom/centos7-systemd - memory_reservation: 2048m - privileged: true - ulimits: - - nofile:262144:262144 + #- name: centos7 + # image: milcom/centos7-systemd + # memory_reservation: 2048m + # privileged: true + # ulimits: + # - nofile:262144:262144 provisioner: name: ansible playbooks: diff --git a/molecule/elasticsearch/playbook.yml b/molecule/elasticsearch/playbook.yml index f6bf45f9..75be4f34 100644 --- a/molecule/elasticsearch/playbook.yml +++ b/molecule/elasticsearch/playbook.yml @@ -3,4 +3,4 @@ hosts: all roles: - role: elastic-stack/ansible-elasticsearch - elasticsearch_network_host: 'localhost' + elasticsearch_network_host: 'elasticsearch' diff --git a/update-dnsmasq.sh b/update-dnsmasq.sh new file mode 100644 index 00000000..d4bee8a1 --- /dev/null +++ b/update-dnsmasq.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +# 10 seconds interval time by default +INTERVAL=${INTERVAL:-10} + +# dnsmasq config directory +DNSMASQ_CONFIG=${DNSMASQ_CONFIG:-.} + +# commands used in this script +DOCKER=${DOCKER:-docker} +SLEEP=${SLEEP:-sleep} +TAIL=${TAIL:-tail} + +declare -A service_map + +while true +do + changed=false + while read line + do + name=${line##* } + ip=$(${DOCKER} inspect --format '{{.NetworkSettings.IPAddress}}' $name) + # if IP addr changed + if [ -z ${service_map[$name]} ] || [ ${service_map[$name]} != $ip ] + then + service_map[$name]=$ip + # write to file + echo $name has a new IP Address $ip >&2 + echo "host-record=$name,$ip" > "${DNSMASQ_CONFIG}/docker-$name" + changed=true + fi + done < <(${DOCKER} ps | ${TAIL} -n +2) + + # a change of IP address occured, restart dnsmasq + if [ $changed = true ] + then + systemctl restart dnsmasq + fi + + ${SLEEP} $INTERVAL +done