Of course. You have to do two things: a) Provide a sysconfig/puppet or sysconfig/puppetagent file that is like this (as in 12.3): PUPPET_SERVER=puppet PUPPET_PORT=8140 PUPPET_LOG=/var/log/puppet/puppet.log PUPPET_EXTRA_OPTS="" The reason is that according to "man 5 systemd.exec" for Environment variables: "Variable expansion is not performed inside the strings, however, specifier expansion is possible. The $ character has no special meaning." This means that you can _not_ supply environment variables inside the sysconfig file variables. i.e: PUPPET_SERVER="$HOSTNAME" is not possible inside the sysconfig file as the "$HOSTNAME" would not be expanded. b) change ./system/multi-user.target.wants/puppet.service according to this (reverts back to the state of pre 13.1): diff -Pdpru ./system/multi-user.target.wants/puppet.service-orig ./system/multi-user.target.wants/puppet.service --- ./system/multi-user.target.wants/puppet.service-orig 2016-01-29 09:21:24.700647029 +0100 +++ ./system/multi-user.target.wants/puppet.service 2016-01-29 09:22:05.197204045 +0100 @@ -6,7 +6,7 @@ After=basic.target network.target puppet [Service] EnvironmentFile=-/etc/sysconfig/puppetagent EnvironmentFile=-/etc/sysconfig/puppet -ExecStart=/usr/bin/puppet agent ${PUPPET_EXTRA_OPTS} --no-daemonize +ExecStart=/usr/bin/puppet agent --server=${PUPPET_SERVER} --masterport=${PUPPET_PORT} --logdest=${PUPPET_LOG} $PUPPET_EXTRA_OPTS [Install] WantedBy=multi-user.target This way the variable content from the sysconfig file is filled into the variables on the commandline at a later date. Other ways of providing the commandline options have failed me (see comment#6). Did I forget to mention anything?