Ansible seria minha recomendação.
Ele pode fazer tudo na etapa 1 por meio do SSH, sem exigir que nenhum agente seja instalado nos dispositivos (embora a biblioteca JSON inclusa seja recomendada). Em vez do passo 2, sugiro executar o passo 1 em cada dispositivo.
O fantoche é ótimo para ambientes com grande número de dispositivos. Ele pode fazer tudo na etapa 1 pelo menos tão bem quanto o Ansible, mas requer algum esforço adicional (instalar o Puppet Agent e dependências em cada dispositivo, configurar o Puppet Master, permitir que os dispositivos se conectem ao Puppet Master por meio de HTTP.
rsync
pode parecer uma solução simples no começo. No entanto, você provavelmente gastará muito tempo com scripts em torno de problemas que outras ferramentas já resolveram ou não enfrentaram na primeira vez.