Page MenuHomeSoftware Heritage

Compare provisioning tools
Closed, MigratedEdits Locked

Description

Given the recent new tasks (cassandra poc on azure for example was using terraform, vault server migration to azure), reuse the same tool to provision new nodes within different infras would help reproducibility.

Goals:

  • Reuse same abstraction in between infrastructures (rocq, azure, aws?), existing tools (proxmox)
  • (Keep puppet): it's in charge of the machine setup (not the provisioning)

Tools to consider:

|-----------+-------------------------------------------------+-------------|
| Tools     | Perimeter                                       | License     |
|-----------+-------------------------------------------------+-------------|
| Terraform | Bootstrap/Initialization resources              | //          |
| Salt      | IT automation tool (provision + cmt)            | //          |
| Foreman   | IT automation tool (provision, cmt, monitoring) | //          |
| Ansible   | IT automation tool (provision + cmt)            | //          |
|-----------+-------------------------------------------------+-------------|

Note:

  • today we are using the sysadm-provisioning [1] repository which contains:
    • preseed technology for debian install on proxmox vms (broke multiple times in the past)
    • shell scripts to install vms on azure (broke multiple times as well)
    • (no idea how it's done for aws)
  • In the context of ongoing cassandra benchmarks, terraform and ansible got used [2]

[1] https://forge.softwareheritage.org/source/swh-sysadmin-provisioning/

[2] https://forge.softwareheritage.org/source/storage-benchmark-deployment/

Related T1716
Related T1711

Event Timeline

ardumont triaged this task as Normal priority.EditedMay 16 2019, 2:14 PM
ardumont created this task.
ardumont updated the task description. (Show Details)
ardumont updated the task description. (Show Details)
ardumont updated the task description. (Show Details)
ardumont updated the task description. (Show Details)
ardumont updated the task description. (Show Details)

Dumping the draft pad before it disappears:

(please, use a monospace font for the rendering)

#+title: Comparison between provisioning tools

* Tools

|-----------+-------------------------------------------------+-------------|
| Tools     | Perimeter                                       | License     |
|-----------+-------------------------------------------------+-------------|
| Terraform | Bootstrap/Initialization resources              | //          |
| Salt      | IT automation tool (provision + cmt)            | //          |
| Foreman   | IT automation tool (provision, cmt, monitoring) | //          |
| Ansible   | IT automation tool (provision + cmt)            | //          |
|-----------+-------------------------------------------------+-------------|

* Specific questions

|---------------------------------------+-----------------+------+---------+-----------------|
| tools                                 | Terraform       | Salt | Foreman | Ansible         |
|---------------------------------------+-----------------+------+---------+-----------------|
| Provision                             | X               | X    | X       | X               |
| Agent/Master                          | X               | X    | X       |                 |
| Network management                    | X               | X    | X       | X               |
| Inventory                             | X (+ discovery) | ?    | X       | X (declarative) |
| Monitoring                            | ?               | ?    | X       | ?               |
| Integration with other tools (puppet) | X               | X    | X       | X               |
| Readable documentation                | X               | X    |         | X               |
|---------------------------------------+-----------------+------+---------+-----------------|

? No answer yet

* Cons/pros

From the looks of each tool's documentation and some other posts, here is the
summary of pros/cons (wip):

|-------------+---------------------------------------------------+----------------------------------------------------|
| tools       | pros                                              | cons                                               |
|-------------+---------------------------------------------------+----------------------------------------------------|
| Terraform   | cloud-agnostic                                    | not debian packaged                                |
|             | high-level api                                    |                                                    |
|             | plugin-based model                                |                                                    |
|-------------+---------------------------------------------------+----------------------------------------------------|
| Salt(Stack) | fast                                              |                                                    |
|             | scalable                                          |                                                    |
|             | resilient                                         |                                                    |
|             | plugins                                           |                                                    |
|             | cli: yaml output                                  |                                                    |
|             | agentfull/agentless mode (choice)                 |                                                    |
|             | (cloud)-agnostic                                  |                                                    |
|             | debian packaged                                   |                                                    |
|-------------+---------------------------------------------------+----------------------------------------------------|
| Foreman     | inventory capable                                 | Doc is not straightforward (kinda puppet-doc like) |
|             | integration (puppet, docker, ...)                 | Install foreman on a dedicated box                 |
|             | plugins                                           |                                                    |
|             | cli, api, ui                                      |                                                    |
|             | debian-packaged (foreman-cli)                     |                                                    |
|-------------+---------------------------------------------------+----------------------------------------------------|
| Ansible     | cloud-agnostic: cloud (azure, etc.   ..), proxmox |                                                    |
|             | agentless (only ssh/python deps needed)           |                                                    |
|             | debian/pypi packaged                              |                                                    |
|             | plugins                                           |                                                    |
|             | playbook (yaml, -*-> plays -*-> tasks)            |                                                    |
|             | simple (human/machine readable)                   |                                                    |
|             | inventory capable                                 |                                                    |
|             | local dry-run natively possible (on the machine)  |                                                    |
|-------------+---------------------------------------------------+----------------------------------------------------|


* sources

- https://docs.ansible.com/ansible/latest/user_guide/quickstart.html
- https://www.ansible.com/resources/videos/quick-start-video
- https://theforeman.org/introduction.html
- https://www.upguard.com/articles/salt-vs-chef
- https://learn.hashicorp.com/terraform/getting-started/build
- https://docs.saltstack.com/en/getstarted/system/index.html
- https://docs.ansible.com/
- https://theforeman.org/introduction.html

https://forge.softwareheritage.org/source/swh-ansible/ contains some ansible tryouts whose resulting vms can be seen on orsay (puppet-master, ns0, test0).