| > Lisp is not and has never been the right tool for configuration management. Why not? Configurations are collections of items, and among the things Lisp excels at is…lists of atoms. Take a look at https://github.com/ansible/ansible-examples/tree/master/lamp... (a simple LAMP stack implemented in Ansible). It uses a .ini-style file to manage lists of hosts, e.g.: [webservers]
localhost
[dbservers]
bensible
sensible
Why not put that in a list? (hosts
(webservers localhost)
(dbservers bensible sensible))
The Ansible playbooks are YAML lists. There's no particular reason that: ---
# This playbook deploys the whole application stack in this site
- name: apply common configuration to all nodes
hosts: all
remote_user: root
roles:
- common
…
is more readable than: (playbook
"This playbook deploys the whole application stack in this site"
(play
"apply common configuration to all nodes"
(hosts all)
(remote-user root)
(roles common)
…)
or: (playbook '((all '(common) :user root :comment "apply common configuration to all nodes") …)
:comment "This playbook deploys the whole application stack in this site")
In fact, I'd argue that both Lispy representations are much more readable. |