Não tenho 100% de certeza de que você pode especificar vários comandos como argumento para o runcmd, mas, se tiver, você deve torná-lo literalmente escalar em YAML:
runcmd: |
sed -i -n '/<Directory \/>/\{p;:a;N;/<\/Directory>/!ba;s/.*\n/ Options -Indexes\n AllowOverride none\n Require all denied\n/\};p' /etc/httpd/conf/httpd.conf
sed -i -e '$a\ \n#Grant localhost access to query or modify\nrestrict 127.0.0.1\nrestrict ::1' /etc/ntp.conf
sed -i -e '$a\ \n#Add local clock as backup\nserver 127.127.1.0\nfudge 127.127.1.0 stratum 10' /etc/ntp.conf
Para ver o que um analisador YAML faz a partir disso, você pode fazer o round-trip do yaml e testá-lo. Se o acima estiver em um arquivo input.yml
, então
yaml rt input.yml
reclamará se não puder ser percorrido corretamente ¹.
Certifique-se de carregar esses dados de um arquivo, para que não haja problemas de escape adicionais causados pelo shell (ou python, perl, etc)
¹ Isso foi feito usando o utilitário yaml
que vem com ruamel.yaml dos quais Eu sou o autor.