This 1st version just types as text, indenting as it goes. Therefore, it is left-aligned to the margin and can break mid-verse across page boundaries.
\documentclass[12pt]{article}
\usepackage{listofitems}
\newcommand\defineverse[1]{%
\setsepchar{,}%
\greadlist*\vindent{#1}%
}
\newcommand\setverse[1]{%
\par\noindent%
\setsepchar{\\}%
\readlist*\versedata{#1}%
\ifnum\listlen\versedata[]=\listlen\vindent[]\relax%
\foreachitem\x\in\versedata{%
\ifnum\xcnt=1\relax\else\\\fi%
\mbox{}\hspace{\vindent[\xcnt]\dimexpr\verseindent\relax}%
\x%
}%
\else%
\textit{Line count does not correspond to verse definition.}
\fi%
\par%
}
\def\verseindent{1em}
\begin{document}
\defineverse{1,1,2,0,1,1,2,0}
\setverse{
Lorem ipsum dolor sit amet, consectetur adipiscing\\
Elit, sed do eiusmod tempor incididunt ut\\
Labore et dolore magna aliqua. Ut\\
Enim ad minim veniam, quis nostrud exercitation ullamco\\
Laboris nisi ut aliquip ex ea commodo\\
Consequat. Duis aute irure dolor in reprehenderit \\
In voluptate velit esse cillum dolore\\
Eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat.}
\bigskip Try to set a poorly composed verse:
\setverse{A\\b\\c\\d}
\end{document}

Here is a version that creates each verse in a stack. Therefore, it can be easily centered. But the verse cannot break across pages.
\documentclass[12pt]{article}
\usepackage{listofitems,stackengine}
\newcommand\defineverse[1]{%
\setsepchar{,}%
\greadlist*\vindent{#1}%
}
\newcommand\setverse[2][]{%
\par%
\ifx\relax#1\relax\else\centerline{#1}\medskip\fi%
\setsepchar{\\}%
\readlist*\versedata{#2}%
\ifnum\listlen\versedata[]=\listlen\vindent[]\relax%
\savebox\stackedbox{}%
\foreachitem\x\in\versedata{%
\stackengine{0pt}{\usebox{\stackedbox}}{%
\mbox{\strut}%
\hspace{\vindent[-\xcnt]\dimexpr\verseindent\relax}%
\versedata[-\xcnt]}{O}{l}{T}{F}{S}%
}%
\centerline{\usebox{\stackedbox}}%
\else%
\textit{Line count does not correspond to verse definition.}
\fi%
\par\medskip%
}
\newcommand\attribution[1]{%
\centerline{\hspace{\wd\stackedbox}\makebox[0pt][r]{#1}}%
\par
}
\def\verseindent{1em}
\begin{document}
\defineverse{1,1,2,0,1,1,2,0}
\setverse[Lipsum]{
Lorem ipsum dolor sit amet, consectetur adipiscing\\
Elit, sed do eiusmod tempor incididunt ut\\
Labore et dolore magna aliqua. Ut\\
Enim ad minim veniam, quis nostrud exercitation ullamco\\
Laboris nisi ut aliquip ex ea commodo\\
Consequat. Duis aute irure dolor in reprehenderit \\
In voluptate velit esse cillum dolore\\
Eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat.}%
\setverse{
Lorem ipsum dolor sit amet, consectetur\\
Elit, sed do eiusmod tempor incididunt ut\\
Labore et dolore magna aliqua. Ut\\
Enim ad minim veniam, quis nostrud exercitation\\
Laboris nisi ut aliquip ex ea commodo\\
Consequat. Duis aute irure dolor in reprehenderit \\
In voluptate velit esse cillum dolore\\
Eu fugiat nulla pariatur. Excepteur sint occaecat.}%
\attribution{Lipsum, 2018}
\bigskip Try to set a poorly composed verse:
\fbox{\setverse{A\\b\\c\\d}}
\end{document}
