\documentclass{article} \usepackage{tikz} \usetikzlibrary{fit, positioning} \begin{document} \begin{tikzpicture} \node (base) at (0, 0) {}; % generators \foreach \m in {1, 2, 3} { \node[draw, below = of base] (generator-\m) at (0, \m) {Generator}; } % NFW calculators \foreach \m in {1, 2, 3} { \node[draw, right = of generator-\m] (NFW-\m) {NFW}; } % generatortraefik \node[draw, right = of generator-2] (generatortraefik) {traefik}; % connect the generators with the generatortraefik \foreach \l in {1, 2, 3} { \draw (generator-\l.east) -- (generatortraefik.west) {}; } % connect the generatortraefik with the NFW nodes \foreach \l in {1, 2, 3} { \draw (generatortraefik.east) -- (NFW-\l.west) {}; } \node[draw, fit= (generator-1) (generator-2) (generator-3) (generatortraefik) (NFW-1) (NFW-2) (NFW-3) ] (boundary) {}; \end{tikzpicture} \end{document}